Linux 下载、安装 Node Exporter,Prometheus 官方主机硬件与系统指标采集器(附安装包node_exporter-1.12.1.linux-amd64.tar.gz)
文章目录

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 采集器:暴露 DM-multipath 设备与路径指标
- mountstats 增强:新增 NFS 挂载点信息指标
- 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
└── LICENSE4. 安装
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_exporter
sudo cp node_exporter /opt/node_exporter/
# 创建专用用户(无登录权限)并授权
sudo useradd --system --no-create-home --shell /sbin/nologin node_exporter
sudo chown -R node_exporter:node_exporter /opt/node_exporter创建服务文件 /etc/systemd/system/node_exporter.service:
[Unit]
Description=Prometheus Node Exporter
Documentation=https://prometheus.io/docs/guides/node-exporter/
After=network.target
[Service]
Type=simple
User=node_exporter
Group=node_exporter
WorkingDirectory=/opt/node_exporter
ExecStart=/opt/node_exporter/node_exporter \
--web.listen-address=0.0.0.0:9100 \
--collector.systemd
Restart=on-failure
RestartSec=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_exporter
sudo systemctl start node_exporter
# 查看状态
sudo systemctl status node_exporter5. 使用
5.1 接入 Prometheus
在 Prometheus 的 prometheus.yml 中增加抓取目标,即可采集主机指标。一个典型的 Linux 主机监控配置如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_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_load15.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 }} 无法访问,已持续 2 分钟"
# 磁盘空间不足
- alert: 磁盘空间不足
expr: node_filesystem_avail_bytes{mountpoint="/"} < 5 * 1024 * 1024 * 1024
for: 10m
labels:
severity: warning
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 }} 内存使用率超过 85%"
# CPU 使用率过高
- alert: CPU使用率过高
expr: 100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 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(指标基数)两项指标,避免采集超时或资源占用过高