概述
在网络运维工作中,经常遇到由于外网带宽超出,导致上网速度慢,没有监控系统时,遇到问题只能一摸黑,无法快速直观的定位问题。
过程
获取oid
根据官方查询,有以下4个OID可以查询到接口流量信息,其中含HC的对象数据位数为62位,不含HC的对象为32位。32位计数最大值约为 42.9亿(2^32 - 1)。在千兆网络中,仅需约34秒就会计满并归零(翻转)。如果采集周期大于这个时间,就会漏掉翻转数据,导致流量计算严重错误,而64位最大值约为 1.84×10^19(2^64 - 1)。在千兆网络中,需要数百年才会翻转。即使万兆网络,也需要数百年,因此基本不存在翻转问题,数据绝对准确。因此在能够使用HC对象的情况下,优先使用HC对象。
| 对象名称 | OID | 对象含义 | MIB文件 |
|---|---|---|---|
| ifInOctets | 1.3.6.1.2.1.2.2.1.10 | 该接口入方向通过的总字节数,包括分桢的数据。在管理系统的重新初始化和ifCounterDiscontinuityTime项指定的时间内,该节点的值将出现不连续的情况。 | IF-MIB |
| ifOutOctets | 1.3.6.1.2.1.2.2.1.16 | 该接口出方向通过的总字节数,包括分桢的数据。在管理系统的重新初始化和ifCounterDiscontinuityTime项指定的时间内,该节点的值将出现不连续的情况。 | IF-MIB |
| ifHCInOctets | 1.3.6.1.2.1.31.1.1.1.6 | 接口上接收到的字节总数,包括成帧的字符。该节点有64 bit,是ifInOctets的扩充。 当管理系统重新初始化或其他一些时间,该计数器的取值可能出现不连续,这也可以通过观察ifCounterDiscontinuityTime的值了解。 | IF-MIB |
| ifHCOutOctets | 1.3.6.1.2.1.31.1.1.1.10 | 接口发送的字节总数,包括成帧字符。该节点是ifOutOctets的扩充,有64 bit。 当管理系统重新初始化或其他一些时间,该计数器的取值可能出现不连续,这也可以通过观察ifCounterDiscontinuityTime的值了解。 | IF-MIB |
创建监控项
获取监控端口所对应的index值,用于确认端口最终oid。
| 对象名称 | OID | 对象含义 | MIB文件 |
|---|---|---|---|
| ifName | 1.3.6.1.2.1.31.1.1.1.1 | 由本地设备分配的接口名。该接口名可以通过设备终端命令行输入。该值可能是一个文本形式的名字,如“le0”,也可能是一个简单的端口号,如“1”。这取决于设备上对接口名的定义。 如果ifTable中的几条记录共同描述一个接口,那么这几条记录中的ifName的节点值是相同的。 注意:如果代理响应的是SNMP关于其他设备接口的查询,那么该节点的值是代理设备的本地名。如果代理设备没有本地名或者这个节点不可用,该节点没有值。 | IF-MIB |
在zabbix服务器上,通过snmpwalk获取
[root@localhost ~]# snmpwalk -Cc -v 2c -c xiaola.local 192.168.241.1 1.3.6.1.2.1.31.1.1.1.1
IF-MIB::ifName.1 = STRING: NULL0
IF-MIB::ifName.2 = STRING: InLoopBack0
IF-MIB::ifName.3 = STRING: Virtual-if0
IF-MIB::ifName.4 = STRING: 10GE0/0/0
IF-MIB::ifName.5 = STRING: 10GE0/0/1
IF-MIB::ifName.6 = STRING: GE0/0/0
IF-MIB::ifName.7 = STRING: GE0/0/1
IF-MIB::ifName.8 = STRING: GE0/0/2
IF-MIB::ifName.9 = STRING: GE0/0/3
IF-MIB::ifName.10 = STRING: GE0/0/4
IF-MIB::ifName.11 = STRING: GE0/0/5
IF-MIB::ifName.12 = STRING: GE0/0/6
IF-MIB::ifName.13 = STRING: GE0/0/7
IF-MIB::ifName.14 = STRING: GE0/0/8
IF-MIB::ifName.15 = STRING: GE0/0/9
IF-MIB::ifName.16 = STRING: Vlanif1
通过以上信息,可以得到G0/0/9口对应的索引值为15,也就可以得到具体的9口的ifHCInOctets、ifHCOutOctets对应的最终oid为以下
ifHCInOctets
1.3.6.1.2.1.31.1.1.1.6.15
ifHCOutOctets
1.3.6.1.2.1.31.1.1.1.10.15

创建预处理
“每秒更改”:(当前采集到的值 - 上一次采集到的值) ÷ (当前采集时间 - 上一次采集时间)
“自定义倍数”:对采集到的原始数据进行单位换算,具体来说,就是将 SNMP 设备上报的字节(Bytes) 数据,转换成监控中常用的比特(Bits)。

设置标记
interface标记为GE0/0/9可以将端口进行按标记汇总。

在最新数据中,可以看到具体的数值


根据以上步骤,创建ifHCOutOctets的监控

创建图表


创建触发器
使用变量BANDWIDTH来定义设置阈值,方便进行调控。也可以分别定义上行和下行带宽的变量。



设置变量值BANDWIDTH为85,当带宽超过85M后就会告警,低于85M就会恢复。

告警测试

评论区