核心是通过Node Exporter启用netdev、netstat、ethtool等采集器读取/proc/net/dev等内核路径,Prometheus以15s~30s间隔拉取真实主机IP:9100/metrics,并验证node_network_receive_bytes_total等指标存在且动态变化。

宿主机网络指标(如网卡收发流量、丢包率、TCP连接数等)在监控系统中要直接采集,核心是让监控服务能稳定获取内核暴露的原始数据,并正确解析为时序指标。这不依赖额外代理或脚本,而是靠标准采集组件与合理配置协同完成。
用 Node Exporter 暴露网络指标
Node Exporter 是最常用且开箱即用的方式。它默认启用多个网络相关采集器,无需额外开发就能读取 /proc/net/dev、/proc/net/netstat、/sys/class/net/ 等路径的数据。
- 确保启动时不加
--no-collector.netdev、--no-collector.netstat或--no-collector.ethtool这类禁用参数 - 常见指标如
node_network_receive_bytes_total(接收字节数)、node_netstat_Tcp_CurrEstab(当前 ESTABLISHED 连接数)、node_network_transmit_drop_total(发送丢包数)都会自动暴露 - 验证方式:访问
http://:9100/metrics,搜索node_netstat_或node_network_,能看到数百行指标即表示采集正常
Prometheus 抓取配置必须匹配真实网络拓扑
监控服务不能只写 localhost:9100 —— 这在跨主机场景下会失败。Prometheus 必须通过目标主机的实际 IP 和端口拉取数据。
- 在
prometheus.yml的scrape_configs中,target 地址要填被监控主机的真实 IP,例如192.168.42.145:9100 - 抓取间隔建议设为
15s~30s:太短(如1s)可能压垮/proc接口;太长(如2m)会错过瞬时丢包、队列溢出等关键事件 - 如果使用服务发现(如 Consul 或 Kubernetes),需确认其返回的 target 地址可路由、端口可达
网络连通性与权限是前置条件
即使配置全对,若基础网络不通或权限受限,指标依然无法到达 Prometheus。
- 被监控主机防火墙需放行
9100端口(TCP),例如:sudo firewall-cmd --add-port=9100/tcp --permanent - Node Exporter 应以普通用户(如
node_exporter)运行,避免 root 权限滥用,但需有读取/proc和/sys的能力 - 若用容器部署,挂载
/proc、/sys、/根文件系统时要用ro只读模式,并指定--path.procfs /host/proc等参数,否则指标为空
指标可用性比“采集成功”更重要
看到 Targets 页面显示 UP 不代表网络指标真正有效——有些采集器可能因内核版本或驱动缺失而静默跳过。
- 检查
/metrics输出里是否有node_network_info(网卡识别)、node_netstat_TcpActiveOpens(主动建连数)等典型指标 - 对比不同网卡(如
eth0vsdocker0)的node_network_receive_packets_total是否随实际流量变化 - 若某项指标长期为 0 或缺失,可临时加启动参数强制启用,例如:
--collector.netdev.device-blacklist="veth.*"排除虚拟网卡干扰


















