prometheus如何监控网络指标

联启 网络工具 14

本文目录导读:

prometheus如何监控网络指标-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 监控设备本身(主机)的网络状态
  2. 监控网络设备(路由器、交换机、防火墙)
  3. 监控网络连通性与延迟
  4. 监控网络流量流向(瓶颈分析)
  5. 监控网络带宽使用率(特定流量重放)
  6. 总结:选择哪个方案?
  7. 实际配置示例(监控服务器网络带宽)
  8. 特别提醒:Prometheus 不适合全量流量分析

Prometheus 本身是一个拉取(Pull)模式的时间序列数据库,它不直接像 NPM(Network Performance Monitor)那样抓包分析网络流量,要监控网络指标,通常需要依赖 Exporter 来采集数据,由 Prometheus 拉取。

以下是使用 Prometheus 监控网络指标的几种核心方式及其适用场景:

监控设备本身(主机)的网络状态

这是最常见的需求,监控服务器的网卡流量、带宽、丢包、错误包等。

推荐工具:node_exporter

  • 原理node_exporter 读取 Linux /proc/net/dev 等文件系统,提供丰富的网络指标。
  • 关键 Metrics(指标)
    • node_network_receive_bytes_total:接收字节数(用于计算带宽)。
    • node_network_transmit_bytes_total:发送字节数。
    • node_network_receive_drop_total:接收丢包。
    • node_network_transmit_drop_total:发送丢包。
    • node_network_receive_errors_total:接收错误。
    • node_network_transmit_errors_total:发送错误。
  • 常用 PromQL 查询示例
    • 计算网卡实时带宽(bps)
      rate(node_network_receive_bytes_total{device="eth0"}[1m]) * 8
    • 计算丢包率
      rate(node_network_receive_drop_total{device="eth0"}[1m]) / rate(node_network_receive_packets_total{device="eth0"}[1m])
  • 优点:官方维护,部署简单,覆盖基础需求。
  • 缺点:只能看到主机层面的统计,无法看到网络路径或应用层流量内容。

监控网络设备(路由器、交换机、防火墙)

网络设备通常运行 SNMP 协议,Prometheus 无法直接对接 SNMP,需要中间件转换。

推荐工具:snmp_exporter

  • 原理snmp_exporter 接收 Prometheus 的 HTTP 请求,然后去轮询设备的 SNMP 接口(通常是 MIB 库),将 SNMP 数据转换为 Prometheus 指标。
  • 配置方法
    1. 生成配置文件,定义要抓取哪些 OID(MIB 树中的节点,即指标ID)。
    2. 在 Prometheus 的 scrape_config 中配置 snmp_exporter 的地址,并传递目标设备 IP 和社区字符串。
  • 监控指标
    • ifHCInOctetsifHCOutOctets(64位计数器,避免数值溢出)。
    • ifInErrorsifOutErrors
    • ifOperStatus(端口状态:up/down)。
  • 适用场景:监控企业级交换机、路由器、防火墙的端口流量及状态。

监控网络连通性与延迟

监控从 Prometheus 服务器(或特定 Probe 节点)到目标服务的网络质量。

推荐工具:blackbox_exporter

  • 原理:这是一个探针 Exporter,可以执行 ICMP(ping)、TCP、HTTP、DNS 等探测,并将结果暴露给 Prometheus。
  • 关键指标
    • probe_success:探测是否成功(1 成功,0 失败)。
    • probe_duration_seconds:探测耗时(类似 Ping 的延迟)。
    • probe_http_status_code:HTTP 状态码。
    • probe_ssl_earliest_cert_expiry:证书过期时间。
  • 典型用法:使用 up 模块监控网站,使用 icmp 模块监控核心路由器的延迟。

监控网络流量流向(瓶颈分析)

如果想分析哪台机器在跟谁通信、网络流量的构成(类似 NetFlow),以上工具均无法满足,这需要更复杂的流数据采集。

推荐工具组合:sflow_exporter / ipfixElasticsearch + Logstash

  • 方案 A:GoFlow + Prometheus
    • GoFlow 是一个 NetFlow/IPFIX/sFlow 收集器,它能解析网络设备发送的流数据,并直接生成 Prometheus 指标(如 bytes per source/destination)。
    • 缺点:流量大时,CPU 和 Prometheus 指标基数(Cardinality)会急剧膨胀,需要注意。
  • 方案 B:Elastic Stack(不直接 Prometheus)
    • 使用 Packetbeat 或 Logstash 抓取 sFlow,存入 Elasticsearch,Prometheus 可以通过 elasticsearch_exporter 获取一些聚合指标,但无法像 PromQL 那样分析流详情。

监控网络带宽使用率(特定流量重放)

推荐工具:iperf3_exporter

  • 用途:主动生成流量,测试两点间的实际最大带宽。
  • 原理:一端运行 iperf3 服务端,另一端运行客户端并配合 exporter,输出测速结果作为指标。
  • 适用:带宽基准测试,或 SLA 验证,不适合 24 小时生产监控。

选择哪个方案?

监控目标 推荐工具 典型指标 复杂度
主机网卡流量、丢包 node_exporter bytes, drop, errors ⭐ 低
交换机/路由器端口 snmp_exporter ifHCInOctets, ifOperStatus ⭐⭐ 中
连通性、延迟、证书 blackbox_exporter probe_success, probe_duration_seconds ⭐ 低
网络流量流向分析 GoFlow / Elastic + Packetbeat src_ip, dst_ip, bytes ⭐⭐⭐ 高
主动带宽测速 iperf3_exporter Mbps, jitter ⭐⭐ 中

实际配置示例(监控服务器网络带宽)

如果你已经部署了 node_exporter,可以在 Prometheus 配置文件中添加 Job:

scrape_configs:
  - job_name: 'node_network'
    static_configs:
      - targets: ['your_server_ip:9100']
    # 可以只拉取网络相关指标,减少数据量
    params:
      collect[]:
        - 'cpu'
        - 'network'

然后在 Grafana 中配置面板,公式如下(获取 5 分钟内的平均上行带宽):

rate(node_network_transmit_bytes_total{device=~"eth0|ens.*"}[5m]) * 8

特别提醒:Prometheus 不适合全量流量分析

如果你需要像 Wireshark(抓包工具)那样看到每个会话的 HTTP 请求详情、每个包的负载,或者需要持续几周的流量历史溯源,Prometheus 不是合适的选择,建议使用:

  • Elasticsearch + Packetbeat(全量存储,搜索能力强)。
  • Grafana + Loki(仅日志,不完整)。
  • Cribl / Splunk(企业级数据管道)。

Prometheus 的优势在于实时告警趋势分析(如“最近5分钟流量超过阈值”或“网络错误率突然升高”)。

标签: 网络设备 数据采集

抱歉,评论功能暂时关闭!