目录

Zabbix(4)-Zabbix使用snmp监控硬件

SNMP 简介

SNMP 是英文"Simple Network Management Protocol"的缩写,中文意思是“简单网络管理协议"。SNMP 是一种简单网络管理协议,它属于 TCP/IP 五层协议中的应用层协议,用于网络管理的协议,SNMP 主要用于网络设备的理。

SNMP 的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。

SNMP 协议是 TCP/IP 协议簇的一个应用层协议,在 1988 年被制定,并被 Internet 体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案,由于 SNMP 的简单性,在Internet 时代得到了蓬勃的发展,1992 年发布了 SNMPv2 版本,以增强 SNMPv1 的安全性和功能,SNMP 的协议版本目前有 SNMP v1、SNMP v2c 和 SNMP v3 三种版本,其具体差别如下:

  • SNMP v1采用团体名(Community Name)认证,团体名用来定义SNMP NMS和SNMP Agent的关系,如果SNMP 报文携带的团体名没有得到设备的认可,该报文将被丢弃,团体名起到了类似于密码的作用,用来限制 SNMP NMS对SNMP Agent的访问。

  • SNMP v2c也采用团体名认证,它在兼容SNMP v1的同时又扩充了SNMP v1的功能,它提供了更多的操作类型 (GetBulk和InformRequest)、支持更多的数据类型(Counter64等)、提供了更丰富的错误代码且能够更细 致地区分错误。

  • SNMP v3提供了基于用户的安全模型(USM,User-Based Security Model)的认证机制,用户可以设置认证 和加密功能,认证用于验证报文发送方的合法性,避免非法用户的访问,加密则是对NMS和Agent之间的传输报文 进行加密,以免被窃听。通过有无认证和有无加密等功能组合,可以为SNMP NMS和SNMP Agent之间的通信提供 更高的安全性。

使用SNMP监控硬件设备

通过Zabbix 自带的snmp接口即可实现snmp监控硬件,具体实现流程如下

https://tc.ctq6.cn/tc/20220719072952.png

  • 梳理资产设备型号,便于根据产品查询对应的oid参数指标
  • 使用snmpwalk测试数据是否符合使用场景
  • zabbix配置模板监控项触发项
  • zabbix配置告警通知

snmp数据交互

snmp管理进程与代理进程之前为了交互信息,定义了5种报文:

1
2
3
4
5
get-request操作:从代理进程处提取一个或多个参数值
get-response操作:返回一个或多个参数值,这个操作是由代理进程发出的。
trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
get-next-request操作:从代理进程处提取一个或多个参数的下一个参数值。
set-request操作:设置代理进程的一个或多个参数值。

snmp mib

所谓(MIB)管理信息库,就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合。MIB 是基于对象标识树的,对象标识是一个整数序列,中间以".“分割,这些整数构成一个树型结构,类似于 DNS 或 Unix 的文件系统,MIB 被划分为若干个组,如 system、 interfaces、 at(地址转换)和 ip 组等。.iso .org .dod.internet .private .enterprises(1.3.6.1.4.1)这个标识,是给厂家自定义而预留的,比如华为的为 1.3.6.1.4.1.2011,华三的为 1.3.6.1.4.1.25506。

SNMP 的管理信息库采用和域名系统 DNS 相似的树型结构,它的根在最上面(iso 上面无名字)。下图画的是管理信息库的一部分,它又称为对象命名树(objectnamingtree):

https://tc.ctq6.cn/tc/modb_20211025_c0f49ec8-3579-11ec-8844-fa163eb4f6be.png

https://tc.ctq6.cn/tc/modb_20211025_c1219b6c-3579-11ec-8844-fa163eb4f6be.png

snmp 实现

在具体实现上,SNMP 为管理员提供了一个网管平台(NMS),负责网管命令的发出、数据存储、及数据分析。被监管的设备上运行一个 SNMP 代理(Agent),代理实现设备与管理站的 SNMP 通信。

https://tc.ctq6.cn/tc/modb_20211025_c14a6b82-3579-11ec-8844-fa163eb4f6be.png

管理站与代理端通过 MIB 进行接口统一,MIB 定义了设备中的被管理对象。管理站和代理都实现了相应的 MIB 对象,使得双方可以识别对方的数据,实现通信。管理站向代理申请 MIB 中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为 MIB 定义的格式,应答给管理站,完成一次管理操作。

snmpwalk获取信息命令

  • 安全级别为authPriv时,snmpwalk获取信息方式:
    1
    
    snmpwalk -v 3 -u admin -l authPriv -a sha -A mypass123 -x aes -X myaes123 192.168.0.80 ".1.3.6.1.2.1"
    
  • 安全级别为authNoPriv时,snmpwalk获取信息方式:
    1
    2
    
    snmpwalk -v 3 -u admin -l authNoPriv -a sha -A mypass123 192.168.0.80 ".1.3.6.1.2.1"
    ``` 
    
  • 安全级别为noAuthNoPriv时,snmpwalk获取信息方式:
    1
    
    snmpwalk -v 3 -u admin -l noAuthNoPriv 192.168.0.80 ".1.3.6.1.2.1"
    

基于CentOS 的snmp

安装snmp

1
yum install -y net-snmp

修改配置

1
2
3
4
# 修改团体名
com2sec notConfigUser  default       yfgj
# 自定义授权
view    systemview    included   .1.

重启snmp

1
2
systemctl enable snmpd
systemctl restaert snmpd

snmp oid

使用 snmpwalk 工具测试 OID。snmpwalk 是使用 SNMP 协议的工具,它使用 SNMP 的 GET 请求查询指定 OID(SNMP 协议中的对象标识)入口的所有OID 树信息,并显示给用户。通过 snmpwalk 也可以查看支持 SNMP 协议(可网管)的设备的一些其他信息,比如 cisco 交换机或路由器 IP 地址、内存使用率等,也可用来协助开发 SNMP 功能。要使用 snmpwalk 需要先安装 net-snmp-utils 软件包。

 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
# 安装snmpwalk
yum install -y net-snmp-utils
# 使用帮助
snmpwalk -h
USAGE: snmpwalk [OPTIONS] AGENT [OID]

  Version:  5.7.2
  Web:      http://www.net-snmp.org/
  Email:    net-snmp-coders@lists.sourceforge.net

OPTIONS:
  -h, --help		display this help message
  -H			display configuration file directives understood
  -v 1|2c|3		specifies SNMP version to use
  -V, --version		display package version number
SNMP Version 1 or 2c specific
  -c COMMUNITY		set the community string
SNMP Version 3 specific
  -a PROTOCOL		set authentication protocol (MD5|SHA)
  -A PASSPHRASE		set authentication protocol pass phrase
  -e ENGINE-ID		set security engine ID (e.g. 800000020109840301)
  -E ENGINE-ID		set context engine ID (e.g. 800000020109840301)
  -l LEVEL		set security level (noAuthNoPriv|authNoPriv|authPriv)
  -n CONTEXT		set context name (e.g. bridge1)
  -u USER-NAME		set security name (e.g. bert)
  -x PROTOCOL		set privacy protocol (DES|AES)
  -X PASSPHRASE		set privacy protocol pass phrase
  -Z BOOTS,TIME		set destination engine boots/time

CentOS可用的snmp oid的值

 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
30
31
32
33
34
35
36
37
38
39
CPU 负载:
1 minute Load:  .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load:  .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3

内存使用:
Total Swap Size:      .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used:       .1.3.6.1.4.1.2021.4.6.0
Total RAM Free:       .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared:     .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered:   .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory:  .1.3.6.1.4.1.2021.4.15.0

硬盘使用:
Path where the disk is mounted:       .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk:          .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk:               .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk:     .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk:    .1.3.6.1.4.1.2021.9.1.10.1

系统信息:
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

CPU 信息:
percentage of user CPU time:    .1.3.6.1.4.1.2021.11.9.0
raw user cpu time:   .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time:   .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time:   .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time:   .1.3.6.1.4.1.2021.11.51.0

测试snmp采集数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 测试1分钟负载
snmpwalk -v 2c -c yfgj 192.168.100.209 .1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.23
# 测试5分钟负载
snmpwalk -v 2c -c yfgj 192.168.100.209 .1.3.6.1.4.1.2021.10.1.3.2
UCD-SNMP-MIB::laLoad.2 = STRING: 0.37
# 测试15分钟负载
snmpwalk -v 2c -c yfgj 192.168.100.209 .1.3.6.1.4.1.2021.10.1.3.3
UCD-SNMP-MIB::laLoad.3 = STRING: 0.25
# 获取系统信息
snmpwalk -v 2c -c yfgj 192.168.100.209 sysDescr
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64

zabbix 配置snmp监控

添加主机

https://tc.ctq6.cn/tc/20220827062437.png

配置snmp trap采集数据

  • 拷贝zabbix源码中zabbix_trap_receiver.pl到/usr/bin目录下
    1
    
    cp 
    

关联模板

https://tc.ctq6.cn/tc/20220827063154.png

修改团体名,在配置文件中的团体名称为yfgj,但是默认SNMP的模板名称为public https://tc.ctq6.cn/tc/20220827063317.png

https://tc.ctq6.cn/tc/20220827063520.png

主机中添加模板

https://tc.ctq6.cn/tc/20220827063724.png

https://tc.ctq6.cn/tc/20220827063832.png