Prometheus 导出器,用于 *NIX 内核公开的硬件和操作系统指标,用 Go 编写,带有可插入指标收集器。
建议 Windows 用户使用 Windows 导出器。要公开 NVIDIA GPU 指标,可以使用 prometheus-dcgm。
如果您是 Prometheus 和node_exporter
的新手,这里有一个简单的分步指南。
默认情况下, node_exporter
侦听 HTTP 端口 9100。有关更多选项,请参阅--help
输出。
对于使用 Ansible 进行自动化安装,有 Prometheus 社区角色。
node_exporter
旨在监控主机系统。在容器中部署需要格外小心,以避免监视容器本身。
对于需要容器化部署的情况,必须使用一些额外的标志来允许node_exporter
访问主机命名空间。
请注意,您想要监视的任何非根安装点都需要绑定安装到容器中。
如果启动容器进行主机监控,请指定path.rootfs
参数。此参数必须与主机根的绑定安装中的路径匹配。 node_exporter 将使用path.rootfs
作为前缀来访问主机文件系统。
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
对于 Docker compose,需要类似的标志更改。
---
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 '
在某些系统上, timex
收集器需要额外的 Docker 标志--cap-add=SYS_TIME
才能访问所需的系统调用。
每个操作系统对收集器的支持各不相同。下表列出了所有现有收集器和支持的系统。
通过提供--collector.
标志来启用收集器。可以通过提供--no-collector.
标志来禁用默认启用的收集器。要仅启用某些特定的收集器,请使用--collector.disable-defaults --collector.
。
可以将一些收集器配置为使用专用标志包含或排除某些模式。排除标志用于指示“除所有”之外,而包含标志用于表示“无除”。请注意,这些标志在支持这两种标志的收集器上是互斥的。
例子:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
列表:
集电极 | 范围 | 包括标志 | 排除标志 |
---|---|---|---|
ARP | 设备 | --collector.arp.device-include | --collector.arp.设备排除 |
中央处理器 | 虫子 | --collector.cpu.info.bugs-include | 不适用 |
中央处理器 | 旗帜 | --collector.cpu.info.flags-include | 不适用 |
磁盘统计 | 设备 | --collector.diskstats.device-include | --collector.diskstats.设备排除 |
网络工具 | 设备 | --collector.ethtool.device-include | --collector.ethtool.设备排除 |
网络工具 | 指标 | --collector.ethtool.metrics-include | 不适用 |
文件系统 | fs 类型 | 不适用 | --collector.filesystem.fs-类型-排除 |
文件系统 | 挂载点 | 不适用 | --collector.filesystem.挂载点-排除 |
胡文 | 芯片 | --collector.hwmon.chip-include | --collector.hwmon.chip-排除 |
胡文 | 传感器 | --collector.hwmon.sensor-include | --collector.hwmon.传感器排除 |
中断 | 姓名 | --collector.interrupts.name-include | --collector.interrupts.name-排除 |
网络开发者 | 设备 | --collector.netdev.device-include | --collector.netdev.设备排除 |
qdisk | 设备 | --collector.qdisk.device-include | --collector.qdisk.设备排除 |
板信息 | 板坯名称 | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-排除 |
系统控制 | 全部 | --collector.sysctl.include | 不适用 |
系统 | 单元 | --collector.systemd.unit-include | --collector.systemd.unit-排除 |
姓名 | 描述 | 操作系统 |
---|---|---|
ARP | 从/proc/net/arp 公开 ARP 统计信息。 | Linux |
缓存 | 从/sys/fs/bcache/ 公开 bcache 统计信息。 | Linux |
粘合 | 公开 Linux 绑定接口的已配置和活动从属设备的数量。 | Linux |
BTFS | 公开 btrfs 统计信息 | Linux |
启动时间 | 公开从kern.boottime sysctl 派生的系统启动时间。 | 达尔文、蜻蜓、FreeBSD、NetBSD、OpenBSD、Solaris |
连线 | 显示 conntrack 统计信息(如果没有/proc/sys/net/netfilter/ 则不执行任何操作)。 | Linux |
中央处理器 | 公开 CPU 统计信息 | 达尔文、蜻蜓、FreeBSD、Linux、Solaris、OpenBSD |
CPU频率 | 公开 CPU 频率统计信息 | Linux、Solaris |
磁盘统计 | 公开磁盘 I/O 统计信息。 | 达尔文、Linux、OpenBSD |
迪米 | 从/sys/class/dmi/id/ 公开桌面管理接口 (DMI) 信息 | Linux |
埃达克 | 公开错误检测和纠正统计数据。 | Linux |
熵 | 暴露可用的熵。 | Linux |
执行 | 公开执行统计信息。 | 蜻蜓、FreeBSD |
光纤通道 | 从/sys/class/fc_host/ 公开光纤通道信息和统计信息。 | Linux |
文件描述符 | 从/proc/sys/fs/file-nr 公开文件描述符统计信息。 | Linux |
文件系统 | 公开文件系统统计信息,例如使用的磁盘空间。 | 达尔文、蜻蜓、FreeBSD、Linux、OpenBSD |
胡文 | 从/sys/class/hwmon/ 公开硬件监控和传感器数据。 | Linux |
无限带宽 | 公开特定于 InfiniBand 和 Intel OmniPath 配置的网络统计信息。 | Linux |
ipvs | 从/proc/net/ip_vs 公开 IPVS 状态,并从/proc/net/ip_vs_stats 公开统计信息。 | Linux |
平均负载 | 暴露平均负载。 | 达尔文、蜻蜓、FreeBSD、Linux、NetBSD、OpenBSD、Solaris |
米达德姆 | 公开/proc/mdstat 中有关设备的统计信息(如果不存在/proc/mdstat ,则不执行任何操作)。 | Linux |
内存信息 | 公开内存统计信息。 | 达尔文、蜻蜓、FreeBSD、Linux、OpenBSD |
网类 | 从/sys/class/net/ 公开网络接口信息 | Linux |
网络开发者 | 公开网络接口统计信息,例如传输的字节数。 | 达尔文、蜻蜓、FreeBSD、Linux、OpenBSD |
网络服务 | 公开 netisr 统计信息 | 自由BSD |
网络统计 | 从/proc/net/netstat 公开网络统计信息。这与netstat -s 的信息相同。 | Linux |
网络文件系统 | 从/proc/net/rpc/nfs 公开 NFS 客户端统计信息。这与nfsstat -c 信息相同。 | Linux |
国家食品安全标准 | 从/proc/net/rpc/nfsd 公开 NFS 内核服务器统计信息。这与nfsstat -s 信息相同。 | Linux |
NVME | 从/sys/class/nvme/ 公开 NVMe 信息 | Linux |
操作系统 | 从/etc/os-release 或/usr/lib/os-release 公开操作系统版本信息 | 任何 |
电源类 | 从/sys/class/power_supply 公开电源统计信息 | Linux |
压力 | 从/proc/pressure/ 公开压力失速统计信息。 | Linux(内核 4.20+ 和/或 CONFIG_PSI) |
拉普尔 | 公开来自/sys/class/powercap 的各种统计信息。 | Linux |
调度统计 | 从/proc/schedstat 公开任务调度程序统计信息。 | Linux |
SELinux | 公开 SELinux 统计信息。 | Linux |
袜子状态 | 公开来自/proc/net/sockstat 的各种统计信息。 | Linux |
软网 | 公开来自/proc/net/softnet_stat 的统计信息。 | Linux |
统计数据 | 公开/proc/stat 中的各种统计信息。这包括启动时间、分叉和中断。 | Linux |
磁带统计器 | 公开来自/sys/class/scsi_tape 的统计信息。 | Linux |
文本文件 | 公开从本地磁盘读取的统计信息。必须设置--collector.textfile.directory 标志。 | 任何 |
热的 | 公开热统计数据,如pmset -g therm 。 | 达尔文 |
热区 | 从/sys/class/thermal 公开热区域和冷却设备统计信息。 | Linux |
时间 | 公开当前系统时间。 | 任何 |
天美时 | 显示选定的 adjtimex(2) 系统调用统计信息。 | Linux |
udp_队列 | 从/proc/net/udp 和/proc/net/udp6 公开 rx_queue 和 tx_queue 的 UDP 总长度。 | Linux |
乌纳梅 | 公开 uname 系统调用提供的系统信息。 | 达尔文、FreeBSD、Linux、OpenBSD |
虚拟机状态 | 公开来自/proc/vmstat 的统计信息。 | Linux |
看门狗 | 公开来自/sys/class/watchdog 的统计信息 | Linux |
xfs | 公开 XFS 运行时统计信息。 | Linux(内核 4.4+) |
兹夫斯 | 公开 ZFS 性能统计信息。 | FreeBSD、Linux、Solaris |
node_exporter
还实现了许多默认情况下禁用的收集器。造成这种情况的原因因收藏家而异,可能包括:
scrape_interval
或scrape_timeout
您可以根据需要启用其他收集器,方法是将它们添加到 init 系统或服务管理程序的node_exporter
启动配置中,但建议谨慎。一次最多启用一个,首先在非生产系统上进行测试,然后在单个生产节点上进行手动测试。启用其他收集器时,您应该通过观察scrape_duration_seconds
指标来仔细监控更改,以确保收集完成并且不会超时。此外,监视scrape_samples_post_metric_relabeling
指标以查看基数的变化。
姓名 | 描述 | 操作系统 |
---|---|---|
好友信息 | 公开 /proc/buddyinfo 报告的内存碎片统计信息。 | Linux |
cgroups | 活动和启用的 cgroup 数量的摘要 | Linux |
cpu_漏洞 | 从 sysfs 公开 CPU 漏洞信息。 | Linux |
开发状态 | 公开设备统计信息 | 蜻蜓、FreeBSD |
数字版权管理 | 使用 sysfs / DRM 公开 GPU 指标, amdgpu 是唯一通过 DRM 公开此信息的驱动程序 | Linux |
德鲁布德 | 公开分布式复制块设备统计信息(至版本 8.4) | Linux |
网络工具 | 公开网络接口信息和网络驱动程序统计信息,相当于ethtool 、 ethtool -S 和ethtool -i 。 | Linux |
中断 | 显示详细的中断统计信息。 | Linux、开放式BSD |
克什莫德 | 从/sys/kernel/mm/ksm 公开内核和系统统计信息。 | Linux |
统计数据 | 从/proc/net/stat/ 公开统计信息。 | Linux |
已登录 | 公开登录后的会话计数。 | Linux |
内存信息_numa | 从/sys/devices/system/node/node[0-9]*/meminfo 、 /sys/devices/system/node/node[0-9]*/numastat 公开内存统计信息。 | Linux |
挂载统计信息 | 从/proc/self/mountstats 公开文件系统统计信息。公开详细的 NFS 客户端统计信息。 | Linux |
网络路由 | 将路由表公开为指标 | Linux |
性能 | 公开基于性能的指标(警告:指标取决于内核配置和设置)。 | Linux |
流程 | 公开来自/proc 聚合进程统计信息。 | Linux |
队列盘 | 公开排队纪律统计数据 | Linux |
板信息 | 从/proc/slabinfo 公开slab统计信息。注意/proc/slabinfo 的权限一般是0400,所以要适当设置。 | Linux |
软中断 | 从/proc/softirqs 公开详细的软中断统计信息。 | Linux |
系统控制 | 从/proc/sys 公开 sysctl 值。使用--collector.sysctl.include(-info) 进行配置。 | Linux |
系统 | 从 systemd 公开服务和系统状态。 | Linux |
tcpstat | 从/proc/net/tcp 和/proc/net/tcp6 公开 TCP 连接状态信息。 (警告:当前版本在高负载情况下存在潜在的性能问题。) | Linux |
无线上网 | 公开 WiFi 设备和站点统计信息。 | Linux |
xfrm | 公开来自/proc/net/xfrm_stat 的统计信息 | Linux |
区域信息 | 公开 NUMA 内存区域指标。 | Linux |
这些收集器已被弃用,并将在下一个主要版本中删除。
姓名 | 描述 | 操作系统 |
---|---|---|
网络传输协议 | 公开本地 NTP 守护进程运行状况以检查时间 | 任何 |
鲁尼特 | 从 runit 公开服务状态。 | 任何 |
监督者 | 从 Supervisord 公开服务状态。 | 任何 |
由于内核配置和安全设置的原因, perf
收集器可能无法在某些 Linux 系统上开箱即用。要允许访问,请设置以下sysctl
参数:
sysctl -w kernel.perf_event_paranoid=X
根据配置的值,将提供不同的指标,在大多数情况下, 0
将提供最完整的集合。有关更多信息,请参阅man 2 perf_event_open
。
默认情况下, perf
收集器将仅收集运行node_exporter
的CPU 的指标(即runtime.NumCPU
)。如果这还不够(例如,如果您运行node_exporter
并将其CPU 亲和性设置为特定CPU),您可以指定一个列表使用--collector.perf.cpus
标志替代 CPU 例如,要收集 CPU 2-6 上的指标,您可以指定: --collector.perf --collector.perf.cpus=2-6
。CPU 配置为零索引,也可以采用步幅值;例如--collector.perf --collector.perf.cpus=1-10:5
将在 CPU 1 上收集、 5 和 10。
使用--collector.perf.tracepoint
标志时, perf
收集器还能够收集跟踪点计数。可以使用perf list
或从 debugfs 找到跟踪点。其示例用法为--collector.perf.tracepoint="sched:sched_process_exec"
。
sysctl
收集器可以使用--collector.sysctl
启用。它支持使用--collector.sysctl.include
标志将数字 sysctl 值公开为指标,并使用--collector.sysctl.include-info
标志将字符串值公开为信息指标。标志可以重复。对于具有多个数值的 sysctl,可以给出可选映射以将每个值公开为其自己的指标。否则,使用index
标签来标识不同的字段。
使用--collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
sysctl 可以包含多个值,例如:
net.ipv4.tcp_rmem = 4096 131072 6291456
使用--collector.sysctl.include=net.ipv4.tcp_rmem
收集器将公开:
node_sysctl_net_ipv4_tcp_rmem{index="0"} 4096
node_sysctl_net_ipv4_tcp_rmem{index="1"} 131072
node_sysctl_net_ipv4_tcp_rmem{index="2"} 6291456
如果索引已定义含义(如本例所示),则可以通过将映射附加到 --collector.sysctl.include 标志来将值映射到多个指标: 使用--collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
收集器将公开:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
字符串值需要作为信息指标公开。用户通过使用--collector.sysctl.include-info
标志来选择它们。
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
给定以下 sysctl:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
设置--collector.sysctl.include-info=kernel.seccomp.actions_avail
将产生:
node_sysctl_info{key="kernel.seccomp.actions_avail", index="0", value="kill_process"} 1
node_sysctl_info{key="kernel.seccomp.actions_avail", index="1", value="kill_thread"} 1
...
textfile
收集器类似于 Pushgateway,因为它允许从批处理作业导出统计信息。它还可用于导出静态指标,例如机器的角色。 Pushgateway 应用于服务级别指标。 textfile
模块用于与机器绑定的指标。
要使用它,请在node_exporter
命令行上设置--collector.textfile.directory
标志。收集器将使用文本格式解析该目录中与 glob *.prom
匹配的所有文件。注意:不支持时间戳。
以原子方式推动 cron 作业的完成时间:
echo my_batch_job_completion_time $(date +%s) > /path/to/directory/my_batch_job.prom.$$
mv /path/to/directory/my_batch_job.prom.$$ /path/to/directory/my_batch_job.prom
要使用标签静态设置机器的角色:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
默认情况下, node_exporter
将公开启用的收集器中的所有指标。这是收集指标的推荐方法,以避免在比较不同系列的指标时出现错误。
对于高级使用,可以向node_exporter
传递一个可选的收集器列表来过滤指标。参数collect[]
和exclude[]
可以多次使用(但不能组合)。在 Prometheus 配置中,您可以在 scrape 配置下使用此语法。
仅收集cpu
和meminfo
收集器指标:
params:
collect[]:
- cpu
- meminfo
收集所有已启用的收集器指标,但排除netdev
:
params:
exclude[]:
- netdev
这对于让不同的 Prometheus 服务器从节点收集特定指标非常有用。
先决条件:
glibc-static
软件包。建筑:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
要查看所有可用的配置标志:
./node_exporter -h
make test
实验性的
导出器通过新的 Web 配置文件支持 TLS。
./node_exporter --web.config.file=web-config.yml
有关更多详细信息,请参阅导出器工具包 Web 配置。