prom/snmp-exporter 是 Prometheus ***推荐的 SNMP 数据导出工具,用于将 SNMP 设备数据转换为 Prometheus 可摄入的格式。通过该镜像,用户可轻松监控支持 SNMP 协议的网络设备(如交换机、路由器、接入点等),实现设备性能指标(如接口流量、系统资源等)的采集与分析。
ifIndex、ifDescr、ifName 等 SNMP 索引映射为 Prometheus 指标标签(如 ifHCOutOctets{ifIndex="2",ifDescr="eth0",...})。--snmp.module-concurrency 控制,默认 1),单次请求可获取多个模块数据。--web.config.file 配置)。snmp.yml 配置,覆盖常见硬件设备;支持通过 generator 工具从 MIB 文件生成自定义配置。username、password、priv_password),需启用 --config.expand-environment-variables。--no-snmp.wrap-large-counters 禁用。bashdocker pull prom/snmp-exporter
bashdocker run -d -p 9116:9116 --name snmp-exporter prom/snmp-exporter
snmp.yml,支持 if_mib 模块和 public_v2 认证(SNMP v2c 只读社区)。bashdocker run -d -p 9116:9116 \ -v /path/to/your/snmp.yml:/etc/snmp_exporter/snmp.yml \ --name snmp-exporter \ prom/snmp-exporter --config.file=/etc/snmp_exporter/snmp.yml
snmp.yml 配置文件(路径可通过 --config.file 指定,支持多文件和 glob 匹配,如 --config.file=snmp*.yml)。yamlversion: '3' services: snmp-exporter: image: prom/snmp-exporter container_name: snmp-exporter ports: - "9116:9116" volumes: - ./snmp.yml:/etc/snmp_exporter/snmp.yml - ./web-config.yml:/etc/snmp_exporter/web-config.yml # TLS/基本认证配置 command: - --config.file=/etc/snmp_exporter/snmp.yml - --config.expand-environment-variables # 启用环境变量注入 - --web.config.file=/etc/snmp_exporter/web-config.yml environment: - ARISTA_USERNAME=admin # 示例:注入认证用户名 - ARISTA_PASSWORD=secret # 示例:注入认证密码 restart: unless-stopped
| 参数 | 描述 | 默认值 |
|---|---|---|
--config.file | 指定配置文件路径(支持多文件和 glob 匹配,如 snmp*.yml) | snmp.yml |
--config.expand-environment-variables | 启用配置文件中环境变量注入(支持 username/password/priv_password) | false |
--web.config.file | 指定 Web 配置文件(TLS/基本认证,格式参考 exporter-toolkit) | 无 |
--snmp.module-concurrency | 多模块采集并发数 | 1 |
--no-snmp.wrap-large-counters | 禁用大计数器(Counter64)2^53 截断 | false |
http://<exporter-ip>:9116/snmp?target=<device-ip>&module=<module>&auth=<auth>
| 参数 | 描述 | 示例 |
|---|---|---|
target | SNMP 设备地址,支持 [transport://]host[:port] 格式(transport:udp/tcp) | 192.168.1.1、tcp://192.168.1.1:1161 |
module | 指定采集模块(在 snmp.yml 中定义,支持多模块,用逗号分隔或重复参数) | if_mib、if_mib,arista_sw |
auth | 指定认证配置(在 snmp.yml 的 auths 中定义) | public_v2、my_secure_v3 |
snmp_context | SNMP 上下文名称(覆盖 snmp.yml 中的 context_name) | vrf-mgmt |
snmp_engineid | SNMP v3 引擎 ID(仅 SNMP v3 适用) | 800004f7059c7a0307400529 |
# 逗号分隔 http://localhost:9116/snmp?module=if_mib,arista_sw&target=192.168.1.1&auth=public_v2 # 重复参数 http://localhost:9116/snmp?module=if_mib&module=arista_sw&target=192.168.1.1&auth=public_v2
snmp.yml 是核心配置文件,定义模块(modules)和认证(auths)。默认配置覆盖常见设备,如需自定义需通过 generator 生成。
yamlauths: public_v2: # 认证名称,用于 URL 参数 `auth` community: public # SNMP v2c 社区字符串 security_level: noAuthNoPriv # 安全级别(noAuthNoPriv/authNoPriv/authPriv) version: 2 # SNMP 版本(1/2/3) my_secure_v3: version: 3 security_level: authPriv username: ${ARISTA_USERNAME} # 环境变量注入用户名 password: ${ARISTA_PASSWORD} # 环境变量注入认证密码 auth_protocol: SHA256 # 认证协议(MD5/SHA/SHA224/SHA256/SHA384/SHA512) priv_protocol: AES # 加密协议(DES/AES/AES192/AES256) priv_password: ${ARISTA_PRIV_PASSWORD} # 环境变量注入加密密码 modules: if_mib: # 模块名称,用于 URL 参数 `module` walk: # 要遍历的 OID 或 MIB 节点 - 1.3.6.1.2.1.2.2 # ifTable - 1.3.6.1.2.1.31.1.1 # ifXTable metrics: # 指标定义 - name: ifInOctets oid: 1.3.6.1.2.1.2.2.1.10 type: counter help: 接口入站字节数 indexes: - labelname: ifIndex type: gauge
yamlscrape_configs: - job_name: 'snmp' static_configs: - targets: - 192.168.1.1 # 交换机 - tcp://192.168.1.2:1161 # 路由器(TCP 传输,端口 1161) metrics_path: /snmp params: auth: [public_v2] # 默认认证 module: [if_mib] # 默认模块(可多模块:[if_mib, arista_sw]) relabel_configs: - source_labels: [__address__] target_label: __param_target # 将 target 传递给 exporter - source_labels: [__param_target] target_label: instance # 实例标签设为设备地址 - target_label: __address__ replacement: 127.0.0.1:9116 # snmp-exporter 地址 # 监控 exporter 自身指标 - job_name: 'snmp_exporter' static_configs: - targets: ['localhost:9116']
通过 --web.config.file 指定 Web 配置文件,启用 TLS 和基本认证。示例配置(web-config.yml):
yamltls_config: cert_file: /etc/tls/cert.pem key_file: /etc/tls/key.pem basic_auth_users: admin: $2a$10$Gd6Za4E6d87xRvKx6rSMeO9eTQV9eTQV9eTQV9eTQV9eTQV9eTQV # bcrypt 加密的密码
如需自定义模块(如私有 MIB),使用 generator 工具从 MIB 文件生成 snmp.yml:
generator.yml),指定 MIB 路径和模块定义。bash./generator generate --config.file=generator.yml --output.file=snmp.yml
默认情况下,exporter 会将 64 位计数器(Counter64)值截断为 2^53(避免 Prometheus 浮点精度丢失)。如对接非 Prometheus 系统需禁用此功能:
bashdocker run -d -p 9116:9116 --name snmp-exporter prom/snmp-exporter --no-snmp.wrap-large-counters
snmp.yml 及 generator 配置可贡献至 ***仓库。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429