首页 > 代码库 > zabbix-3.2.6之snmp监控(无需安装agent也能监控)

zabbix-3.2.6之snmp监控(无需安装agent也能监控)

一、snmp监控介绍

概述

如果我们需要监控打印机、路由器、UPS等设备,肯定不能使用zabbix agentd,因为他们不能安装软件的,还好他们一般都支持SNMP协议,这样我可以使用SNMP来监控他们.如果你希望使用SNMP agent来获取这些设备的信息,那么在安装zabbix server的时候你需要增加snmp的支持.

备注:SNMP检查基于UDP协议

注意事项

  • 如果监控基于SNMPv3协议的设备,确保msgAuthoritativeEngineID(通常叫做snmpEngineID 或“Engine ID”)是唯一的.
  • 以前SNMPv3协议只支持MD5和DES加密,从zabbix 2.2开始支持SHA与AES加密协议.

 

配置SNMP监控

使用SNMP来监视设备,需要完成以下步骤

1. 创建主机

创建一个使用SNMP接口的主机(请参考zabbix创建主机),创建主机过程中你可以选择相应的模板,路由器、交换机这些设备的监控itme,zabbix已经默认自带了

2. 找出你想监控的SNMP字符串(或者OID)

如果你想获取SNMP字符串,你可以使用命令snmpwalk来实现,当然在安装zabbix的时候你需要增加snmp的支持

 
1
# snmpwalk -v 2c -c public .

2c表示SNMP标准版本,snmp推出了v1,v2,v3版本,你也可以 写成1,表示使用1版本.上面的命令会获取到一个SNMP的列表,包含键值,默认情况下我们snmp不加密,使用public作为共同体即可,这些列表中 有你需要的一些监控数据.但是线上环境我们不可能获取所有的键值,如果需要获取特定的数据,例如像获取交换机第三个端口的入口流量,需要使用IF-MIB::ifInOctets.3字符串,如下:

 
1
IF-MIB::ifInOctets.3 = Counter32: 3409739121

然后使用snmpget命令来获取IF-MIB::ifInOctets.3的OID。命令如下

 
1
# snmpget -v 2c -c public -On 10.62.1.22 IF-MIB::ifInOctets.3

最后一个数字3表示端口3,如果你想监控端口23那就写上23. 请参考: Dynamic indexes.
会输出如下值:

 
1
.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 3472126941

同理,OID的最后一个数字3表示端口号,要特别注意的是3COM的端口号1是101,3是是103,但是cisco还是不变,1号还是数字1.

创建监控项item

回 到zabbix的主机列表中,在你需要配置的主机那行,点击监控项item,在右上角点击“create item”,和普通的监控项创建方法差不多,仅有几个地方不同,type选择SNMP v2或者v1,v3,一般选择v2,snmp community使用默认的public,port不填写默认为161. SNMP OID写上OID,例如”.1.3.6.1.2.1.2.2.1.10.3"。然后其他内容和其他item type一样,然后保存即可。最后去看看是否获取到了数据。

简单实例

参数
Community:public
OID:1.2.3.45.6.7.8.0 (or .1.2.3.45.6.7.8.0)
Key: 例如sysName等,比OID好记

OID可以写数字也可以使用字符串. 然而,一些项目中,字符串OID需要转为数字格式,我们可以使用命令snmpget来获取,如下命令:

 
1
# snmpget -On localhost public enterprises.ucdavis.memory.memTotalSwap.0

 

其他

    • 如果想使用snmp来监控,从源码编译安装zabbix,一定要加上编译参数--with-net-snmp
    • 从zabbix 2.2.3开始server和proxy都支持使用单个请求获取多个值

二、snmp安装配置 zabbix snmp监控准备

yum安装snmp

1
# yum install net-snmp* -y

snmp配置

1
2
3
4
5
6
7
8
# vim /etc/snmp/snmpd.conf
view systemview included .1.3.6.1.2.1.25.1.1 //找到这行,增加下面配置
view systemview included .1 // 这个是新增加的
proc mountd // 找到这些配置,把注释去掉
proc ntalkd 4
proc sendmail 10 1
disk / 10000
load 12 14 14

 

启动snmpd

 
1
# service snmpd start

通过snmp获取数据

需要通过snmp获取到数据,首先我们需要对应的OID,请参考《SNMP OID列表 监控需要用到的OID》

获取主机名

1
2
3
4
# snmpwalk -c public -v 2c 173.219.255.122 sysName // 使用名称
SNMPv2-MIB::sysName.0 = STRING: li519-232
# snmpwalk -c public -v 2c 173.219.255.122 .1.3.6.1.2.1.1.5.0 // 使用OID
SNMPv2-MIB::sysName.0 = STRING: li519-232

 

通过如上两种方式均可获取到数据,如上获取到得数据都是li519-232

获取服务器剩余内存

 
1
2
3
4
# snmpwalk -c public -v 2c 173.219.255.122 .1.3.6.1.4.1.2021.4.11.0
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 560872 kB
# snmpwalk -c public -v 2c 173.219.255.122 memTotalFree
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 559176 kB

通过两种方式获取到服务器剩余内存,因为服务器资源使用量都实时变动的,所以两次获取的数值不同.

 

三、snmp v3的安全配置 snmp认证与加密配置

增加snmp v3用户

 

 
1
2
3
4
5
6
# service snmpd stop
# net-snmp-config --create-snmpv3-user -ro -a ttlsapwd  -x DES -X ttlsades ttlsa
adding the following line to /var/lib/net-snmp/snmpd.conf:
createUser ttlsa MD5 "ttlsapwd" DES ttlsades
adding the following line to /etc/snmp/snmpd.conf:
rouser ttlsa

 

参数说明

ttlsa:用户名

ttlsapwd:密码,密码必须大于8个字符

DES:加密方式,这边支持AES、DES两种

ttlsades:DES口令,必须大于8位

备注:增加用户的时候,snmp必须关闭,否则有如下报错

 
1
2
Apparently at least one snmpd demon is already running.
You must stop them in order to use this command.

 

启动snmpd v3

 

 
1
# service snmpd start

 

使用snmp v3获取信息

snmp v3安全级别有三种,分别为noAuthNoPriv(不认证也不加密)、authNoPriv(认证但是不加密)、authPriv(既认证又加密)

务器剩余内存

noAuthNoPriv安全级别

 
1
2
# snmpwalk  -v 3 -l authPriv  173.219.255.122 .1.3.6.1.4.1.2021.4.11.0
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 560872 kB

authNoPriv安全级别

 
1
2
# snmpwalk -v 3 -u ttlsa -a MD5 -A ttlsapwd -l authNoPriv freevpn.ttlsa.com sysName
SNMPv2-MIB::sysName.0 = STRING: li519-232

authPriv安全级别

 
1
2
# snmpwalk  -v 3 -u ttlsa -a MD5 -A ttlsapwd -x DES -X ttlsades -l authPriv  173.219.255.122 .1.3.6.1.4.1.2021.4.11.0
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 560872 kB

 

SNMP V3小结

既然打算用snmp v3了,那么v1、v2别忘记关闭了,下一节我们分别会演示v2与v3的监控项创建方法,关注下一节zabbix使用SNMP监控服务器.

 

四、SNMP OID列表 监控需要用到的OID

zabbix的snmp监控还没开始讲,不过先给大家列一些snmp常用的一些OID,比如cpu、内存、硬盘什么的。先了解这些,在使用snmp监控服务器。

系统参数(1.3.6.1.2.1.1)

OID

描述

备注

请求方式

.1.3.6.1.2.1.1.1.0

获取系统基本信息

SysDesc

GET

.1.3.6.1.2.1.1.3.0

监控时间

sysUptime

GET

.1.3.6.1.2.1.1.4.0

系统联系人

sysContact

GET

.1.3.6.1.2.1.1.5.0

获取机器名

SysName

GET

.1.3.6.1.2.1.1.6.0

机器坐在位置

SysLocation

GET

.1.3.6.1.2.1.1.7.0

机器提供的服务

SysService

GET

.1.3.6.1.2.1.25.4.2.1.2

系统运行的进程列表

hrSWRunName

WALK

.1.3.6.1.2.1.25.6.3.1.2

系统安装的软件列表

hrSWInstalledName

WALK

 

网络接口(1.3.6.1.2.1.2)

OID

描述

备注

请求方式

.1.3.6.1.2.1.2.1.0

网络接口的数目

IfNumber

GET

.1.3.6.1.2.1.2.2.1.2

网络接口信息描述

IfDescr

WALK

.1.3.6.1.2.1.2.2.1.3

网络接口类型

IfType

WALK

.1.3.6.1.2.1.2.2.1.4

接口发送和接收的最大IP数据报[BYTE]

IfMTU

WALK

.1.3.6.1.2.1.2.2.1.5

接口当前带宽[bps]

IfSpeed

WALK

.1.3.6.1.2.1.2.2.1.6

接口的物理地址

IfPhysAddress

WALK

.1.3.6.1.2.1.2.2.1.8

接口当前操作状态[up|down]

IfOperStatus

WALK

.1.3.6.1.2.1.2.2.1.10

接口收到的字节数

IfInOctet

WALK

.1.3.6.1.2.1.2.2.1.16

接口发送的字节数

IfOutOctet

WALK

.1.3.6.1.2.1.2.2.1.11

接口收到的数据包个数

IfInUcastPkts

WALK

.1.3.6.1.2.1.2.2.1.17

接口发送的数据包个数

IfOutUcastPkts

WALK

 

CPU及负载

OID

描述

备注

请求方式

. 1.3.6.1.4.1.2021.11.9.0

用户CPU百分比

ssCpuUser

GET

. 1.3.6.1.4.1.2021.11.10.0

系统CPU百分比

ssCpuSystem

GET

. 1.3.6.1.4.1.2021.11.11.0

空闲CPU百分比

ssCpuIdle

GET

. 1.3.6.1.4.1.2021.11.50.0

原始用户CPU使用时间

ssCpuRawUser

GET

.1.3.6.1.4.1.2021.11.51.0

原始nice占用时间

ssCpuRawNice

GET

. 1.3.6.1.4.1.2021.11.52.0

原始系统CPU使用时间

ssCpuRawSystem.

GET

. 1.3.6.1.4.1.2021.11.53.0

原始CPU空闲时间

ssCpuRawIdle

GET

. 1.3.6.1.2.1.25.3.3.1.2

CPU的当前负载,N个核就有N个负载

hrProcessorLoad

WALK

. 1.3.6.1.4.1.2021.11.3.0

ssSwapIn

GET

 

. 1.3.6.1.4.1.2021.11.4.0

SsSwapOut

GET

 

. 1.3.6.1.4.1.2021.11.5.0

ssIOSent

GET

 

. 1.3.6.1.4.1.2021.11.6.0

ssIOReceive

GET

 

. 1.3.6.1.4.1.2021.11.7.0

ssSysInterrupts

GET

 

. 1.3.6.1.4.1.2021.11.8.0

ssSysContext

GET

 

. 1.3.6.1.4.1.2021.11.54.0

ssCpuRawWait

GET

 

. 1.3.6.1.4.1.2021.11.56.0

ssCpuRawInterrupt

GET

 

. 1.3.6.1.4.1.2021.11.57.0

ssIORawSent

GET

 

. 1.3.6.1.4.1.2021.11.58.0

ssIORawReceived

GET

 

. 1.3.6.1.4.1.2021.11.59.0

ssRawInterrupts

GET

 

. 1.3.6.1.4.1.2021.11.60.0

ssRawContexts

GET

 

. 1.3.6.1.4.1.2021.11.61.0

ssCpuRawSoftIRQ

GET

 

. 1.3.6.1.4.1.2021.11.62.0

ssRawSwapIn.

GET

 

. 1.3.6.1.4.1.2021.11.63.0

ssRawSwapOut

GET

 

.1.3.6.1.4.1.2021.10.1.3.1

Load5

GET

 

.1.3.6.1.4.1.2021.10.1.3.2

Load10

GET

 

.1.3.6.1.4.1.2021.10.1.3.3

Load15

GET

 

 

内存及磁盘(1.3.6.1.2.1.25)

OID

描述

备注

请求方式

.1.3.6.1.2.1.25.2.2.0

获取内存大小

hrMemorySize

GET

.1.3.6.1.2.1.25.2.3.1.1

存储设备编号

hrStorageIndex

WALK

.1.3.6.1.2.1.25.2.3.1.2

存储设备类型

hrStorageType[OID]

WALK

.1.3.6.1.2.1.25.2.3.1.3

存储设备描述

hrStorageDescr

WALK

.1.3.6.1.2.1.25.2.3.1.4

簇的大小

hrStorageAllocationUnits

WALK

.1.3.6.1.2.1.25.2.3.1.5

簇的的数目

hrStorageSize

WALK

.1.3.6.1.2.1.25.2.3.1.6

使用多少,跟总容量相除就是占用率

hrStorageUsed

WALK

.1.3.6.1.4.1.2021.4.3.0

Total Swap Size(虚拟内存)

memTotalSwap

GET

.1.3.6.1.4.1.2021.4.4.0

Available Swap Space

memAvailSwap

GET

.1.3.6.1.4.1.2021.4.5.0

Total RAM in machine

memTotalReal

GET

.1.3.6.1.4.1.2021.4.6.0

Total RAM used

memAvailReal

GET

.1.3.6.1.4.1.2021.4.11.0

Total RAM Free

memTotalFree

GET

.1.3.6.1.4.1.2021.4.13.0

Total RAM Shared

memShared

GET

.1.3.6.1.4.1.2021.4.14.0

Total RAM Buffered

memBuffer

GET

.1.3.6.1.4.1.2021.4.15.0

Total Cached Memory

memCached

GET

.1.3.6.1.4.1.2021.9.1.2

Path where the disk is mounted

dskPath

WALK

.1.3.6.1.4.1.2021.9.1.3

Path of the device for the partition

dskDevice

WALK

.1.3.6.1.4.1.2021.9.1.6

Total size of the disk/partion (kBytes)

dskTotal

WALK

.1.3.6.1.4.1.2021.9.1.7

Available space on the disk

dskAvail

WALK

.1.3.6.1.4.1.2021.9.1.8

Used space on the disk

dskUsed

WALK

.1.3.6.1.4.1.2021.9.1.9

Percentage of space used on disk

dskPercent

WALK

.1.3.6.1.4.1.2021.9.1.10

Percentage of inodes used on disk

dskPercentNode

WALK

System Group
sysDescr 1.3.6.1.2.1.1.1
sysObjectID 1.3.6.1.2.1.1.2
sysUpTime 1.3.6.1.2.1.1.3
sysContact 1.3.6.1.2.1.1.4
sysName 1.3.6.1.2.1.1.5
sysLocation 1.3.6.1.2.1.1.6
sysServices 1.3.6.1.2.1.1.7
Interfaces Group
ifNumber 1.3.6.1.2.1.2.1
ifTable 1.3.6.1.2.1.2.2
ifEntry 1.3.6.1.2.1.2.2.1
ifIndex 1.3.6.1.2.1.2.2.1.1
ifDescr 1.3.6.1.2.1.2.2.1.2
ifType 1.3.6.1.2.1.2.2.1.3
ifMtu 1.3.6.1.2.1.2.2.1.4
ifSpeed 1.3.6.1.2.1.2.2.1.5
ifPhysAddress 1.3.6.1.2.1.2.2.1.6
ifAdminStatus 1.3.6.1.2.1.2.2.1.7
ifOperStatus 1.3.6.1.2.1.2.2.1.8
ifLastChange 1.3.6.1.2.1.2.2.1.9
ifInOctets 1.3.6.1.2.1.2.2.1.10
ifInUcastPkts 1.3.6.1.2.1.2.2.1.11
ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12
ifInDiscards 1.3.6.1.2.1.2.2.1.13
ifInErrors 1.3.6.1.2.1.2.2.1.14
ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15
ifOutOctets 1.3.6.1.2.1.2.2.1.16
ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17
ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18
ifOutDiscards 1.3.6.1.2.1.2.2.1.19
ifOutErrors 1.3.6.1.2.1.2.2.1.20
ifOutQLen 1.3.6.1.2.1.2.2.1.21
ifSpecific 1.3.6.1.2.1.2.2.1.22
IP Group
ipForwarding 1.3.6.1.2.1.4.1
ipDefaultTTL 1.3.6.1.2.1.4.2
ipInReceives 1.3.6.1.2.1.4.3
ipInHdrErrors 1.3.6.1.2.1.4.4
ipInAddrErrors 1.3.6.1.2.1.4.5
ipForwDatagrams 1.3.6.1.2.1.4.6
ipInUnknownProtos 1.3.6.1.2.1.4.7
ipInDiscards 1.3.6.1.2.1.4.8
ipInDelivers 1.3.6.1.2.1.4.9
ipOutRequests 1.3.6.1.2.1.4.10
ipOutDiscards 1.3.6.1.2.1.4.11
ipOutNoRoutes 1.3.6.1.2.1.4.12
ipReasmTimeout 1.3.6.1.2.1.4.13
ipReasmReqds 1.3.6.1.2.1.4.14
ipReasmOKs 1.3.6.1.2.1.4.15
ipReasmFails 1.3.6.1.2.1.4.16
ipFragsOKs 1.3.6.1.2.1.4.17
ipFragsFails 1.3.6.1.2.1.4.18
ipFragCreates 1.3.6.1.2.1.4.19
ipAddrTable 1.3.6.1.2.1.4.20
ipAddrEntry 1.3.6.1.2.1.4.20.1
ipAdEntAddr 1.3.6.1.2.1.4.20.1.1
ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2
ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3
ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4
ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5
ICMP Group
icmpInMsgs 1.3.6.1.2.1.5.1
icmpInErrors 1.3.6.1.2.1.5.2
icmpInDestUnreachs 1.3.6.1.2.1.5.3
icmpInTimeExcds 1.3.6.1.2.1.5.4
icmpInParmProbs 1.3.6.1.2.1.5.5
icmpInSrcQuenchs 1.3.6.1.2.1.5.6
icmpInRedirects 1.3.6.1.2.1.5.7
icmpInEchos 1.3.6.1.2.1.5.8
icmpInEchoReps 1.3.6.1.2.1.5.9
icmpInTimestamps 1.3.6.1.2.1.5.10
icmpInTimestampReps 1.3.6.1.2.1.5.11
icmpInAddrMasks 1.3.6.1.2.1.5.12
icmpInAddrMaskReps 1.3.6.1.2.1.5.13
icmpOutMsgs 1.3.6.1.2.1.5.14
icmpOutErrors 1.3.6.1.2.1.5.15
icmpOutDestUnreachs 1.3.6.1.2.1.5.16
icmpOutTimeExcds 1.3.6.1.2.1.5.17
icmpOutParmProbs 1.3.6.1.2.1.5.18
icmpOutSrcQuenchs 1.3.6.1.2.1.5.19
icmpOutRedirects 1.3.6.1.2.1.5.20
icmpOutEchos 1.3.6.1.2.1.5.21
icmpOutEchoReps 1.3.6.1.2.1.5.22
icmpOutTimestamps 1.3.6.1.2.1.5.23
icmpOutTimestampReps 1.3.6.1.2.1.5.24
icmpOutAddrMasks 1.3.6.1.2.1.5.25
icmpOutAddrMaskReps 1.3.6.1.2.1.5.26
TCP Group
tcpRtoAlgorithm 1.3.6.1.2.1.6.1
tcpRtoMin 1.3.6.1.2.1.6.2
tcpRtoMax 1.3.6.1.2.1.6.3
tcpMaxConn 1.3.6.1.2.1.6.4
tcpActiveOpens 1.3.6.1.2.1.6.5
tcpPassiveOpens 1.3.6.1.2.1.6.6
tcpAttemptFails 1.3.6.1.2.1.6.7
tcpEstabResets 1.3.6.1.2.1.6.8
tcpCurrEstab 1.3.6.1.2.1.6.9
tcpInSegs 1.3.6.1.2.1.6.10
tcpOutSegs 1.3.6.1.2.1.6.11
tcpRetransSegs 1.3.6.1.2.1.6.12
tcpConnTable 1.3.6.1.2.1.6.13
tcpConnEntry 1.3.6.1.2.1.6.13.1
tcpConnState 1.3.6.1.2.1.6.13.1.1
tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2
tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3
tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4
tcpConnRemPort 1.3.6.1.2.1.6.13.1.5
tcpInErrs 1.3.6.1.2.1.6.14
tcpOutRsts 1.3.6.1.2.1.6.15
UDP Group
udpInDatagrams 1.3.6.1.2.1.7.1
udpNoPorts 1.3.6.1.2.1.7.2
udpInErrors 1.3.6.1.2.1.7.3
udpOutDatagrams 1.3.6.1.2.1.7.4
udpTable 1.3.6.1.2.1.7.5
udpEntry 1.3.6.1.2.1.7.5.1
udpLocalAddress 1.3.6.1.2.1.7.5.1.1
udpLocalPort 1.3.6.1.2.1.7.5.1.2
SNMP Group
snmpInPkts 1.3.6.1.2.1.11.1
snmpOutPkts 1.3.6.1.2.1.11.2
snmpInBadVersions 1.3.6.1.2.1.11.3
snmpInBadCommunityNames 1.3.6.1.2.1.11.4
snmpInBadCommunityUses 1.3.6.1.2.1.11.5
snmpInASNParseErrs 1.3.6.1.2.1.11.6
NOT USED 1.3.6.1.2.1.11.7
snmpInTooBigs 1.3.6.1.2.1.11.8
snmpInNoSuchNames 1.3.6.1.2.1.11.9
snmpInBadValues 1.3.6.1.2.1.11.10
snmpInReadOnlys 1.3.6.1.2.1.11.11
snmpInGenErrs 1.3.6.1.2.1.11.12
snmpInTotalReqVars 1.3.6.1.2.1.11.13
snmpInTotalSetVars 1.3.6.1.2.1.11.14
snmpInGetRequests 1.3.6.1.2.1.11.15
snmpInGetNexts 1.3.6.1.2.1.11.16
snmpInSetRequests 1.3.6.1.2.1.11.17
snmpInGetResponses 1.3.6.1.2.1.11.18
snmpInTraps 1.3.6.1.2.1.11.19
snmpOutTooBigs 1.3.6.1.2.1.11.20
snmpOutNoSuchNames 1.3.6.1.2.1.11.21
snmpOutBadValues 1.3.6.1.2.1.11.22
NOT USED 1.3.6.1.2.1.11.23
snmpOutGenErrs 1.3.6.1.2.1.11.24
snmpOutGetRequests 1.3.6.1.2.1.11.25
snmpOutGetNexts 1.3.6.1.2.1.11.26
snmpOutSetRequests 1.3.6.1.2.1.11.27
snmpOutGetResponses 1.3.6.1.2.1.11.28
snmpOutTraps 1.3.6.1.2.1.11.29
snmpEnableAuthenTraps 1.3.6.1.2.1.11.30

 

zabbix-3.2.6之snmp监控(无需安装agent也能监控)