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

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

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


1、读取设备接口流量


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

 

1677212717302.jpg


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

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


1677212733944.jpg

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

 

1677212747090.jpg

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

 

1677212752259.jpg

运行效果如下:

 

1677212763809.jpg

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

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文件中。


运行结果如下:


1677212883377.jpg

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

 

1677212897970.jpg

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

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

 

1677212928610.jpg

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

 

1677212940337.jpg

下图为zabbix监控的截图:

 

1677212945373.jpg

最终代码如下:

 

1677212958116.jpg


相关文章
|
存储 监控 Linux
zabbix使用snmp监控Linux主机(二十)
使用snmp监控Linux主机 1.snmp协议介绍 SNMP(简单网络管理协议)也是应用层的一种协议,默认端口号为161,我们平时监控Linux主机都是安装一个agent客户端进行监控,但是有的公司还需要监控网络设备和Windows主机,这时就不得不采用snmp协议去监控设备了
586 0
zabbix使用snmp监控Linux主机(二十)
|
存储 监控 安全
Zabbix SNMP监控安装、配置与服务器实例(学习笔记六)
SNMP可以监控路由器、打印机、UPS、摄像头、服务器等。 1、安装、配置snmp  yum install net-snmp* -y # vim /etc/snmp/snmpd.
2523 0
|
9月前
|
监控 网络架构
Zabbix的snmp监控
Zabbix的snmp监控
68 0
|
11月前
|
监控 Java 应用服务中间件
【Zabbix】Zabbix JMX 接口配置
【Zabbix】Zabbix JMX 接口配置
|
11月前
|
监控 数据安全/隐私保护 网络架构
【Zabbix】Zabbix基于SNMP监控配置
【Zabbix】Zabbix基于SNMP监控配置
420 0
|
监控 Java 应用服务中间件
【Zabbix】Zabbix JMX 接口配置
Zabbix JMX 接口配置
562 0
|
监控 数据格式 XML
zabbix snmp模板通用
3.0 2018-12-11T09:01:53Z Templates Template SNMP Device Template SNMP Device Templates 总内存 4 {SNMP_COMMUNITY} 0 .
2475 0
zabbix 常用snmp oid
服务器负载: 1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1 5 minute Load: .1.3.6.1.4.1.
1165 0
|
监控 数据安全/隐私保护
Zabbix SNMP配置(学习笔记十九)
1. 概述 zabbix采集数据方式: 基于专用agent 基于SNMP,net-snmp (nms/agent架构) 基于脚本(ssh) 如果我们需要监控打印机、路由器、UPS等设备,肯定不能使用zabbix agentd,因为它们不能安装软件的,但是它们一般都支持SNMP协议,这样我可以使用SNMP来监控他们。
1325 0