13,918
stars
+25+26+86
2,750
forks
–
watchers
–
prs
–
issues
–
releases
–
discussions
README
Node exporter
!bsd workflow
!golangci-lint workflow
![Docker Repository on Quay][quay]
![Docker Pulls][hub]
![Go Report Card][goreportcard]
Prometheus exporter for hardware and OS metrics exposed by \NIX kernels, written
in Go with pluggable metric collectors.
The Windows exporter is recommended for Windows users.
To expose NVIDIA GPU metrics, prometheus-dcgm
can be used.
Installation and Usage
If you are new to Prometheus and node_exporter there is a simple step-by-step guide.
The node_exporter listens on HTTP port 9100 by default. See the --help output for more options.
Linux distribution packages
On Enterprise Linux (RHEL, CentOS Stream, Rocky Linux, AlmaLinux) and Fedora, node_exporter is packaged in EPEL as golang-github-prometheus-node-exporter (available for EPEL 7, 8 and 9):
Ansible
For automated installs with Ansible, there is the Prometheus Community role.
Docker
The node_exporter is designed to monitor the host system. Deploying in containers requires
extra care in order to avoid monitoring the container itself.
For situations where containerized deployment is needed, some extra flags must be used to allow
the node_exporter access to the host namespaces.
Be aware that any non-root mount points you want to monitor will need to be bind-mounted
into the container.
If you start a container for host monitoring, specify the path.rootfs argument.
This argument must match path in bind-mount of host root. The node\_exporter will use
path.rootfs as prefix to access host filesystem.
bash
docker run -d \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
quay.io/prometheus/node-exporter:latest \
--path.rootfs=/host
For Docker compose, similar flag changes are needed.
yaml
---
version: '3.8'
services:
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter
command:
- '--path.rootfs=/host'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
On some systems, the timex collector requires an additional Docker flag,
--cap-add=SYS_TIME, in order to access the required syscalls.
Collectors
There is varying support for collectors on each operating system. The tables
below list all existing collectors and the supported systems.
Collectors are enabled by providing a --collector. flag.
Collectors that are enabled by default can be disabled by providing a --no-collector. flag.
To enable only some specific collector(s), use --collector.disable-defaults --collector. ....
There are two meta-monitoring metrics available for checking the status of collectors.
node_scrape_collector_success
node_scrape_collector_duration_seconds
Note that if a configured collector reads no data because it can't find a file in /proc or /sys,
the success status will be 0. This is intentional to provide a way to detect faild drivers and similar
problems.
Include & Exclude flags
A few collectors can be configured to incl