Zabbix下通过SNMP监控流量数据不准确的解决方案
生产项目,故不配图
开始
依旧是一个生产项目,这个机房用zabbix作为自己的资源监控平台,该机房监控接入交换机,汇聚交换机以及核心交换机的流量情况,其中核心交换机流量超过了10Gbps/s,但该机房的zabbix显示只有400Mbps-300Mbps的流量。
排错
刚接手,我首先怀疑是交换机是不是出问题了,我调出zabbix的汇聚图形后,发现接入层交换机大多数都是没问题的,流量准确,但是汇聚和核心的流量统计都不准,会出现大起大落的情况,而且一些接入交换机也会有大起大落的情况。
后以为是内网攻击,抓包后没发现异常流量。
经过比对发现,流量正常的交换机,带宽占用都比较少,峰值基本都在150Mbps以内,并且出问题的交换机,流量负载都很大,且出问题的交换机,在交换机内查看端口流量情况都是正常的。
经过如上排查,怀疑到zabbix平台上,在笔记本上临时自建了一个zabbix,经过测试后,和机房自己的zabbix平台有着同样的问题,那么应该是zabbix平台本身的问题。
后在zabbix论坛上搜索,搜索出了 [Graphs not working over 400MB of traffic?] (https://www.zabbix.com/forum/zabbix-help/39403-graphs-not-working-over-400mb-of-traffic) 这个问题大概意思是,你需要把zabbix的SNMP模板的默认32位计数器改为64位的计数器,不然在大于400M-500M的网络上运行,显示会不准确。
在笔记本的zabbix上测试后,发现的确可以,但这篇文章并没有讲出为什么(但当时看到32位64位心里能猜出大概是什么问题了)
后续在百度上看到比较完整的解释 [使用counter64解决通过SNMP获取网络流量数据不准问题] (https://www.bilibili.com/read/cv13932601/) 和心里猜的大差不差。
操作
因为这个生产项目较大,为了防范可能的风险,故不配图。
具体操作如下:
- 点击
配置
>模板
>Template SNMP Interfaces
选择全克隆 - 编辑一下新模板名称,比如
Template SNMP Interfaces 64bit
- 点击
自动发现规则
(Discovery Rules
)(我发现这里的翻译好像不太统一,注意比对) >Network interfaces
>监控项原型
(有译项目原型
) - 分别编辑
Incoming traffic on interface { #SNMPVALUE}
和Outgoing traffic on interface { #SNMPVALUE}
键值
从原先的ifOutOctets[{ #SNMPVALUE}]
改为ifHCOutOctets[{ #SNMPVALUE}]
;SNMP OID
从原先的IF-MIB::ifOutOctets.{ #SNMPINDEX}
改为IF-MIB::ifHCOutOctets.{ #SNMPINDEX}
,另一边同理。- 重新添加主机
完事