如何通过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
相关产品推荐
相关产品推荐

