prometheus需依赖node_exporter采集linux主机指标,核心步骤为:部署node_exporter(推荐systemd管理)、验证网络/cpu/内存等指标是否正常暴露(如node_network_receive_bytes_total)、在prometheus.yml中配置scrape_configs抓取任务(target设为被监控主机ip:9100,scrape_interval建议15s)。

Prometheus 本身不直接采集 Linux 主机指标,必须靠 Exporter(尤其是 node_exporter)把系统数据暴露成 HTTP 可读的指标格式,再由 Prometheus 定期抓取。配置核心就三步:部署 node_exporter、确保它正确采集网络/内存/CPU 等关键指标、在 Prometheus 中添加对应 job 并合理设置抓取频率。
1. 部署并启动 node_exporter
下载最新稳定版(如 v1.6.1),解压后建议用 systemd 管理服务,保证开机自启和进程健壮性:
- 下载解压:
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz && tar xvfz node_exporter-*.tar.gz - 移动二进制文件到系统路径:
sudo mv node_exporter-*/node_exporter /usr/local/bin/ - 创建 systemd 服务文件
/etc/systemd/system/node_exporter.service,关键参数示例:
--collector.filesystem.ignored-mount-points="^/(sys|proc|dev|run)($|/)" \
--collector.netdev.ignored-devices="^(lo|docker0|veth).*"
其中 --collector.netdev.ignored-devices 过滤虚拟网卡,避免干扰真实链路监控;--collector.filesystem.ignored-mount-points 排除内核虚拟文件系统,减少无意义指标。
2. 验证 node_exporter 是否正常采集网络等关键指标
启动服务后,访问 http://<em>被监控主机IP</em>:9100/metrics,搜索以下前缀确认指标存在:
-
node_network_(如node_network_receive_bytes_total)→ 表示--collector.netdev已启用 -
node_netstat_(如node_netstat_Tcp_CurrEstab)→ 表示--collector.netstat已启用 -
node_cpu_seconds_total、node_memory_MemFree_bytes→ CPU 和内存基础指标默认开启
若缺失某类指标,检查启动命令是否误加了 --no-collector.netstat 等禁用参数——默认全部启用,无需额外开启。
3. 在 Prometheus 中配置抓取任务
编辑 prometheus.yml 的 scrape_configs 区块,新增一个 job:
static_configs:
- targets: ['192.168.1.10:9100', '192.168.1.11:9100']
scrape_interval: 15s
注意点:
- target 地址必须是 node_exporter 实际监听的 IP + 9100 端口,不是 Prometheus 自身地址
-
scrape_interval: 15s是平衡实时性与负载的推荐值:太短(如 1s)会频繁读取/proc,可能影响宿主性能;太长(如 60s)会漏掉瞬时丢包、队列溢出等关键事件 - 无需手动写 relabel_configs,除非要做实例标签标准化(例如统一加
env: prod)
4. 关键指标重点关注哪些
抓取成功后,在 Prometheus 表达式浏览器里可直接查,不必等 Grafana:
-
链路健康:用
rate(node_network_transmit_drop_total[5m])查每秒发送丢包率,持续 >0 需排查网卡或驱动 -
TCP 状态:用
node_netstat_Tcp_CurrEstab看当前 ESTABLISHED 连接数,结合node_netstat_TcpTimeWait判断连接回收是否积压 -
缓冲区压力:用
node_netstat_Socket_RmemAlloc对比网卡接收队列长度(node_netstat_Netstat_SndbufErrors),过高说明应用读取慢或套接字缓冲区不足
这些指标都来自内核 /proc/net/ 和 /sys/class/net/,node_exporter 只是“翻译器”,数据源头始终是 Linux 内核。











