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

发布于 2026/8/12 · 1 阅读
Node ExporterPrometheus主机监控指标采集服务器监控Linux监控系统监控云原生开源软件监控告警
Node Exporter 是 Prometheus 官方出品的 Linux 主机硬件与操作系统指标采集器,采集 CPU、内存、磁盘、网络等上百项指标并通过 HTTP 暴露,是云原生监控体系中采集主机指标的事实标准。

封面.png

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
└── 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_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_exporter

5. 使用

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_load1

5.3 对接 Grafana 可视化

将 Prometheus 作为数据源接入 Grafana 后,即可为主机指标搭建可视化仪表盘:

  • 官方推荐:Grafana 官方提供了 Node Exporter Full 仪表盘模板(Dashboard ID 1860),导入后即可获得完整的 CPU、内存、磁盘、网络、系统负载等监控面板
  • 自定义面板:在"仪表盘 → 新建"中添加面板,数据源选 Prometheus,查询框填入上述 PromQL 表达式即可,常用可视化类型有时序图(Time series)、统计(Stat)、仪表(Gauge)等
  • 标签维度:利用 instanceenv 等标签配置模板变量,以下拉框形式切换主机与环境,快速对比不同服务器状态

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(指标基数)两项指标,避免采集超时或资源占用过高