运维监控篇(4)_Zabbix SNMP设备监控

支持SNMP协议的设备有很多,比如交换机、Linux服务器、打印机等大部分的网络设备(联网的设备)。运维监控中最常见的就是交换机了(Linux服务器采用Agent的方式监控),zabbix中监控SNMP设备可以这样整(以交换机为例)。
1、首先添加SNMP设备,这里主要是交换机,zabbix添加监控主机的方法很多,这里手动添加(zabbix使用SNMP监控,zabbix-server编译的时候得加上–with-net-snmp)。
zabbix04a
zabbix04b
zabbix04c

2、用snmpwalk和snmpget命令获取SNMP的相关信息(该命令在net-snmp安装包中)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ snmpwalk -v 2c -c public 192.168.1.1 
SNMPv2-MIB::sysDescr.0 = STRING: H3C Comware Platform Software
Comware software, Version 3.10, Release 1702P42
H3C S3600-28TP-SI Product Version S3600-SI-1702P42

Copyright(c) 2004-2012 Hangzhou H3C Tech. Co.,Ltd. All rights reserved.

SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.25506.1.34
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1651770809) 191 days, 4:15:08.09
SNMPv2-MIB::sysContact.0 = STRING: Hangzhou H3C Technologies Co., Ltd.
SNMPv2-MIB::sysName.0 = STRING: 3600-SW
SNMPv2-MIB::sysLocation.0 = STRING: Hangzhou China
SNMPv2-MIB::sysServices.0 = INTEGER: 78
IF-MIB::ifNumber.0 = INTEGER: 38
IF-MIB::ifIndex.14 = INTEGER: 14
IF-MIB::ifIndex.16 = INTEGER: 16
IF-MIB::ifIndex.31 = INTEGER: 31
IF-MIB::ifIndex.39 = INTEGER: 39
IF-MIB::ifIndex.47 = INTEGER: 47
IF-MIB::ifIndex.55 = INTEGER: 55
IF-MIB::ifIndex.63 = INTEGER: 63
IF-MIB::ifIndex.87 = INTEGER: 87
IF-MIB::ifIndex.103 = INTEGER: 103
IF-MIB::ifIndex.4227614 = INTEGER: 4227614
IF-MIB::ifIndex.4227626 = INTEGER: 4227626
IF-MIB::ifIndex.4227634 = INTEGER: 4227634
IF-MIB::ifIndex.4227642 = INTEGER: 4227642
。。。。。。。。还有非常多的信息可以重定向到一个文本便于查找相关信息。。。。。。
。。。。。。。。一般的设备将SNMP打开后默认的组是public也有可能例外需要注意。。。。。。

3、获取监控项最关键的值OID(对象标识符,通过OID取读取设备对应的状态) 从上面的信息中可以找到端口流入和流出流量(实际记录的是历史流量总和,是个累计值)的相关字段

1
2
IF-MIB::ifInOctets.4227674 = Counter32: 2448663618 
IF-MIB::ifOutOctets.4227674 = Counter32: 987463784859

根据IF-MIB::ifInOctets、IF-MIB::ifOutOctets可以获取到对应端口422674的流入流量和流出流量的OID

1
2
3
4
5
6
$ snmpget -v 2c -c public -On 192.168.1.1 IF-MIB::ifInOctets.4227674
.1.3.6.1.2.1.2.2.1.10.4227674 = Counter32: 2450680039
其中的1.3.6.1.2.1.2.2.1.10.4227674为该端口流入流量的OID,这个OID是监控该端口流入速率的关键
$ snmpget -v 2c -c public -On 192.168.1.1 IF-MIB::ifOutOctets.4227674
.1.3.6.1.2.1.2.2.1.16.4227674 = Counter32: 116377917
其中的1.3.6.1.2.1.2.2.1.16.4227674为该端口流出流量的OID,这个OID是监控该端口流出速率的关键

端口422674对应的端口名称可以在第一个命令snmpwalk -v 2c -c public 192.168.1.1的输出内容中找到

1
2
3
IF-MIB::ifDescr.4227626 = STRING: Ethernet1/0/1 
IF-MIB::ifDescr.4227634 = STRING: Ethernet1/0/2
IF-MIB::ifDescr.4227642 = STRING: Ethernet1/0/3

貌似有捷径可以走,当获取到任意端口的OID,如1.3.6.1.2.1.2.2.1.16.4227674。更改该OID的倒数第二个字段,当倒数第二个字段为10时表示流入流量,为16时为流出流量。改成2可以得到所有端口的名称和对应的OID,如下(这样就不用一个一个端口的查OID了)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ snmpwalk -v 2c -c public -On 192.168.1.1 1.3.6.1.2.1.2.2.1.2 
.1.3.6.1.2.1.2.2.1.2.14 = STRING: NULL0
.1.3.6.1.2.1.2.2.1.2.16 = STRING: InLoopBack0
.1.3.6.1.2.1.2.2.1.2.31 = STRING: Vlan-interface1
.1.3.6.1.2.1.2.2.1.2.39 = STRING: Vlan-interface2
.1.3.6.1.2.1.2.2.1.2.47 = STRING: Vlan-interface3
.1.3.6.1.2.1.2.2.1.2.55 = STRING: Vlan-interface4
.1.3.6.1.2.1.2.2.1.2.63 = STRING: Vlan-interface5
.1.3.6.1.2.1.2.2.1.2.87 = STRING: Vlan-interface8
.1.3.6.1.2.1.2.2.1.2.103 = STRING: Vlan-interface10
.1.3.6.1.2.1.2.2.1.2.4227614 = STRING: Aux1/0/0
.1.3.6.1.2.1.2.2.1.2.4227626 = STRING: Ethernet1/0/1
.1.3.6.1.2.1.2.2.1.2.4227634 = STRING: Ethernet1/0/2
.1.3.6.1.2.1.2.2.1.2.4227642 = STRING: Ethernet1/0/3
.1.3.6.1.2.1.2.2.1.2.4227650 = STRING: Ethernet1/0/4
... ... ...
.1.3.6.1.2.1.2.2.1.2.4228065 = STRING: GigabitEthernet1/1/4

OID最后的字段貌似是端口(交换机自身设备部件)的唯一标识。而倒数第二个字段2、10、16神马的是表示该端口(自身设备部件)的不同状态如设备名、流入流量、流出流量。

4、万事俱备就可以创建监控项了item 端口流入速率
zabbix04d
zabbix04e
由于获取的是流量累计值,故选择“差量(速率每秒)”
zabbix04f
流出仅仅就键值和OID不同,当然名称也不同咯!
zabbix04g
SNMP设备其它监控数据如:内存、CPU利用率、温度等设备支持的数据监控添加方式类同。

----------------本文结束 感谢阅读----------------