本文以SNMP Explorer作为采集器,Prometheus
UR/ERG3/ERG5系列路由器 → SNMP Explorer → Prometheus
其中:
SNMP Exporter:把路由器提供的 SNMP 数据转换成 Prometheus 能读取的指标。它根据配置向路由器查询 OID,再通过 HTTP 暴露结果。
Prometheus:定时访问 SNMP Exporter,抓取并保存指标数据,并提供查询能力。
后续可以用其他看板工具读取Prometheus的数据绘制看板。
本文不会介绍SNMP Exporter和Prometheus的安装方法。
1.原理介绍
请求方向:Prometheus → SNMP Exporter → 路由器。
数据沿相反方向返回。独立 SNMP 浏览器是可选查询工具,不参与日常采集链路。
路由器 SNMP Agent
负责什么:响应 OID 查询,提供接口计数器、设备信息等。
本案例位置:192.168.6.1:161(UDP)
SNMP Exporter
负责什么:收到 /snmp 请求后查询路由器,把返回值映射为 Prometheus 指标;自身不保存长期历史。
本案例位置:192.168.6.101:9116(HTTP)
Prometheus
负责什么:周期性抓取 Exporter,保存带时间戳的指标,支持 PromQL 查询和规则计算。
本案例位置:192.168.6.101:9090(HTTP)
MIB / OID 参考资料
负责什么:描述对象名称、编号、类型、单位和索引,帮助选择与解释指标。
本案例位置:供查询工具或配置生成过程使用
本教程从已安装并可访问的服务开始。Exporter 的请求方式和配置字段按 SNMP Exporter官方说明核对。
2. 路由器:启用 SNMPv2c 只读访问
2.1 打开基本设置
登录路由器,进入 高级选项 → SNMP → 基本设置。以下采用原对话中已接通的 SNMPv2c 方案;如另行使用 SNMPv3,路由器用户和 Exporter 的认证、加密参数也必须一起配置。
SNMP / SNMP 版本:打开 SNMP,勾选 SNMPv2c。
联系信息 / 设备位置:原截图使用默认英文内容;按页面格式要求填写或保留。
本地引擎 ID:该页面是必填项。已有保存值时保留;首次配置按帮助要求填写 10–64 个十六进制字符,长度为偶数,并保持设备间唯一、长期稳定。它是设备标识,不是团体名。
SNMP 信任主机 IPv4 地址:本例为 192.168.6.101,即路由器看到的 Exporter 请求源地址。这里是单个 IPv4 字段,不填 /32。若容器使用独立地址,应按路由器实际看到的源地址配置。
NMS 主 / 辅监控接口:原截图主接口需要的WAN口、辅接口为空
SNMP Trap:本例保持关闭;Prometheus 通过轮询采集,不依赖 Trap。
首次配置后点击页面底部的应用 / 保存。相似 H3C Web 界面的引擎 ID 与信任主机字段规则可参考 H3C 官方手册 14.7 节;具体界面以该设备固件为准。
2.2 确认团体名和权限
切换到 团体名设置,确认采集使用的团体名具有只读权限。Exporter 中的 community 必须与这里完全一致,大小写也一致。
本例使用 public_v2 认证配置。若你修改过配置,应以实际文件为准。自定义团体名时要同步调整两端,且仅允许可信采集主机访问 UDP 161。v2c 团体名以明文传输;有加密要求时采用 SNMPv3。
3. SNMP Exporter:先确认路由器数据能读出
3.1 填写首页的三个参数
浏览器打开 http://192.168.6.101:9116/,按图填写:
Target
值:192.168.6.1
含义:被采集的路由器地址。
Auth
值:public_v2
含义:snmp.yml 中 auths 下已存在的配置名。
Module
值:if_mib
含义:采集接口指标的模块名。
点击 Submit,看到包含 ifOperStatus、ifHCInOctets 等名称的文本即可确认采集返回。这里只显示一次请求的指标文本,历史记录由 Prometheus 保存。
Auth 只填写配置名。不能把团体名、YAML 配置或随意起的 h3c_v2 填进去。只有 Exporter 已加载同名配置时,h3c_v2 才能使用;本案例已经验证的是 public_v2。
3.2 同时读取接口与运行时间
将 Module 改为 if_mib,system,或直接打开以下地址。这个组合已在当前服务上返回接口指标和 sysUpTime:
http://192.168.6.101:9116/snmp?target=192.168.6.1&auth=public_v2&module=if_mib,system
/snmp 用于查询目标设备;首页的 Metrics 链接指向 /metrics,主要是 Exporter 自身的运行指标。两者用途不同。官方端点说明
3.3 如需使用自定义团体名
在 Exporter 实际加载的配置文件中修改已有认证项,保留全部 modules。下面只展示认证部分,不能用它覆盖整份 snmp.yml;占位文字要替换为路由器端的只读团体名。
snmp.yml 的认证片段
auths:
public_v2:
version: 2
community: "REPLACE_WITH_ROUTER_READ_ONLY_COMMUNITY"
按部署方式重启或重新加载 Exporter 后,再打开 3.2 的地址确认。若当前采集已正常且没有更改团体名的需求,直接继续下一节。
4. Prometheus:定时抓取并保存指标
4.1 编辑正在使用的 prometheus.yml
本案例配置文件保存路径为:
/var/apps/prometheus.prometheus/shares/prometheus/prometheus/prometheus.yml
请根据您的实际安装位置修改。
确认这是 Prometheus 当前使用或挂载的配置文件。在已有 scrape_configs: 列表中加入下列 job。若已经有 h3c-router,修改原 job;同一配置中不要重复写顶层 scrape_configs 或同名 job。
prometheus.yml · 本案例抓取任务(请务必注意缩进)
scrape_configs:
- job_name: "h3c-router"
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /snmp
params:
auth: [public_v2]
module: [if_mib, system]
static_configs:
- targets:
- "192.168.6.1"
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: "192.168.6.101:9116"
targets 写路由器;replacement 写 Exporter。三条 relabel 依次把路由器地址送入 target 查询参数、保留为 instance 标签,再把真正的 HTTP 请求地址改为 Exporter。此处明确设置 15 秒间隔,便于按本案例复现。
4.2 检查配置并使其生效
在能读取该配置的 Prometheus 运行环境中,用附带的 promtool 检查。路径替换为实际路径;容器内使用容器内路径:
配置检查命令(路径需替换)
promtool check config /实际路径/prometheus.yml
检查成功后,重启 Prometheus;
HTTP 重载接口默认关闭。不要通过重载接口判断配置语法是否正确,应先执行 promtool。配置生效后等待一到两个抓取周期,本例约 15–30 秒。
4.3 查看目标状态
打开 Prometheus → Status → Target health,搜索 h3c-router。确认 Endpoint 是 Exporter 的 /snmp,参数同时有 if_mib、system,状态为 UP,instance 为路由器地址。
UP 表示该次抓取成功,仍需要在查询页确认你关心的指标确实存在。
5. 查询指标并完成验收
打开 Prometheus → Query,输入下列任意表达式,点击 Execute。首先使用 Table 查看数值;速率可切换 Graph 查看曲线。
抓取是否成功
PromQL:up{job="h3c-router",instance="192.168.6.1"}
结果含义:1 为成功,0 为失败;空结果要先检查 job 是否加载及查询时间。
接口运行状态
PromQL:ifOperStatus{job="h3c-router"}
结果含义:通常 1 为 up、2 为 down;存在其他状态值,按指标定义解释。
累计入站字节
PromQL:ifHCInOctets{job="h3c-router"}
结果含义:累计计数器,单位为字节。
各接口入站速率
PromQL:rate(ifHCInOctets{job="h3c-router"}[5m]) * 8
结果含义:bit/s;至少需要两次采样。除以 1000000 得到 Mbit/s。
各接口出站速率
PromQL:rate(ifHCOutOctets{job="h3c-router"}[5m]) * 8
结果含义:从路由器接口视角计算出站速率。
SNMP 管理子系统运行秒数
PromQL:sysUpTime{job="h3c-router"} / 100
结果含义:该案例的原始 sysUpTime 单位为百分之一秒。
完成后即可将看板工具接入。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作