Node exporter
[
][quay]
[
][hub]
[
][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.
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.
---
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. ....
Include & Exclude flags
A few collectors can be configured to include or exclude certain patterns using dedicated flags. The exclude flags are used to indicate "all except", while the include flags are used to say "none except". Note that these flags are mutually exclusive on collectors that support both.
Example:
--collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/)
List:
| Collector | Scope | Include Flag | Exclude Flag |
|---|---|---|---|
| arp | device | --collector.arp.device-include | --collector.arp.device-exclude |
| cpu | bugs | --collector.cpu.info.bugs-include | N/A |
| cpu | flags | --collector.cpu.info.flags-include | N/A |
| diskstats | device | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
| ethtool | device | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
| ethtool | metrics | --collector.ethtool.metrics-include | N/A |
| filesystem | fs-types | --collector.filesystem.fs-types-include | --collector.filesystem.fs-types-exclude |
| filesystem | mount-points | --collector.filesystem.mount-points-include | --collector.filesystem.mount-points-exclude |
| hwmon | chip | --collector.hwmon.chip-include | --collector.hwmon.chip-exclude |
| hwmon | sensor | --collector.hwmon.sensor-include | --collector.hwmon.sensor-exclude |
| infiniband | device | --collector.infiniband.device-include | --collector.infiniband.device-exclude |
| interrupts | name | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
| netdev | device | --collector.netdev.device-include | --collector.netdev.device-exclude |
| qdisc | device | --collector.qdisc.device-include | --collector.qdisc.device-exclude |
| slabinfo | slab-names | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-exclude |
| sysctl | all | --collector.sysctl.include | N/A |
| systemd | unit | --collector.systemd.unit-include | --collector.systemd.unit-exclude |
Enabled by default
| Name | Description | OS |
|---|---|---|
| arp | Exposes ARP statistics from /proc/net/arp. |
Linux |
| bcache | Exposes bcache statistics from /sys/fs/bcache/. |
Linux |
| bonding | Exposes the number of configured and active slaves of Linux bonding interfaces. | Linux |
| btrfs | Exposes btrfs statistics | Linux |
| boottime | Exposes system boot time derived from the kern.boottime sysctl. |
Darwin, Dragonfly, FreeBSD, NetBSD, OpenBSD, Solaris |
| conntrack | Shows conntrack statistics (does nothing if no /proc/sys/net/netfilter/ present). |
Linux |
| cpu | Exposes CPU statistics | Darwin, Dragonfly, FreeBSD, Linux, Solaris, OpenBSD |
| cpufreq | Exposes CPU frequency statistics | Linux, Solaris |
| diskstats | Exposes disk I/O statistics. | Darwin, Linux, OpenBSD |
| dmi | Expose Desktop Management Interface (DMI) info from /sys/class/dmi/id/ |
Linux |
| dmmultipath | Exposes DM-multipath device and path metrics from /sys/block/dm-*. |
Linux |
| edac | Exposes error detection and correction statistics. | Linux |
| entropy | Exposes available entropy. | Linux |
| exec | Exposes execution statistics. | Dragonfly, FreeBSD |
| fibrechannel | Exposes fibre channel information and statistics from /sys/class/fc_host/. |
Linux |
| filefd | Exposes file descriptor statistics from /proc/sys/fs/file-nr. |
Linux |
| filesystem | Exposes filesystem statistics, such as disk space used. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
| hwmon | Expose hardware monitoring and sensor data from /sys/class/hwmon/. |
Linux |
| infiniband | Exposes network statistics specific to InfiniBand and Intel OmniPath configurations. | Linux |
| ipvs | Exposes IPVS status from /proc/net/ip_vs and stats from /proc/net/ip_vs_stats. |
Linux |
| kernel_hung | Exposes number of tasks that have been detected as hung from /proc/sys/kernel/hung_task_detect_count. |
Linux |
| loadavg | Exposes load average. | Darwin, Dragonfly, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
| mdadm | Exposes statistics about devices in /proc/mdstat (does nothing if no /proc/mdstat present). |
Linux |
| meminfo | Exposes memory statistics. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
| netclass | Exposes network interface info from /sys/class/net/ |
Linux |
| netdev | Exposes network interface statistics such as bytes transferred. | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
| netisr | Exposes netisr statistics | FreeBSD |
| netstat | Exposes network statistics from /proc/net/netstat. This is the same information as netstat -s. |
Linux |
| nfs | Exposes NFS client statistics from /proc/net/rpc/nfs. This is the same information as nfsstat -c. |
Linux |
| nfsd | Exposes NFS kernel server statistics from /proc/net/rpc/nfsd. This is the same information as nfsstat -s. |
Linux |
| nvme | Exposes NVMe info from /sys/class/nvme/ |
Linux |
| os | Expose OS release info from /etc/os-release or /usr/lib/os-release |
any |
| powersupplyclass | Exposes Power Supply statistics from /sys/class/power_supply |
Linux |
| pressure | Exposes pressure stall statistics from /proc/pressure/. |
Linux (kernel 4.20+ and/or CONFIG_PSI) |
| rapl | Exposes various statistics from /sys/class/powercap. |
Linux |
| schedstat | Exposes task scheduler statistics from /proc/schedstat. |
Linux |
| selinux | Exposes SELinux statistics. | Linux |
| sockstat | Exposes various statistics from /proc/net/sockstat. |
Linux |
| softnet | Exposes statistics from /proc/net/softnet_stat. |
Linux |
| stat | Exposes various statistics from /proc/stat. This includes boot time, forks and interrupts. |
Linux |
| tapestats | Exposes statis |