打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用SNMP模仿Zabbix读取设备接口流量

前文通过SNMP统计网络资产介绍了SNMPWALK的安装及简单使用。SNMP的功能还是十分强大的,几乎所有设备上支持查看的信息通过SNMP协议都能读取到,甚至有些命令中不能查看的SNMP协议也能读取。今天就再简单介绍一下SNMP的其他用法。

vFW和很多V7设备一样,不支持直接读取接口的瞬时速率,只有过去300秒的速率统计,对于精度要求比较高的用户,肯定是不满足要求的。

但是接口的瞬时速率也就是对接口的总报文数进行微分,比如我们可以5秒钟采集一次总报文数,然后用后一个数值减去前一个数值,再除以5,就可以得到这5秒内平均的bytes/s,也就是Bps了。

上次介绍到数据可以用snmpwalk来进行读取,首先找到出入方向总报文数所对应的MIB节点。查看接口报文总数:

查到接口入方向报文总数MIB节点值为IF-MIB::ifInOctets.17出方向报文总数MIB节点值为IF-MIB::ifOutOctets.17

然后用Shell写一段脚本,来计算接口下5秒的瞬时速率。

运行效果如下:

对脚本命令做个简单解释,方便大家进行变形。


while true

do

sleep 5

done

#循环结构,循环执行任务内容,间隔时间为5秒。



lastallin=$(tail -n 1 ifInAll.txt)

lastallout=$(tail -n 1 ifOutAll.txt)

#定义两个变量,用于读取存放于文件中的上一次的总字节数。



allout=$(snmpwalk -v 2c -c guotiejun 192.168.1.200 IF-MIB::ifOutOctets.17 |awk '{print $4}' )

allin=$(snmpwalk -v 2c -c guotiejun 192.168.1.200 IF-MIB::ifInOctets.17 |awk '{print $4}' )

#定义两个变量,用于存放通过命令读取到的当前的总字节数



inspeed1=$[allin-lastallin]

inspeed=$(expr $inspeed1 / 5)

outspeed1=$[allout-lastallout]

outspeed=$(expr $outspeed1 / 5)

#速率计算。因为循环任务的执行周期为5秒1次,所以将两个数值相减,再除以5,即得到过去5秒的平均速率。



date

#打印系统时间,标记速率对应的时间点。



echo 'lastInput  = $lastallin'

echo 'CurInput   = $allin'

echo 'CurInSpeed = $inspeed'

echo '$allin' >>ifInAll.txt

#打印入方向流量情况,并将当前的总字节数写入文件,供下次任务调用。



echo 'lastOutput = $lastallout'

echo 'CurOutput  = $allout'

echo 'CurOutSpeed= $outspeed'

echo '$allout' >>ifOutAll.txt

#打印出方向流量情况,并将当前的总字节数写入文件,供下次任务调用。


那怎么做成图表呢?做成图表主要需要两个数据,一个是时间轴,还有一个是速率值。所以要想办法把数据导到一个文件中,并按照“时间 出方向速率 入方向速率”进行排列。


time=$(date +%T)

date=$(date +%Y%m%d)

#增加两个变量,分别记录日期和时间(24小时制)。

echo '$date $time $outspeed $inspeed' >> speedRcd.txt

#将结果按照“日期 时间 出方向速率 入方向速率”的形式输出到speedRcd.txt文件中。


运行后文件记录数据如下:

如果我们想让他一直记录,但又不影响前台操作,则可以使用&使命令让脚本在后台运行,执行后会显示进程ID;此时可以使用ps命令查看进程状态使用kill命令可以结束脚本运行

这个时候离用图表显示就差一步了。那就是导出speedRcd.txt,然后导入到Excel中,制成图表即可。(PS:如果你熟悉js,就可以在浏览器中直接以图表进行动态展示了,就像Zabbix那样

选中数据,插入图表,选择折线图样式

得到的表格如下,是不是和Zabbix差不多?

下图为Zabbix上的监控图表截图:

最终代码如下:

这种通过计算得到最终结果的方法实际还是用的比较少,如果是像CPU、内存这类可以直接读取数据的监控项,大段的计算就省去了。水平有限,代码不够简洁,欢迎大家拍砖!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
三层以太网交换机SNMP代理软件的设计与实现
分布式系统监视zabbix讲解九之使用snmp监控windows
windump常用参数
【Zabbix】zabbix snmp异常超时、不稳定、时通时断:Timeout while connecting...
SNMP从入门到开发:基础篇
深入浅出SNMP及其应用实例分析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服