Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install 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. Download the archive matching your architecture from the current Node Exporter release page.
  2. Extract it and place the node_exporter binary in a directory on the executable path, such as /usr/local/bin.
  3. Create a dedicated unprivileged service account and run the exporter under that account.
  4. 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:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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:

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

  1. Validate the YAML with your Prometheus installation’s configuration check or by starting Prometheus and reading its logs.
  2. Reload Prometheus using the method supported by your deployment (for example, a service restart or its configured reload endpoint).
  3. Open Prometheus’s web interface and visit Status → Targets. The node target should be UP.
  4. Use the expression browser to query up{job="node"}. A value of 1 confirms a successful scrape; 0 means 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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):

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The 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.

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.