文章目录

1. Node Exporter 简介
Node Exporter 是 Prometheus 官方维护的主机指标采集器(exporter),用于采集 Linux/Unix 内核(*NIX)暴露的硬件与操作系统指标,是 Prometheus 生态中监控主机层面的事实标准。2013 年与 Prometheus 同期诞生,采用 Go 语言编写、单一二进制、可插拔采集器架构,如今在 GitHub 上已拥有约 1.35 万颗星标、2600 余次 Fork,几乎所有 Linux 发行版都将其打包进官方软件源。
Node Exporter 要解决的核心问题,是让服务器上的基础健康状态以统一格式暴露给监控系统:通过读取 Linux 的 /proc、/sys 等伪文件系统,将 CPU 使用、内存占用、磁盘空间与 I/O、网络流量、系统负载、进程数、运行时长等上百项指标聚合成 Prometheus 标准文本格式,在 9100 端口的 /metrics 端点对外暴露。Prometheus 按固定周期主动"拉取"(pull)这些数据并存入时序数据库,配合 Grafana 即可一屏看清整个服务器集群的运转状况。
Node Exporter 的核心特点:
- 开箱即用:单二进制、零配置,下载运行即在 9100 端口输出指标,相比 SNMP、Zabbix 等传统方案极为简洁
- 可插拔采集器:每个采集器负责一类指标,默认启用已覆盖日常监控 90% 以上的需求,也支持按需启停
- 数据标准统一:输出 Prometheus 标准文本格式,可被 Prometheus、VictoriaMetrics、Grafana Mimir、Thanos 等整个时序生态直接消费
- 覆盖全面:CPU、内存、磁盘、文件系统、网络、进程、systemd 服务、硬件传感器等系统级指标一应俱全
- 自定义扩展:textfile 采集器支持将任意脚本输出(如 nginx 连接数)暴露为指标,systcl 采集器可导出内核参数
2. v1.12.1 版本亮点
1.12 系列于 2026 年 7 月发布,v1.12.1 是紧随其后的维护补丁版本,针对个别采集器做了稳定修复。
2.1 缺陷修复
- perf 采集器:修复 perf 分析器(profiler)标志(flag)处理问题
- edac 采集器:修复可选的 csrow ue_count 指标采集问题
2.2 系列新特性(来自 v1.12.0)
- 新增 nvmesubsystem 采集器:暴露 NVMe over Fabrics 子系统路径健康指标
- 新增 dmmultipath 采集器
- mountstats 增强
- edac 增强:新增带 DIMM 标签的每通道错误指标,精确定位故障内存条
- cpufreq 增强:支持
cpuinfo_avg_freq,更准确地反映 CPU 实际运行频率 - filesystem 增强:支持 ext4 超级块紧急只读标志,及早发现文件系统异常
3. 获取安装包
如果访问 GitHub 不便,安装包及中文文档:https://hanshuixin.org/go/225N(内含 node_exporter-1.12.1.linux-amd64.tar.gz、README 中英对照、发布说明中英对照和 LICENSE)。
适用于 Linux x86_64(amd64)。
Node Exporter 其他版本:https://hanshuixin.org/resource/software_integrated_package/Linux/Node%20Exporter
Linux安装node_exporter-v1.12.1(node_exporter-1.12.1.linux-amd64).zip├── node_exporter-1.12.1.linux-amd64.tar.gz ← 解压后运行├── Linux安装node_exporter-v1.12.1(node_exporter-1.12.1.linux-amd64).pdf├── README/│ ├── README.md│ └── README-中文版.md├── 发布说明/│ ├── RELEASE-NOTES.md│ └── RELEASE-NOTES-中文版.md└── LICENSE
4. 安装
node_exporter-1.12.1.linux-amd64.tar.gz 是 Node Exporter 官方发布的 Linux x86_64 预编译二进制包,不绑定特定发行版,解压即可运行:
# 解压二进制包(内含 node_exporter 可执行文件与 LICENSE)tar -xzf node_exporter-1.12.1.linux-amd64.tar.gz# 进入解压目录cd node_exporter-1.12.1.linux-amd64# 启动 Node Exporter(默认监听 9100 端口)./node_exporter
启动后访问 http://localhost:9100/metrics 即可看到主机指标输出。
4.1 生产环境配置(systemd 服务化)
实际生产部署中,建议将二进制部署到统一目录,创建无登录权限的专用运行用户,并以 systemd 服务托管,便于开机自启、崩溃自动拉起与统一管理:
# 将二进制部署到统一目录sudo mkdir -p /opt/node_exportersudo cp node_exporter /opt/node_exporter/# 创建专用用户(无登录权限)并授权sudo useradd --system --no-create-home --shell /sbin/nologin node_exportersudo chown -R node_exporter:node_exporter /opt/node_exporter
创建服务文件 /etc/systemd/system/node_exporter.service:
[Unit]Description=Prometheus Node ExporterDocumentation=https://prometheus.io/docs/guides/node-exporter/After=network.target[Service]Type=simpleUser=node_exporterGroup=node_exporterWorkingDirectory=/opt/node_exporterExecStart=/opt/node_exporter/node_exporter \ --web.listen-address=0.0.0.0:9100 \ --collector.systemdRestart=on-failureRestartSec=5[Install]WantedBy=multi-user.target
配置要点说明:
--web.listen-address:监听地址与端口,默认 :9100,如需对外开放可改为 0.0.0.0:9100--collector.systemd:启用 systemd 服务状态采集(默认关闭,按需开启)--collector.textfile.directory:指定 textfile 采集器目录,用于暴露自定义指标
# 开机自启并启动sudo systemctl enable node_exportersudo systemctl start node_exporter# 查看状态sudo systemctl status node_exporter
5. 使用
5.1 接入 Prometheus
在 Prometheus 的 prometheus.yml 中增加抓取目标,即可采集主机指标。一个典型的 Linux 主机监控配置如下:
global: scrape_interval: 15s evaluation_interval: 15sscrape_configs: # 抓取 Node Exporter 暴露的主机指标 - job_name: "node" static_configs: - targets: ["192.168.1.10:9100", "192.168.1.11:9100"] labels: env: "prod"
保存后重载 Prometheus 配置(systemctl reload prometheus),在 Prometheus 界面的 Status → Targets 中即可看到各主机抓取状态。每台要监控的 Linux 主机都需安装并运行 Node Exporter,并确保 9100 端口对 Prometheus 可达。
5.2 常用查询(PromQL)
Node Exporter 暴露的指标以 node_ 前缀开头,配合 PromQL 可灵活分析主机状态。常用查询示例:
# CPU 使用率(排除 idle,按 5 分钟速率)100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100# 内存使用率(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100# 磁盘剩余空间(根分区)node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100# 磁盘 I/O 吞吐(5 分钟速率)rate(node_disk_read_bytes_total[5m])# 网络流入速率rate(node_network_receive_bytes_total[5m])# 系统负载(1 分钟)node_load1
5.3 对接 Grafana 可视化
将 Prometheus 作为数据源接入 Grafana 后,即可为主机指标搭建可视化仪表盘:
- 官方推荐:Grafana 官方提供了 Node Exporter Full 仪表盘模板(Dashboard ID 1860),导入后即可获得完整的 CPU、内存、磁盘、网络、系统负载等监控面板
- 自定义面板:在"仪表盘 → 新建"中添加面板,数据源选 Prometheus,查询框填入上述 PromQL 表达式即可,常用可视化类型有时序图(Time series)、统计(Stat)、仪表(Gauge)等
- 标签维度:利用
instance、env 等标签配置模板变量,以下拉框形式切换主机与环境,快速对比不同服务器状态
5.4 配置告警
基于 Node Exporter 采集的指标可定义主机告警规则,在 rules.yml 规则文件中配置,并让 Prometheus 通过 rule_files 引入:
groups: - name: node-alerts rules: # 主机离线 - alert: 主机离线 expr: up{job="node"} == 0 for: 2m labels: severity: critical annotations: description: "{{ labels.instance }} 磁盘剩余空间低于 5GB" # 内存使用率过高 - alert: 内存使用率过高 expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 85 for: 10m labels: severity: warning annotations: description: "{{ labels.instance }} CPU 使用率超过 85%"
告警触发后,Prometheus 将告警推送给 Alertmanager 统一去重、分组、静默,再通过邮件、Webhook、钉钉等方式通知运维,形成完整告警链路。
5.5 运行状态与安全
- 验证采集:
curl http://localhost:9100/metrics 可查看指标是否正常输出;Prometheus 界面的 Status → Targets 显示 UP 即采集正常 - web 配置校验:Node Exporter 支持通过
--web.config.file=web-config.yml 启用 TLS 加密访问(实验特性),生产环境对外暴露时建议启用 - 指标基数:启用额外采集器时,注意观察
scrape_duration_seconds(采集耗时)与 scrape_samples_post_metric_relabeling(指标基数)两项指标,避免采集超时或资源占用过高