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

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负载均衡模式配置实用吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/674320.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

API开放平台项目细节

1.前端如何区分用户权限的,是管理员还是普通用户? Ant Design Pro内置了一套权限管理机制,通过access.ts页面实现。它会去取到全局初始化状态(InitialState)的loginUser,根据当前登录用户判断是否有管理员…

建设智慧校园,需要哪些步骤?

智慧校园作为校园信息化的载体,涵盖了校园事务的各个方面。由于涉及系统过多,构建一个数字化校园是一个复杂的过程,因为智慧校园不是单独存在的,而是需要作为数据中心与业务枢纽连接学校的各个业务系统。 因此,有步骤&…

C# MQTTNET 服务端+客户端 实现 源码示例

目录 1.演示效果 2.源码下载 3.服务端介绍 4.客户端介绍 1.演示效果 2.源码下载 下载地址:https://download.csdn.net/download/rotion135/89385802 3.服务端介绍 服务端用的控制台程序进行设计,实际使用可以套一层Windows服务的皮,进…

015、列表_应用场景

1.消息队列 如图所示,Redis的lpush+brpop命令组合即可实现阻塞队列,生产者客户端使用lrpush从列表左侧插入元素,多个消费者客户端使用brpop命令阻塞式的“抢”列表尾部的元素,多个客户端保证了消费的负载均衡和高可用性。 2.文章列表 每个用户有属于自己的文章列表,现…

CSAPP Lab07——Malloc Lab完成思路

等不到天黑 烟火不会太完美 回忆烧成灰 还是等不到结尾 ——她说 完整代码见:CSAPP/malloclab-handout at main SnowLegend-star/CSAPP (github.com) Malloc Lab 按照惯例,我先是上来就把mm.c编译了一番,结果产生如下报错。搜索过后看样子应…

Matlab进阶绘图第58期—带填充纹理的横向堆叠图

带填充纹理的横向堆叠图是通过在原始横向堆叠图的基础上添加不同的纹理得到的,可以很好地解决由于颜色区分不够而导致的对象识别困难问题。 由于Matlab中未收录提供填充纹理选项,因此需要大家自行设法解决。 本文使用hatchfill2工具(Kesh I…

一些智能音箱类的软硬件方案

主要参考资料 Rabbit R1: https://www.rabbit.tech/rabbit-r1 mediatek-helio-p35: https://www.mediatek.com/products/smartphones-2/mediatek-helio-p35 NSdisplay: https://www.nsdisplay.com/ai-holobox-mini/ai-holobox-mini.html RK3566: https://www.rock-chips.com/a/…

I2C总线上拉电阻计算

I2C 总线上拉电阻计算 I2C接口的上拉电阻计算是一个常见问题。本文介绍如何使用简单的方程式进行计算。 1 介绍 I2C通信标准是当今电子系统中应用最广泛的芯片间通信标准。它是一种漏极开路/集电极开路通信标准,这意味着可以连接具有不同电源轨的集成电路 &#…

java jar包后台运行方式

在实际工作中,java开发的spring boot等通过jar包部署需要一直运行的程序部署到服务器上时,都希望后台运行,方便管理程序服务、防止被误操作关闭,本文结合自己工作经验讲解jar包后台运行的两种方式,分别是按操作系统支持…

LeetCode 两两交换链表中的节点

原题链接24. 两两交换链表中的节点 - 力扣(LeetCode) 思路,请看图片的过程模拟,这里添加了一个哨兵节点0,目的是为了方便操作,得到指向1节点的指针。 class Solution {public:ListNode* swapPairs(ListNod…

17、matlab实现均值滤波、中值滤波、Butterworth滤波和线性相位FIR滤波

1、创建信号 1)创建正余弦信号、噪声信号和混合信号 原始正余弦信号公式:Signal1 sin(2*pi*20* t) sin(2*pi*40* t) sin(2*pi*60* t) 高斯分布的白噪声:NoiseGauss [randn(1,2000)] 均匀分布的白噪声:[rand(1,2000)] 正余弦…

AD软件底层丝印反转

快捷键VB,翻转后底部视图所有显示就正常了,当底层确认之后再按VB就回到正常状态。 否则你就看到一个镜像的丝印。 快捷键VB后 注意,经过VB反转BOTTOM后TOP层的丝印变镜像翻转了。 设计完毕后调整过来即可。

物质的量质量,它们可不是一个概念

物质的量&质量,它们可不是一个概念。 物质的量&质量 乍一听物质的量,还以为是和质量有什么关系,是不是?其实物质的量和质量没什么直接的联系。 物质的量是国际单位制中7个基本物理量之一,其符号为n&#xf…

【JAVA SE】抽象类和接口

✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:JAVA 个人主页:Celias blog~ 目录 引言 一、抽象类 1.1 抽象类的定义 1.2 抽象方法 1.3 抽象…

QT等比例缩放图片

1、这里使用QLabe控件显示图片,如下: label->setPixmap(QPixmap::fromImage(image_2)); 以上是直接原始大小来显示QImage image_2图片。 label->setAlignment(Qt::AlignCenter); 以上代码,是将显示的图片居中展示,默认…

使用git将本地文件上传到仓库+git常用指令

个人主页:Yang-ai-cao 一个小小搬砖人~~~~~ 目录 个人主页:Yang-ai-cao 一个小小搬砖人~~~~~ 配置 基本操作 分支操作 远程仓库 标签 撤销操作 日常操作示例 进阶操作 !!!!!&#…

【python】OpenCV—Merge Image

文章目录 np.hstack / np.vstackSlicecv2.addWeighted自定义渐变式叠加cv2.bitwise_not / cv2.bitwise_and / cv2.add np.hstack / np.vstack 利用 numpy 的 hstack 和 vstack,对图片进行拼接 import cv2 import numpy as nph, w 256,256 img1 cv2.resize(cv2.i…

企业内业务系统与Activiti流程引擎的结合(十一)

摘要:前文分享了企业内部系统集成Activiti的架构和API设计,这里再介绍下 bpmn 流程图的绘制以及与 流程图与bpm后台服务代码的结合点。 一、画流程图 以使用 eclipse 画流程图为例 1. 将 Activiti BPMN 插件安装到 eclipse 插件安装成本后的效果:新建向导中出现 Activiti…

干货分享 | TSMaster 中 Hex 文件编辑器使用详细教程

TSMaster 软件的 Hex 文件编辑器提供了文件处理的功能,这一特性让使用 TSMaster 软件的用户可以更便捷地对 Hex、bin、mot、s19 和 tsbinary 类型的文件进行处理。 本文重点讲述 TSMaster 中 Hex 文件编辑器的使用方法,该编辑器能实现将现有的 Hex、bin、…

Python 的 os 和 shutil 模块

大家好,在日常的编程工作中,处理文件和目录是一个非常常见的任务。无论是创建、复制、移动还是删除文件,这些操作都需要我们与文件系统进行交互。在 Python 中,有两个强大的模块可以帮助我们轻松地进行文件和目录操作,…