目录
[监控]zabbix +使用SNMP模板自动发现网络接口并绘图+修复该模板graphs绘图时流量断图故障 目录一、背景二、本文主题三、配置步骤
四、补充知识
五、参考链接六、版权声明七、广告[莽哥鲜果]
一、背景
当公司达到一定规模时,公司的网络也随之变得相对复杂。
这时,企业IT管理员会选择单独搭建一套网络监控系统 ,通过这套监控系统将网络设备统一监控,统一管理,以实现他们对整个网络进行实时的跟踪,实时或历史故障能精准定位的业务需求。
虽然现在所有的网络硬件设备都自带简单系统监控,但它们通常有这些缺点:
1、硬件网络设备的监控功非常简单,无法满足管理员的业务需求(监控功能,本身就不是网络设备的主要功能)
2、硬件监控颗粒度通常太粗,不利于判断故障原因(监控数据,通常是获取5分钟的平均值,并展示在前端)
3、每个设备都是单独的一套监控系统和界面,非常不利于网络管理。
4、不支持故障实时告警,或者告警方式单一。
综上,在企业中部署一套单独的监控系统是非常有必要的。
目前在传统的中小型企业中,开源的监控系统zabbix是最受欢迎的。因为开源,所以它有丰富多样的现成的监控模板被共享出来,而这些模板多到能满足大部分公司对网络监控的需求,进而使得zabbix显得更加简单易用。
二、本文主题
一个传统公司网络里,企业IT管理员首先会接触到交换机、路由器,服务器等网络硬件设备,其次就是个人电脑,手机等终端硬件设备。所以企业IT管理员在添加监控时,首先就要对这些网络硬件设备进行监控,在特别的场景中,企业才对终端设备进行监控。
硬件网络设备出厂时都会自支持SNMP(简单网络管理协议),因此 zabbix-server 通常是通过SNMP 来监控它们的。
而在企业中, 网络硬件设备网络接口(网卡)的实时进出流量,是管理员特别在意的一个监控对象。
所以本文主题会解决如下问题
讲解zabbix-server如何通过特定的SNMP模板实现网络接口的自动发现和流量监控
修复特定条件下该SNMP模板在Graphs显示接口流量会出现断层的问题
三、配置步骤
如何安装zabbix5.0
详细Centos7 X86安装zabbix 5.0的教程请查看下面的链接:
zabbix 5.0 +postgresql(简单优化)+TimescaleDB+中文安装实战教程
从zabbix官方共享网站里下载SNMP Interfaces discovery 监控模板
官方收录的各种模板(Templates),模块(modules)都放在share.zabbix.com这里,所以zabbix系统管理员可以优先在这里找适合自己的模板,并根据自己的实际需求稍微修改应用即可。
若是需求实在特别,那管理员也只好自己做模板,其后可以考虑将自己做好的模板上传到share.zabbix.com以供后来者下载使用。
Zabbix官方发行的SNMP自动发现网络接口的模板下载方式:
复制下载连接(https://share.zabbix.com/official-templates/snmp-devices/snmp-interfaces-discovery)到浏览器中,点击download,即可自动下载,然后得到Template SNMP Interfaces_3.0.0.xml 这个文件。
修改SNMP Interfaces discovery模板里的过时SNMP OID参数
使用记事本打开,使用Ctrl+H进行下面的替换
Template SNMP Interfaces----->Template SNMP Interfaces NEW
#目的:防止模板导入时与原来模板名称冲突,导致导入不成功ifInOctets----->ifHCInOctets
#目的:官方提供的模板里 ,统计接口流量的方式是采集ifInOctets 这个SNMP OID参数,该数值类型大小是32位,最大计数2^32, 但这个在实际生产环境会出现数值溢出。例如在60s的统计时间里,接口流量大于71Mbit/s时就一定会导致zabbix graphs绘图时出现图像断层现象。因此需要将该数值修改成64位ifHCInOctets,防止zabbix graphs绘图时图像断层ifOutOctets----->ifHCOutOctets
#目的:官方提供的模板里 ,是采集ifOutOctets 这个SNMP OID参数,该数值类型大小是32位,最大计数2^32, 但这个在实际生产环境会出现数值溢出。例如在60s的统计时间里,接口流量大于71Mbit/s时就一定会导致zabbix graphs绘图时出现图像断层现象。因此需要将该数值修改成64位ifHCInOctets,防止zabbix graphs绘图时图像断层将修改后的模板导入zabbix Templates
通过web登陆zabbix-server,然后导入和查看zabbix模板
导入步骤
#Configuration-->Tempate->Import->选择要导入的xml文件->点击导入查看导入结果
#Configuration-->Tempate->Filter->name输入NEW->Apply在zabbix上添加硬件设备的监控 ,并应用Template SNMP Interfaces NEW模板
添加硬件设备的监控
Configuration-->Hosts->Create host->输入hostname,interface[被监控的接口+监控方式]
#这里假设192.168.1.1就是我们要监控的的网络硬件设备
应用Template SNMP Interfaces NEW模板,并设置内置的宏参数{$SNMP_COMMUNITY}
#{$SNMP_COMMUNITY} 是zabbix 里内置一个参数,填写的数值,会被替换成对应设备的 SNMP COMMUNITY
#网络硬件上的SNMP功能一般是关闭的,并且SNMP COMMUNITY的默认参数是Public, 通常需要管理员到设备上启用并修改 SNMP COMMUNITY。
常见硬件设备SNMP 配置实例
CISCO网络设备snmp设置
snmp-server community <my_snmp_community> RO
#请将<my_snmp_community> 替换成你自己的strings
HUAWEI网络设备snmp设置
snmp-agent
snmp-agent community read cipher <my_snmp_community>
snmp-agent sys-info version v2c v3
#请将<my_snmp_community> 替换成你自己的strings
最终实例效果
若一切配置正常,大概1-5分钟内,在被监控的hosts条目里可以看到SNMP亮绿色,这表示监控正常
#如何查看host监控状态:
#在Configuration-->Hosts->Filter -->输入关键词->Applay

2.不久,你就可以通过 Monitoring 查看到网络设备的接口流量
#注意下面是zabbix 5.0 的 hosts graphs展示方式
#zabbix5.0 graphs显示问题
#1、zabbix 5.0 与4.0 有极大的不同,5.0是无法从菜单项找到graphs,需从Hosts里找graphs
#2、graphs显示的图形,目前最大显示50
##若要查看50以后的图形,需要通过Filter->Graphs里选择想展示的图形,若选的超过50个,也只显示前50。


四、补充知识
在SNMP 中,应该使用那种接口计数器?
答:SNMP 里管理接口的表有俩种,分别是ifTable ,ifXTable (RFC1213/RFC2233 里可以查到详细内容)。
ifTable 为如何统计接口状态提供了标准,是使用32位数据格式来做计数器,而ifXTable 是后来升级版本,是使用64位数据格式来做计数器, 具有高容量 high capacity(简称HC)计数器
| 管理接口表 | tableb表里规定的相关参数 |
|---|---|
| ifTable (32) | inbound and outbound octets (ifInOctets/ ifOutOctets) packets (ifInUcastPkts/ ifOutUcastPkts,ifInNUcastPkts/ ifOutNUcastPkts) errors discards |
| ifXTable (64) | inbound and outbound octets( ifHCInOctets/ ifHCOutOctets)packets (ifHCInUcastPkts/ ifHCOutUcastPkts ) |
zabbix如何通过SNMP MIB中的接口(ifInOctets/ ifHCInOctets)计数器值,得出网卡速率的?
答:以ifHCInOctets举例,计算方式如下:

参数解释:
| 参数 | 描述 |
|---|---|
| ifInOctetsCurrent | 当前获取的计数器数值(得到的数值是byte,转换成bits时,是需要乘以8) |
| ifInOctetsPrevious | 上一次获取的计数器数值(得到的数值是byte,转换成bits时,是需要乘以8) |
| pollingSeconds | 俩次获取数值的间隔(zabbix 时间间隔一般是60s) |
实例如下:
# snmpwalk 192.168.1.1 -v 2c -c <my_snmp_community> IF-MIB::ifHCOutOctets.10
IF-MIB::ifHCOutOctets.10 = Counter64: 305519785681563
# snmpwalk 192.168.1.1 -v 2c -c <my_snmp_community> IF-MIB::ifHCOutOctets.10
IF-MIB::ifHCOutOctets.10 = Counter64: 305520098723404
#根据计算方式
#(ifInOctetsCurrent - ifInOctetsPrevious) * 8 / pollingSeconds
#通过测试cisco设备的ifHCOutOctets ,得出snmp 俩次采集最小时间间隔是10S =pollingseconds
#313041841 / 10*8=250433472.8, 正好是接口实时速率250M
使用SNMP 的ifInOctets计数器值计算,zabbix graphs绘图时为什么会断层?
答,因为snmp计数器的机制,如果溢出了,则清0重新记录,也就是说当接口流量过大时,在俩次取值间隔期间,计数器已经清零过一次或者n次,会出现绘图异常。
具体情况如下:
| 情况1 | 某个特定情况下,后一次取得数值刚好比前一次取得数值大或者相等 | 数值经过计算,就会导致zabbix graphs绘图出现断崖式断层,也就是“网络流量徒降的假象” |
|---|---|---|
| 情况2 | 某个特定情况下,后一次取得数值比前一次的还小,俩数值当成正常数值想减是负数, 数值经过计算,产生的是一个负值 | 而zabbix graphs无法理解这个参数,丢会丢弃这个数值,导致图像上该时间刻度上无数据,一眼看过去还以为是设备有问题(这是个人观察结论) |
下面是详细的推算:
ifInOctets是32-bit无符整数 ,假设采集时间间隔是60s(zabbix的snmp取样间隔时间默认设置是60s)
使用上面的计算速率的计算公式
(ifInOctetsCurrent - ifInOctetsPrevious) * 8 / pollingSeconds,
可得

也就是说一分钟内可以统计的最大速率是71M/bits,当超出71M/bits 时流量时图形显示就会出现异常,而现在我们的网卡已经是千兆网卡,所以要使用ifHCInOctets 64-bit计数器。
同样的计算公式可得:

五、参考链接
https://mp.weixin.qq.com/s/99AMRARrD7dzvWK31Jo47Q
https://share.zabbix.com/
https://share.zabbix.com/official-templates/snmp-devices/snmp-interfaces-discovery
https://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/26007-faq-snmpcounter.html
https://www.ietf.org/rfc/rfc1213.txt
https://www.ietf.org/rfc/rfc2233.txt
http://www.linuxidc.com/Linux/2014-12/110547.htm
https://blog.csdn.net/buchao1907/article/details/100954971
https://baike.baidu.com/item/%E7%AE%80%E5%8D%95%E7%BD%91%E7%BB%9C%E7%AE%A1%E7%90%86%E5%8D%8F%E8%AE%AE
六、版权声明
本文章使用 署名-非商业性使用 4.0 国际(Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) )
您可以自由地:
共享 — 在任何媒介以任何形式复制、发行本作品
演绎 — 修改、转换或以本作品为基础进行创作
只要你遵守许可协议条款,许可人就无法收回你的这些权利。
惟须遵守下列条件:
署名 — 您必须给出适当的署名,提供指向本许可协议的链接,同时标明是否(对原始作品)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示许可人为您或您的使用背书。
非商业性使用 — 您不得将本作品用于商业目的。
没有附加限制 — 您不得适用法律术语或者 技术措施 从而限制其他人做许可协议允许的事情。
注意以下是广告
七、广告[莽哥鲜果]
邛崃、浦江位于美丽的四川省成都市的西南,这里有大片的果树和茶树,朴实的果农和茶农们,日出而作,日落而息,让这里的鲜果香,茶花美。
莽哥鲜果,都是产自这里的农家果园,为了保证鲜果的口感,鲜果都是从果园现摘,然后通过精心精心的分拣挑选并快递运输(不超过3天),最终呈现在客户的面前。
莽哥鲜果,为了确保时鲜水果的产品质量,目前只在每年8月-次年3月提供当季鲜果服务。
当季是红心猕猴桃成熟的季节,为了助农,特以限时的助农促销价,欢迎各位品尝。

备注:
如何下单/如何反馈:请直接向公众号发消息(收件信息+对应规格)即可。
红心猕猴桃是直接从果园摘下来的,果子都是硬的,需要放置1周左右才能吃。
收到货后,可以在箱子里放置2-3个苹果,加速猕猴桃变软的过程。




