iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
The practical monitoring stack is Node Exporter → Prometheus → Grafana: Node Exporter exposes Linux host metrics, Prometheus scrapes and stores them, and Grafana queries Prometheus to display dashboards and alerts. This guide builds that path, verifies each connection, explains container-specific networking and storage, and gives queries you can adapt for CPU, disks, and network traffic.
Understand the monitoring architecture
Prometheus Node Exporter exposes hardware- and kernel-related metrics over HTTP. Prometheus periodically requests (scrapes) that endpoint and stores the resulting time series. Grafana has a built-in Prometheus data source, so it can query those series for dashboards and exploration.
- Node Exporter: runs on every Linux host you want to monitor and listens on port 9100 by default.
- Prometheus: performs scheduled scrapes, evaluates PromQL expressions, and retains the time-series database.
- Grafana: connects to Prometheus and renders panels, dashboards, and (when configured) alert rules.
Prometheus includes an expression browser for checking data, while its FAQ recommends Grafana for production dashboards. Alert delivery is a separate responsibility: Prometheus documentation points to Alertmanager for email, native integrations, and webhooks.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsInstall Node Exporter on the Linux host
Choose and download the current release
Node Exporter is distributed as a static binary for multiple operating systems and CPU architectures. The official guide uses Linux amd64 as an example, but release numbers change; use the current download listed in the official guide rather than copying an old version into an installation script.
#1 Best Overall
- Download the archive matching your architecture from the current Node Exporter release page.
- Extract it and place the
node_exporterbinary in a directory on the executable path, such as/usr/local/bin. - Create a dedicated unprivileged service account and run the exporter under that account.
- Start the service using your distribution’s service manager, then confirm it is listening on TCP port 9100.
The exact service-unit syntax differs by distribution, so keep the unit’s executable path and user consistent with your installation. Restrict port 9100 at the firewall to the Prometheus server or monitoring network; it is an HTTP metrics endpoint, not an authenticated administration interface.
Verify the endpoint before configuring Prometheus
On the monitored host, run:
curl http://localhost:9100/metrics
You should receive plaintext metric samples. Host metrics normally have names beginning with node_, such as node_cpu_seconds_total and node_filesystem_avail_bytes. If the request fails, inspect the service status and logs, confirm that port 9100 is bound, and check local firewall rules before proceeding.
Configure Prometheus to scrape Node Exporter
Install Prometheus using the current packages or binaries described on the Prometheus installation page. Then add a scrape job to prometheus.yml:
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →global:
scrape_interval: 15s
scrape_configs:
- job_name: node
static_configs:
- targets: ['localhost:9100']
The 15-second interval is the official single-host example, not a universal production requirement. Choose an interval that matches the resolution you need and the number of targets your Prometheus server can handle.
Use the address Prometheus can actually reach
localhost:9100 works only when Node Exporter and Prometheus share the same network namespace or host. For another server, replace it with that host’s DNS name or IP address, for example:
Rank #2
scrape_configs:
- job_name: linux-servers
static_configs:
- targets:
- 'server-a.example.net:9100'
- 'server-b.example.net:9100'
This static list is suitable for a small fleet. Larger environments should use service discovery appropriate to their platform; the local example does not provide automatic fleet discovery.
Reload and validate ingestion
- Validate the YAML with your Prometheus installation’s configuration check or by starting Prometheus and reading its logs.
- Reload Prometheus using the method supported by your deployment (for example, a service restart or its configured reload endpoint).
- Open Prometheus’s web interface and visit Status → Targets. The
nodetarget should be UP. - Use the expression browser to query
up{job="node"}. A value of1confirms a successful scrape;0means the target is configured but currently unreachable.
Do not move to dashboard troubleshooting until the target is UP and queries return samples. A dashboard cannot display metrics Prometheus has not ingested.
Connect Grafana to Prometheus
Install Grafana, open its web UI, and add the preinstalled Prometheus data source. In a same-host, non-container setup, set the server URL to http://localhost:9090 (adjust the port if you changed Prometheus’s listener).
Container networking matters
If Grafana and Prometheus run in separate containers, localhost inside Grafana refers to the Grafana container itself—not the Prometheus container or the Docker host. Put both containers on a shared Docker network and set the data-source URL to the Prometheus service name, such as http://prometheus:9090. Use a routable host address only when your network design requires it.
Grafana documents TLS and certificate settings for protected Prometheus connections; enable them when traffic crosses an untrusted network. Click Save & test and resolve any connection error before importing dashboards.
Build useful dashboards
Import Node Exporter Full
Grafana’s Linux-host tutorial demonstrates importing the Node Exporter Full dashboard with ID 1860. In Grafana, choose Dashboards → New → Import, enter 1860, select your Prometheus data source, and load the dashboard. The dashboard is a starting point, not a guarantee: Grafana notes that panels can fail when your exporter configuration does not emit the metrics or collectors those panels expect. Check a panel’s query against the metrics visible at /metrics and customize or remove panels that do not apply.
Create focused panels with PromQL
These examples come from the Node Exporter guide:
| Purpose | PromQL | Interpretation |
|---|---|---|
| System-mode CPU rate | rate(node_cpu_seconds_total{mode="system"}[1m]) |
Average CPU time spent in system mode over the preceding minute, returned per CPU series. |
| Available filesystem space | node_filesystem_avail_bytes |
Bytes available to non-root users for each filesystem label set. |
| Received network traffic | rate(node_network_receive_bytes_total[1m]) |
Average incoming bytes per second over the preceding minute, per network interface. |
These are query examples, not universal warning thresholds. Aggregate deliberately—for example, by instance or interface—and exclude pseudo-filesystems or loopback devices when your labels identify them. Establish thresholds from your workload and capacity rather than copying a number from a generic dashboard.
Alerting: separate rules from notifications
Prometheus can evaluate alert expressions, but the Prometheus FAQ identifies Alertmanager as the component for routing notifications. Alertmanager can send email, use native integrations, or call webhooks. Grafana’s Prometheus integration distinguishes Prometheus data-source-managed rules from Grafana-managed alerting: rules stored in Prometheus can be viewed in Grafana, but they are not necessarily managed through the same Grafana UI workflow. Decide where each rule is owned, document that choice, and test a notification end to end; a visible rule without a tested receiver is not a working alert.
Docker Compose deployment considerations
For a Compose-based setup, give Prometheus and Grafana a shared network and persistent storage. Prometheus recommends a named Docker volume for production data because it simplifies data management during upgrades. A minimal conceptual layout contains services named prometheus, grafana, and (when monitoring the Docker host) node-exporter; the Prometheus target should use the service name and port reachable from the Prometheus container.
Containerizing Node Exporter requires extra care. Its README documents host namespace settings and bind mounts for host filesystems. Without those mounts and namespaces, you may measure the container’s view of the system instead of the Linux host. Review which filesystem paths are mounted read-only, and avoid exposing more host data than the exporter needs.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #4
Grafana’s Docker Compose guide also shows a route that runs local Prometheus and Node Exporter while remote-writing metrics to Grafana Cloud. That managed destination changes where data is stored and queried; it can reduce storage and Grafana-service administration, but requires deliberate network authentication and remote-write configuration.
Performance, reliability, and security checks
- Scrape sizing: shorter intervals increase resolution and storage/write load. Start with the documented 15-second example, then measure resource use as targets grow.
- Retention and disks: keep Prometheus’s data directory on persistent storage and monitor free space. A container restart without a persistent volume can discard local history.
- Target health: alert on scrape failures and inspect Status → Targets regularly; an attractive dashboard can hide a stale or down target.
- Endpoint exposure: limit Node Exporter and Prometheus access with network controls. Use TLS for Prometheus connections where the path is not trusted.
- Labels: preserve stable labels such as instance and job, and avoid adding high-cardinality labels that create unnecessary time series.
Troubleshooting common failures
Target is DOWN or connection refused
Check that Node Exporter is running, listening on the expected interface and port, and allowed through the host firewall. From the Prometheus machine, run curl http://target-host:9100/metrics. Correct DNS, routing, or the target address in prometheus.yml.
Metrics work locally but not from Prometheus
This usually indicates a namespace, network, or firewall problem. In Docker, replace localhost with the exporter service name or a host address reachable from the Prometheus container. Confirm both services share the intended network.
Grafana says the data source cannot connect
Test the Prometheus URL from Grafana’s container or host context. A URL that works in your browser may fail inside the Grafana container because its DNS and loopback interface differ. Correct the hostname, port, TLS certificate settings, or network attachment, then use Save & test again.
Dashboard panels show “No data”
Inspect the panel’s PromQL, time range, job and instance labels, and whether the required collector is enabled. Dashboard 1860 is not guaranteed to work unchanged with every Node Exporter configuration.
Best Value
History disappeared after an upgrade
Verify that Prometheus’s data directory is backed by a persistent named volume or host path and that the upgraded container mounts the same location. Check disk permissions and available space before restarting again.
Or skip the browser setup
When your automation needs rendered website images rather than server metrics, ScreenshotNeo provides a one-request screenshot API and an MCP server for AI agents. A GET request can return PNG, JPEG, WebP, or PDF; before capture it accepts cookie/consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status.
Use the API directly (see the ScreenshotNeo documentation):
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo also supports custom viewports and devices, full-page and element captures, dark mode, retina scale, PDFs, HTML/CSS rendering, custom JavaScript and CSS, waits, request blocking, headers, cookies, geolocation, transparent backgrounds, resizing, caching, signed links, asynchronous webhooks, bulk capture, and a usage API. Its MCP tools—take_screenshot, get_page_info, and capture_pdf—work with Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.
FAQ
Can I monitor several Linux servers with one Prometheus instance?
Yes. Add each reachable Node Exporter endpoint as a target or adopt service discovery suited to your environment. Keep labels that identify the server so dashboards and queries distinguish instances.
Does installing Grafana automatically install Prometheus?
No. Grafana’s Prometheus data source is built in, but Prometheus remains a separate service that must be installed, reachable, and populated with scrapes.
Is Node Exporter a log collector?
No. It exposes numeric host and kernel metrics. Logs require a separate collection pipeline.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchThe Bottom Line
Validate the chain in order—Node Exporter endpoint, Prometheus target, then Grafana data source—before tuning dashboards or alerts. That sequence makes failures visible at the layer where they occur and leaves you with monitoring you can operate rather than merely display.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

