Prometheus 怎么采集交换机与路由器的流量

风枫君_6467

风枫君_6467

2026-08-30

686人浏览

原创

prometheus 通过 snmp exporter 采集交换机/路由器流量数据,需完成三步:设备启用 snmp、exporter 配置模块并暴露指标、prometheus 抓取后用 rate() 计算带宽。

prometheus 怎么采集交换机与路由器的流量

Prometheus 本身不直接采集交换机或路由器的流量数据,它依赖 SNMP Exporter 这个中间组件,通过 SNMP 协议从设备拉取原始指标(如 ifInOctets、ifOutOctets),再转换成 Prometheus 可识别的时序指标,最终由 Prometheus 定期抓取。

关键不是“怎么写代码”,而是理清三步链路:设备开 SNMP → Exporter 配置好规则 → Prometheus 正确抓取并计算流量。


1. 确保交换机/路由器已启用 SNMP 并开放只读访问

这是前提。不同厂商配置略有差异,但核心一致:

  • 启用 SNMP v2c 或 v3(推荐 v3 更安全)
  • 设置只读团体名(v2c)或用户凭证(v3)
  • 允许 Prometheus 所在服务器的 IP 访问
  • 确认设备支持标准 MIB(如 IF-MIB、IP-MIB),多数主流设备(华为、Cisco、锐捷、H3C)都默认支持

例如 Cisco IOS 常见配置片段:

snmp-server community public RO
snmp-server location "Core Switch"
snmp-server contact "ops@example.com"

华为交换机(v2c)示例:

snmp-agent community read cipher public
snmp-agent sys-info version v2c

⚠️ 注意:避免使用默认 community(如 public/private),生产环境务必改用强密码,并限制源 IP。

Skill Weave Chains — 技能链路由引擎
Skill Weave Chains — 技能链路由引擎

开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。

下载

2. 用 snmp_exporter 抓取并暴露流量指标

snmp_exporter 不主动轮询,而是作为 HTTP 服务等待 Prometheus 请求,每次请求携带目标地址(?target=192.168.1.1)和模块(?module=if_mib)。

  • 流量相关的核心 OID 来自 IF-MIB:

    • ifInOctets(进向字节数)→ 对应 ifHCInOctets(64 位,更准)
    • ifOutOctets(出向字节数)→ 对应 ifHCOutOctets
    • 还有 ifOperStatus(接口状态)、ifSpeed(带宽)等辅助指标
  • snmp.yml 中需定义对应 module,例如:

    modules:
    cisco_if:
      walk: [1.3.6.1.2.1.2, 1.3.6.1.2.1.31.1.1]  # IF-MIB + IF-MIB-HC
      version: 2
      auth:
        community: public
    
  • 启动 snmp_exporter(监听 :9116):

    docker run -d \
    --name snmp_exporter \
    -v /path/to/snmp.yml:/etc/snmp_exporter/snmp.yml \
    -p 9116:9116 \
    prom/snmp-exporter:v0.21.0
    

✅ 验证是否生效:直接浏览器访问 http://localhost:9116/snmp?target=192.168.1.1&module=cisco_if,应返回类似 snmp_ifHCInOctets{ifDescr="GigabitEthernet1/0/1"} 1.23456e+09 的指标。


3. Prometheus 抓取并计算实时带宽(bps)

Prometheus 抓到的是累计字节数(counter 类型),要算出瞬时速率(如 Mbps),必须用 rate() 或 irate() 函数。

  • 在 prometheus.yml 中添加 job:

    
    
  • job_name: 'network-devices' metrics_path: /snmp params: module: [cisco_if] static_configs:

    • targets:
      • 192.168.1.1 # 交换机
      • 192.168.1.254 # 路由器 relabel_configs:
    • source_labels: [address] target_label: __param_target
    • source_labels: [__param_target] target_label: instance
    • target_label: address replacement: 192.168.0.5:9116 # snmp_exporter 地址
  • 在 Grafana 或 PromQL 中计算入向带宽(单位:bps):

    rate(snmp_ifHCInOctets{instance="192.168.1.1"}[2m]) * 8
    
  • 若想看某接口(比如 GigabitEthernet1/0/1)的 Mbps:

    rate(snmp_ifHCInOctets{ifDescr="GigabitEthernet1/0/1"}[2m]) * 8 / 1000 / 1000
    

? 提示:用 rate()(适合告警)比 irate()(适合瞬时毛刺)更稳定;时间窗口建议 ≥2 倍 scrape_interval(如抓取间隔 30s,窗口设为 2m)。


4. 补充建议:让流量监控更实用

  • 接口名映射可读:在 snmp.yml 的 relabel_configs 或 Prometheus 的 metric_relabel_configs 中,用 ifIndex 关联 ifDescr 或 ifAlias,把数字接口转成业务名(如 "uplink-to-core")
  • 区分设备类型:用 static_configs 的 labels 手动打标,如 {vendor="huawei", role="core-switch"}
  • 加上带宽利用率:rate(...) * 8 / (snmp_ifSpeed or 1000000000),注意 ifSpeed 可能为 0(如未协商完成),需加 unless 过滤
  • 错包/丢包率也一并采集:ifInErrors, ifOutErrors, ifInDiscards 同样来自 IF-MIB,是判断链路健康的关键补充

不复杂但容易忽略。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

路由器 路由

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Grafana重置admin密码
Grafana重置admin密码

本专题整合了grafana admin密码相关教程,阅读专题下面的文章了解更多详细内容。

2025.09.02

2074

12

Grafana admin密码
Grafana admin密码

本专题整合了Grafana密码相关教程,阅读专题下面的文章了解更多详细内容。

2025.12.09

710

9

Grafana重置admin密码
Grafana重置admin密码

本专题整合了grafana admin密码相关教程,阅读专题下面的文章了解更多详细内容。

2025.09.02

2074

12

Grafana admin密码
Grafana admin密码

本专题整合了Grafana密码相关教程,阅读专题下面的文章了解更多详细内容。

2025.12.09

710

9

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

80

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

80

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

60

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 配置文档
phpMyAdmin 配置文档

共0课时 | 0人学习

Swoole手册
Swoole手册

共0课时 | 0人学习