prometheus/node_exporter

Exporter for machine metrics

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 24 minutes ago
Added to GitGenius on April 7th, 2021
Created on April 18th, 2013
Open Issues & Pull Requests: 317 (+0)
Number of forks: 2,703
Total Stargazers: 13,716 (-1)
Total Subscribers: 170 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 3.8 days
Mean response time: 175.7 days
90th percentile: 519.0 days
Tracked items: 303

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 98% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "platform/Linux" is answered fastest, typically in about 21 hours, while "enhancement" waits about 20 months. Only 7% of issues opened in the past year have been closed. Three people close 85% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 99
New in 7 days: 2
Closed in 7 days: 1
Avg open age: 675 days
Stale 30+ days: 89
Stale 90+ days: 78

Recent activity

Opened in 7 days: 2
Closed in 7 days: 1
Comments in 7 days: 1
Events in 7 days: 2

Top labels

  • accepted (37)
  • enhancement (24)
  • bug (17)
  • help wanted (15)
  • platform/Linux (13)
  • good first issue (8)
  • require/feedback (3)
  • collector/systemd (1)

Detailed Description

Node_exporter is a Prometheus exporter written in Go that exposes hardware and operating system metrics from Unix-like kernels through a pluggable collector architecture. It serves as the primary tool for monitoring machine-level metrics in Prometheus-based observability stacks, listening on HTTP port 9100 by default and providing granular control over which metrics are collected through command-line flags.

The project implements a comprehensive collector system with varying support across operating systems. Enabled-by-default collectors cover essential system metrics including CPU statistics, memory information, disk I/O, network interfaces, filesystem usage, and load averages, with support spanning Linux, Darwin, FreeBSD, and other Unix variants. Additional collectors disabled by default address specialized use cases such as NVIDIA GPU metrics through integration with prometheus-dcgm, NFS statistics, InfiniBand networking, and thermal monitoring. The collector framework allows fine-grained filtering through include and exclude flags for specific device types, filesystem types, and metric categories, enabling operators to control metric cardinality and collection overhead.

Deployment flexibility is a core design consideration. The exporter supports traditional binary installation, Ansible-based automation through the Prometheus Community role, and containerized deployment with special handling for Docker environments. Container deployment requires careful configuration using the path.rootfs argument to ensure the exporter monitors the host system rather than the container itself, with additional flags needed for accessing host namespaces and specific capabilities like SYS_TIME for timex collector functionality.

The project explicitly acknowledges platform-specific tooling needs, recommending the Windows exporter for Windows environments rather than attempting cross-platform coverage within node_exporter itself. This focused scope allows the project to maintain deep integration with Unix kernel interfaces and procfs structures while avoiding the complexity of supporting fundamentally different operating system architectures.

Node_exporter's design reflects production observability requirements through careful attention to performance implications. Disabled-by-default collectors include warnings about high cardinality metrics, extended runtime that might exceed Prometheus scrape intervals, and significant resource demands on monitored hosts. The documentation explicitly recommends testing new collectors on non-production systems first and monitoring scrape_duration_seconds and scrape_samples_post_metric_relabeling metrics to ensure collection completes within configured timeouts and maintains acceptable cardinality levels.