共计 1348 个字符,预计需要花费 4 分钟才能阅读完成。
公司新上了一个新的数据中心,需要用 zabbix 监控华三交换机的网络流量。
配好 snmp 协议之后,正常都能识别,但慢慢的发现一个问题,电信的接口经常出现少数据的情况,但联通和铁通都没有什么问题。
zabbix 绘的图断断续续的,有时更神奇的是,流量突然下降,下降的还很离谱,从 500 多 Mbps 一下掉到 40 多 Mbps,一度以为是交换机返回的数据有问题了。
后来在 zabbix 机器上抓包,发现数据包没有丢,数据也没有什么异常,不过抓的包里面,有个 counter32 引起注意。
然后仔细阅读 snmp 的文档,发现 snmp 协议返回的 ifInOctets 和 ifOutOctets 都是流量的总量,而我们都是取两次的差值,然后除以取样的间隔时间,得出的平均值。
而 counter32 的数据类型计数的最大值是 2 的 32 次方减 1,当超过 4G 的时候,计数器就会清零。
后来分析 zabbix 的 snmp interface 的模板,发现 zabbix 取样时间是 1 分钟,在我们由于流量大,很快就清零了,并且有时计数清零之后新增的数值,比上一次的计数还要大,zabbix 还以为没清过零,直接相减除以了时间间隔,就造成了“网络流量陡降的假象”。
找到原因之后,剩下的就好办了,我们需要的是,使用 counter64 的 oid 数据。
在 zabbix 中导出 template snmp interfaces 模板,然后修改一下名字,重新导入。修改这个新的模板:
在“探索规则”中找到“项目原型”,点击“Incoming traffic on interface {#SNMPVALUE}”,
1. 将其“键值”中的 ifInOctets[{#SNMPVALUE}] 修改为 ifHCInOctets[{#SNMPVALUE}]
2. 将“SNMP OID”中的 IF-MIB::ifInOctets.{#SNMPINDEX} 修改为 IF-MIB::ifHCInOctets.{#SNMPINDEX}
同样:“项目原型”中的“Outgoing traffic on interface {#SNMPVALUE}”也做类似修改。
也就是将 ifInOctets 和 ifOutOctets 替换为 ifHCInOctets 和 ifHCOutOctets。
然后把主机删除,重新添加主机,这次一切都清爽了,绘的图都是连续的,也没再出现陡增陡降的问题。
Zabbix 之 SNMP 配置 http://www.linuxidc.com/Linux/2013-09/90263.htm
SNMP 实现网络动态分析 http://www.linuxidc.com/Linux/2013-04/83514.htm
SNMP 实现网络状态监控 http://www.linuxidc.com/Linux/2013-04/83187.htm
CentOS 6.3 下搭建 SNMP 测试环境 http://www.linuxidc.com/Linux/2013-02/79233.htm
Linux (Ubuntu/CentOS) SNMP 配置 http://www.linuxidc.com/Linux/2012-12/76837.htm
开启并配置 Citrix Xenserver 的 SNMP 服务 http://www.linuxidc.com/Linux/2013-01/78487.htm