Telegraf无法从Arista MIB获取完整路由表统计信息问题咨询
问题根因
Telegraf inputs.snmp 插件默认不会自动解析SNMP表的索引字段作为标签,也不会自动加载MIB中的枚举值做文本映射。如果直接以单OID形式采集aristaFIBStatsTotalRoutesForRouteType,插件无法识别该指标属于多索引表项,会把所有不同维度的数值全部识别为同名指标,丢失IP版本、路由协议类型两个关键上下文维度。
配置步骤
- 前置准备:将
ARISTA-FIB-STATS-MIB和其依赖的IANA-RTPROTO-MIB两个MIB文件放到Telegraf的MIB加载路径下,默认路径为/usr/share/snmp/mibs,也可以在插件配置中通过path参数指定自定义MIB目录,确保Telegraf进程对MIB文件有读权限。 - 修改SNMP插件配置,以表采集模式替代单OID采集,显式将索引字段标记为标签,配置示例如下:
[[inputs.snmp]] # 替换为实际的Arista设备IP列表 agents = ["10.45.100.20"] version = 2 # 替换为实际的SNMP读团体字 community = "pub" # 若使用自定义MIB目录,取消注释并填写对应路径 # path = ["/etc/telegraf/snmp/mibs"] # Telegraf 1.20+版本开启后可自动解析MIB枚举值,无需手动写映射 translate = true [[inputs.snmp.table]] name = "arista_fib_stats" oid = "ARISTA-FIB-STATS-MIB::aristaFIBStatsEntry" # 将IP版本索引标记为标签 [[inputs.snmp.table.field]] oid = "ARISTA-FIB-STATS-MIB::aristaFIBStatsIPVersion" is_tag = true # 若不开启translate,可手动配置枚举映射 # [inputs.snmp.table.field.conversion] # 1 = "ipv4" # 2 = "ipv6" # 将路由协议类型索引标记为标签 [[inputs.snmp.table.field]] oid = "ARISTA-FIB-STATS-MIB::aristaFIBStatsRouteType" is_tag = true # 若不开启translate,可手动配置所需的协议枚举映射 # [inputs.snmp.table.field.conversion] # 1 = "other" # 2 = "local" # 3 = "connected" # 4 = "static" # 11 = "ospf" # 14 = "bgp" # 50 = "attached" # 采集路由计数指标 [[inputs.snmp.table.field]] oid = "ARISTA-FIB-STATS-MIB::aristaFIBStatsTotalRoutesForRouteType"
- 删除原有配置中单独采集
aristaFIBStatsTotalRoutesForRouteType单OID的规则,避免生成无维度的脏指标。
配置校验
执行以下命令单次运行SNMP插件,直接查看采集结果:
telegraf --test --config /etc/telegraf/telegraf.conf --input-filter snmp
配置生效后返回的指标会自动携带aristaFIBStatsIPVersion、aristaFIBStatsRouteType两个标签,示例如下:
arista_fib_stats,agent_host=10.45.100.20,aristaFIBStatsIPVersion=ipv4,aristaFIBStatsRouteType=bgp,host=nw01.ny5 aristaFIBStatsTotalRoutesForRouteType=1623i 1654976575000000000 arista_fib_stats,agent_host=10.45.100.20,aristaFIBStatsIPVersion=ipv4,aristaFIBStatsRouteType=connected,host=nw01.ny5 aristaFIBStatsTotalRoutesForRouteType=8i 1654976575000000000
注意事项
- 若开启
translate = true后枚举值未正常转换,优先检查MIB文件是否完整、依赖是否缺失,可通过snmpwalk -M +/your/mib/path命令手动验证MIB是否能正常加载解析。 - 所有属于SNMP表的多维度指标,都必须通过
[[inputs.snmp.table]]块配置采集,直接用单OID采集必然会丢失索引维度。 - 枚举映射只需要配置自己实际用到的协议类型即可,不需要把IANA定义的全量协议类型都写上。
内容的提问来源于stack exchange,提问作者flyerhawk
相关产品推荐
相关产品推荐

