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

news/2024/10/18 10:13:52/

3287f8b64d7086bbfed050b73382ec8c.gif

正文共:666 字 11 图,预估阅读时间:1 分钟

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

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

a1ec7749c876f3e063397608ab959690.png

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

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

16af4840c3b9310be73526376cc721ab.png

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

3a889bd6ba1f2126f54ec6c228ac0578.png

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

609e3403c6ee095a8f766d98997041b2.png

运行效果如下:

3123ca2308010674313e889fbe4ab9b6.png

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

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

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

ede54816f88960d999b52445eb67f17b.png

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

81a224f91e485175c49d89f9fc778a2d.png

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

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

bc8de9c2440a3b059047d9f52de87a3b.png

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

2c2403b187b01f1ec7e3d0de33374dc8.png

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

28de63233024983d40cb19ed5df88b05.png

最终代码如下:

83910c1868ce55f37a9db7196795e326.png

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

456a539eae1ddf04037231cd9cb6d594.gif

长按二维码
关注我们吧

17297bdfdf75fa2b70b5e84582fc98fe.jpeg

879a2eaeadc172613ace4445871b987c.png

通过SNMP统计网络资产

H3C防火墙RBM主备模式+OSPF方案验证

H3C防火墙RBM主备模式+静态路由方案验证

如何通过iptables配置URL过滤白名单?

如何通过iptables配置URL过滤黑名单?

怎么把银河麒麟系统装进U盘?

使用storcli工具配置RAID,收藏这一篇就够了

用WireShark抓包解决StrongSwan和H3C对接失败的问题

软考里面竟然开始考H3C CAS了,突击补一下课

VRRP负载均衡模式配置实用吗?


http://www.ppmy.cn/news/1466234.html

相关文章

大模型对齐方法笔记三:不需要参考模型的对齐方法ORPO和SimPO

ORPO ORPO出自2024年3月的论文《ORPO: Monolithic Preference Optimization without Reference Model》,其将对齐融入到SFT过程中减少对齐成本。 论文先指出在SFT过程中,增加模型想要输出的概率的同时不经意地增加了不想要输出的概率(如下…

【Vue】Table组件动态最大高度

在使用Vue框架开发项目时,经常会遇到需要调整组件尺寸以适应不同屏幕大小或窗口尺寸的需求。本文将介绍如何为el-table组件动态设置最大高度,以实现响应式布局。 首先,我们需要在模板中为el-table组件添加一个max-height属性,并将…

国产可视化爬虫助力AI大模型训练:精准爬取汉语词典

大语言模型,可以生成流畅对话的会话聊天机器人、通畅起草文章的内容生成器。在炫酷技术的背后,数据、算力、算法,被视作生成式AI的三个核心要素。由此可见,高质量的训练数据对于AI算法的准确性至关重要。 如何获得高质量的训练数…

Gorm入门

Gorm入门 声明:本博客为看李文周大佬gorm入门视频笔记 【GORM简明教程】关于GORM你看这一个就够了_哔哩哔哩_bilibili 我的代码仓库:6月/Gorm 沉着冷静/2023 - 码云 - 开源中国 (gitee.com) gorm介绍 安装库 go get -u github.com/jinzhu/gormgo ge…

车联网安全入门——ICSim模拟器使用

文章目录 车联网安全入门——ISCim模拟器使用介绍主要特点:使用场景: 安装使用捕获can流量candumpcansnifferwiresharkSavvyCAN主要特点:使用场景: 重放can报文cansendSavvyCAN 总结 车联网安全入门——ISCim模拟器使用 &#x1…

新浪测试社招要个25K,第一次面大厂挂了

一面 1、讲下被测系统和你负责测试的模块功能? 2、为什么选择这个测试框架,这个测试框架有什么优缺点? 3、测试文件的目录,包含哪些包,这些之间是怎么调用的? 4、UI自动化和接口自动化都是怎么做的&…

常见的MySQL语句类型及其基础用法

MySQL语句主要用于在MySQL数据库管理系统中执行各种操作,包括数据的检索、插入、更新、删除以及数据库结构的管理。下面是一些常见的MySQL语句类型及其基础用法详解: 1. SELECT 语句 - 查询数据 最基本的数据检索语句,用于从数据库中选取数…

重学java 55. 集合 Set接口

我救自己万万次,铮铮劲草,绝不动摇 —— 24.6.2 一、Set集合介绍 Set和Map密切相关的 Map的遍历需要先变成单列集合,只能变成set集合 二、HashSet集合的介绍和使用 1.概述 HashSet是Set接口的实现类 2.特点 a、元素唯一 b、元素无序 c、无索引…