模拟zabbix通过snmp实现接口流量监控

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

1、读取设备接口流量

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监控的截图:

 

最终代码如下:

 

欢迎访问guotiejun.com获取更多信息,个人黄页地址为i.guotiejun.com。

也可以扫码关注公众号“铁军哥”,感谢您的支持!

我还拉个微信群吧,方便和粉丝们一起交流网络、安全、云计算之类的问题,也可以关注公众号后选择“补充能量”→“加入交流群”获取最新加群二维码。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值