You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过snmp_exporter为Prometheus指定SNMP社区字符串?配置求助

解决思路

核心结论

SNMP社区字符串是配置在snmp_exporter的snmp.yml文件里的,prometheus.yml仅用于定义采集目标、调用的snmp_exporter模块,不存储SNMP认证信息。

你的Cisco设备能正常采集,是因为默认的if_mib模块使用的社区字符串就是public,刚好匹配设备配置;而Palo Alto用了自定义社区字符串,现有配置里没有对应模块,导致采集失败。

具体解决步骤

1. 编辑snmp_exporter的snmp.yml,新增Palo Alto专用模块

找到snmp_exporter的配置文件(通常在/etc/snmp_exporter/snmp.yml或程序同目录下),添加一个针对Palo Alto的模块,指定它的社区字符串:

# 在snmp.yml的modules部分新增
modules:
  # 保留原有if_mib模块
  if_mib:
    walk:
      - 1.3.6.1.2.1.2
    version: 2
    community: public
  # 新增Palo Alto模块
  palo_alto_mib:
    walk:
      - 1.3.6.1.2.1.2  # 先采集接口基本数据,可按需扩展Palo Alto专用OID
    version: 2  # 确认Palo Alto的SNMP版本,v2c用这个,v3需修改认证配置
    community: "你的Palo Alto社区字符串"  # 替换成实际的社区字符串

2. 修改prometheus.yml,为不同设备分配对应模块

有两种实现方式:

方式一:拆分两个scrape job,分别对应不同设备和模块

scrape_configs:
  # 原有prometheus job保留
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  # Cisco设备专用job,使用默认if_mib模块
  - job_name: 'snmp_cisco'
    static_configs:
    - targets: ['10.10.10.254']  # Cisco设备IP
    metrics_path: /snmp
    params:
      module: [if_mib]
    relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: localhost:9116

  # Palo Alto设备专用job,使用自定义模块
  - job_name: 'snmp_palo_alto'
    static_configs:
    - targets: ['10.10.10.244']  # Palo Alto设备IP
    metrics_path: /snmp
    params:
      module: [palo_alto_mib]
    relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: localhost:9116

方式二:用relabel动态分配模块(适合设备较多的场景)

给目标IP添加标签,再根据标签匹配对应模块:

scrape_configs:
  # 原有prometheus job保留
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: 'snmp_exporter'
    static_configs:
    - targets: ['10.10.10.254']
      labels:
        snmp_module: if_mib
    - targets: ['10.10.10.244']
      labels:
        snmp_module: palo_alto_mib
    metrics_path: /snmp
    relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - source_labels: [snmp_module]
      target_label: __param_module
    - target_label: __address__
      replacement: localhost:9116

3. 测试与验证

  • 手动测试snmp_exporter是否能获取Palo Alto数据:
    用curl或浏览器访问 http://localhost:9116/snmp?target=10.10.10.244&module=palo_alto_mib,如果能返回metrics数据,说明模块配置正确。
  • 重启snmp_exporter和Prometheus服务,等待1-2分钟后查看Prometheus的Targets页面,确认Palo Alto设备状态为up。

内容的提问来源于stack exchange,提问作者Super MaxLv4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:55:46