explaingit

prometheus/node_exporter

13,405GoAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

A small Go program that collects hundreds of hardware and OS metrics from a Linux server, CPU, memory, disk, network, and exposes them on an HTTP endpoint for Prometheus to scrape and Grafana to visualize.

Mindmap

mindmap
  root((repo))
    What it does
      Collects system metrics
      HTTP endpoint port 9100
      Prometheus compatible
    Collectors
      CPU and memory
      Disk and network
      Hardware sensors
    Integration
      Prometheus scraping
      Grafana dashboards
      Docker support
    Audience
      DevOps engineers
      SRE teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Monitor CPU usage, memory, disk I/O, and network traffic on a Linux server using Prometheus and Grafana.

USE CASE 2

Add hardware temperature and fan speed monitoring to an existing Prometheus observability stack.

USE CASE 3

Enable or disable specific metric collectors via command-line flags to reduce noise from unused subsystems.

USE CASE 4

Run Node Exporter in Docker with the correct volume mounts to expose host system metrics rather than container-only metrics.

Tech stack

GoPrometheusLinux

Getting it running

Difficulty · moderate Time to first run · 30min

Must run on the host machine to read kernel interfaces directly, Docker users need specific volume mounts or the metrics reflect only the container.

In plain English

Node Exporter is a small program that collects hardware and system statistics from a Linux or Unix server and publishes them in a format that Prometheus can read. Prometheus is a monitoring system commonly used to track the health of servers and applications. Node Exporter acts as the bridge between the server's own metrics and the Prometheus collector. Once running, Node Exporter listens on port 9100 by default and makes hundreds of system metrics available over HTTP. You point your Prometheus server at that address, and it scrapes the data on a regular schedule. From there the data can be visualized in tools like Grafana. The information it collects comes from built-in modules called collectors. By default it enables a wide set covering: CPU usage and frequency, memory usage, disk read and write statistics, filesystem space, network traffic by interface, load averages, hardware sensor readings such as temperatures and fan speeds, and many more. You can turn collectors on or off with command-line flags, and some collectors let you include or exclude specific devices using filter patterns. The project is designed to run on the host machine, not inside a container, because it needs to read the host kernel interfaces directly. If you need to run it in Docker, the README provides the specific flags and volume mounts required to give the container access to the host system rather than just the container's own view. For Windows there is a separate companion project called Windows Exporter. NVIDIA GPU metrics are covered by a different exporter as well.

Copy-paste prompts

Prompt 1
How do I install and run Node Exporter on a Linux server and configure Prometheus to scrape metrics from it?
Prompt 2
Show me the Docker run command for Node Exporter with the flags and volume mounts needed to expose host system metrics.
Prompt 3
How do I enable or disable specific collectors in Node Exporter, for example enabling thermal zone data while disabling wifi?
Prompt 4
What Prometheus metrics does Node Exporter expose for disk I/O and how do I write a PromQL query to alert on high write latency?
Prompt 5
How do I import a Grafana dashboard for Node Exporter and connect it to my Prometheus data source?
Open on GitHub → Explain another repo

← prometheus on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.