Print
知

UR/ERG3/ERG5系列 路由器 SNMP 配置与监控接入

组网及说明

本文以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 单位为百分之一秒。

完成后即可将看板工具接入。