暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[监控]zabbix +使用SNMP模板自动发现网络接口并绘图+修复该模板graphs绘图时流量断图故障

莽哥科技 2020-08-09
4547

目录

[监控]zabbix +使用SNMP模板自动发现网络接口并绘图+修复该模板graphs绘图时流量断图故障 目录一、背景二、本文主题三、配置步骤

如何安装zabbix5.0
从zabbix官方共享网站里下载SNMP Interfaces discovery  监控模板
修改SNMP Interfaces discovery模板里的过时SNMP OID参数
将修改后的模板导入zabbix Templates
在zabbix上添加硬件设备的监控 ,并应用Template SNMP Interfaces NEW模板
最终实例效果

四、补充知识

在SNMP 中,应该使用那种接口计数器?
zabbix如何通过SNMP MIB中的接口(ifInOctets/ ifHCInOctets)计数器值,得出网卡速率的?
使用SNMP 的ifInOctets计数器值计算,zabbix graphs绘图时为什么会断层?

五、参考链接六、版权声明七、广告[莽哥鲜果]




一、背景

当公司达到一定规模时,公司的网络也随之变得相对复杂。

这时,企业IT管理员会选择单独搭建一套网络监控系统 ,通过这套监控系统将网络设备统一监控,统一管理,以实现他们对整个网络进行实时的跟踪,实时或历史故障能精准定位的业务需求。


虽然现在所有的网络硬件设备都自带简单系统监控,但它们通常有这些缺点:

1、硬件网络设备的监控功非常简单,无法满足管理员的业务需求(监控功能,本身就不是网络设备的主要功能)

2、硬件监控颗粒度通常太粗,不利于判断故障原因(监控数据,通常是获取5分钟的平均值,并展示在前端)

3、每个设备都是单独的一套监控系统和界面,非常不利于网络管理。

4、不支持故障实时告警,或者告警方式单一。


综上,在企业中部署一套单独的监控系统是非常有必要的。

目前在传统的中小型企业中,开源的监控系统zabbix是最受欢迎的。因为开源,所以它有丰富多样的现成的监控模板被共享出来,而这些模板多到能满足大部分公司对网络监控的需求,进而使得zabbix显得更加简单易用。


二、本文主题

一个传统公司网络里,企业IT管理员首先会接触到交换机、路由器,服务器等网络硬件设备,其次就是个人电脑,手机等终端硬件设备。所以企业IT管理员在添加监控时,首先就要对这些网络硬件设备进行监控,在特别的场景中,企业才对终端设备进行监控。

硬件网络设备出厂时都会自支持SNMP(简单网络管理协议),因此 zabbix-server 通常是通过SNMP 来监控它们的。

而在企业中, 网络硬件设备网络接口(网卡)的实时进出流量,是管理员特别在意的一个监控对象。

所以本文主题会解决如下问题

  1. 讲解zabbix-server如何通过特定的SNMP模板实现网络接口的自动发现和流量监控

  2. 修复特定条件下该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进行下面的替换

  1. Template SNMP Interfaces----->Template SNMP Interfaces NEW

#目的:防止模板导入时与原来模板名称冲突,导致导入不成功
  1. ifInOctets----->ifHCInOctets

#目的:官方提供的模板里 ,统计接口流量的方式是采集ifInOctets 这个SNMP OID参数,该数值类型大小是32位,最大计数2^32, 但这个在实际生产环境会出现数值溢出。例如在60s的统计时间里,接口流量大于71Mbit/s时就一定会导致zabbix graphs绘图时出现图像断层现象。因此需要将该数值修改成64位ifHCInOctets,防止zabbix graphs绘图时图像断层
  1. 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 配置实例

  1. CISCO网络设备snmp设置

snmp-server community <my_snmp_community> RO
#请将<my_snmp_community> 替换成你自己的strings
  1. HUAWEI网络设备snmp设置

snmp-agent
snmp-agent community read cipher <my_snmp_community>
snmp-agent sys-info version v2c v3
#请将<my_snmp_community> 替换成你自己的strings

最终实例效果

  1. 若一切配置正常,大概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. 红心猕猴桃是直接从果园摘下来的,果子都是硬的,需要放置1周左右才能吃。

  3. 收到货后,可以在箱子里放置2-3个苹果,加速猕猴桃变软的过程。




文章转载自莽哥科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论