搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

prometheus/snmp_exporter

运维与部署

把交换机、路由器和接入点的 SNMP 数据转换为 Prometheus 可采集的指标,适合已部署 Prometheus 的网络运维场景。

2,194
747
Go
Apache-2.0
创建于 11 年前

项目介绍

Prometheus SNMP Exporter 是 Prometheus 官方推荐的 SNMP 数据导出方式,专门把交换机、路由器、接入点等网络设备的 SNMP 数据转换成 Prometheus 能直接采集的指标。它把 SNMP 的 OID 树映射成 Prometheus 标签,例如一次接口 walk 会变成 ifHCOutOctets{ifAlias="",ifDescr="eth0",ifIndex="2",ifName="eth0"} 1000 这样的指标,而不需要人工逐项翻译 OID 映射示例。

导出器从 snmp.yml 读取 module 和 auth 定义,按请求去目标设备抓取数据,再以 Prometheus 格式返回。单个实例可以服务数千台设备,定位上类似 SNMP 的 Prometheus 代理 扩展能力、运行模型。它适合已经使用 Prometheus、需要监控网络设备的人群。

快速使用

  1. 从 GitHub Releases 下载对应平台的二进制文件,无需特殊安装;仓库还提供 systemd 示例 和 实际配置样例。
  2. 在命令行启动导出器:
./snmp_exporter
  1. 使用默认的 public_v2 auth 和 if_mib module 查询设备:
http://localhost:9116/snmp?target=192.0.0.8

要使用 snmp.yml 中的其他定义,通过 auth 和 module 参数指定,例如:

http://localhost:9116/snmp?auth=my_secure_v3&module=ddwrt&target=192.0.0.8

自定义传输协议和端口使用 [transport://]host[:port] 形式;通过 TCP 1161 端口访问时,URL 编码后的 target 为 tcp%3A%2F%2F192.0.0.8%3A1161 运行与目标格式。

  1. 在 Prometheus 中把 metrics_path 设为 /snmp,通过 relabeling 传入 target、auth 和 module。README 提供了完整的抓取配置示例 Prometheus 配置。

导出器自身的指标位于 http://localhost:9116/metrics 导出器指标。

配置与自定义 MIB

snmp.yml 是生成的配置文件,不建议手工修改。默认文件使用 SNMP v2 GETBULK 覆盖多种常见硬件。如果需要自定义 walk 的对象或使用非公开 MIB,使用 generator;社区维护的 MIB 和生成配置位于 prometheus-community/snmp。一次抓取可以请求多个 module,用逗号分隔或重复 module 参数;不同 module 之间的 walk 不会去重 多 module 处理。

使用约束

  • SNMP v1/v2c 的 community string 以明文传输,不属于机密信息;需要安全访问时应使用 SNMP v3 SNMP 安全说明。
  • 只有启用 --config.expand-environment-variables 后,username、password 和 priv_password 才能从环境变量读取;变量缺失会导致配置加载报错 环境变量。
  • 为所有 HTTP 端点启用 TLS 或 basic authentication 需要 --web.config.file,配置格式见 exporter-toolkit。
  • 导出器默认每 2^53 对大的 Counter64 值做环绕处理,以避免 64 位浮点舍入;面向非 Prometheus 系统时可使用 --no-snmp.wrap-large-counters 关闭 大计数器处理。
  • 单个导出器可以抓取大量设备,但仍需能访问每个目标,并在 snmp.yml 中提供有效的 auth 和 module。

HotRepo 点评

HotRepo 没有该仓库的榜单或讨论记录,因此更有价值的观察来自技术事实:这是一个长期存在的 Prometheus 生态导出器,采用 Apache-2.0 许可证,已有 2,194 个 Star,接口是查询驱动的,而不是静态目标列表。最能说明使用方式的是扩展模型:一个导出器进程面向数千台设备,每次抓取通过 Prometheus relabeling 传入 auth 和 module。README 同时强调 snmp.yml 是生成文件,如果团队准备手工编辑设备映射,应围绕 generator 和 MIB 流程来规划。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。