1、基础知识
1.1、snmp简介
SNMP是 “Simple Network Management Protocol” 的缩写,中文意思是简单网络管理协议,它是由互联网工作小组在RFC1157中定义的应用层协议,用于在网络实体或节点之间交换管理或监控信息,SNMP发
展到目前,一共经历了三个主要版本,SNMPv1,SNMPv2c,SNMPv3使用SNMP,一个运行网管软件的工作站就能对成千上万的网络设备进行监控和信息采集,这些信息可以用来构建网络或者定位网络中的问题。
通过它,我们可以按照内置的属性条目,获取相关具体的监控数据信息
1.2、原理解析
1.2.1、网络设备
1.2.2、Agent
agent是驻留在网络设备中的程序进程,它他通过MIB数据库收集设备的信息并与管理组件交互。
1.2.3、管理组件
管理组件运行在独立的主机上,通过管理组件就能够对设备进行各种监控与管理操作。
1.3、MIB
1.3.1、什么是MIB
MIB定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。
MIB是以树状结构进行存储的,树的节点表示被管理对象,它可以用从根开始的一条路径唯一地识别,这条路径就称为OID.
1.3.2、树状图
1.3.3、常见的设备数据属性
system的OID为1.3.6.1.2.1.1
interfaces的OID为1.3.6.1.2.1.2。
1.3.4、常见属性的OID值
1、基本信息:
内核信息:1.3.6.1.2.1.1.1
主机名:1.3.6.1.2.1.1.5.0
2、CPU 负载:
所有负载:1.3.6.1.4.1.2021.10.1.3
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
3、CPU信息:
所有信息:1.3.6.1.4.1.2021.11
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
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
4、内存使用:
所有信息:.1.3.6.1.4.1.2021.4
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
5、硬盘使用:
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
1.4、SNMP操作
SNMP查询是指NMS主动向SNMP Agent发送查询请求。SNMP Agent接收到查询请求后,通过MIB表完成相应指令,并将结果反馈给NMS。
在整个操作过程中,SNMP主要包括三部分的操作:检索数据、修改变量、接收消息
检索数据:管理组件向agent发送请求以获取数据,有如下操作类型:
GET:GET请求用以从agent上获取指定OID对应的一条或多条值。
GETNEXT:与GET请求类似,最明显的区别是GETNEXT获取指定OID在系统树种所处位置的下一个OID。
GETBULK:用于从agent上获取大表中的大量数据。
修改变量:管理组件有时会希望能够修改设备上的一些变量:
SET:管理组件使用这个命令来修改设备的一些配置值。
接收消息:
TRAP: 当agent遇到数据传输问题,或设备出现故障希望上层管理组件知晓时,使用TRAP操作上报此信息。
1.5、SNMP请求图
2、安装SNMP-实战
2.1、主机环境准备
服务端:192.168.10.21
客户端: 192.168.10.27
2.2、服务端安装
# 服务端安装软件
apt install -y snmp
# 查看文件
dpkg -L snmp
注意:
snmpget 一次获取单个值
snmpwalk 一次获取多个值
2.3、客户端安装
2.3.1、安装
apt install snmpd snmp snmp-mibs-downloader libsnmp-dev -y
注意:
snmp-mibs-downloader 会自动获取mib相关信息,执行 download-mibs 命令可以获取多个信息
2.3.2、修改配置文件【snmpd.conf】
# vi /etc/snmp/snmpd.conf
...
agentaddress 192.168.10.27,127.0.0.1,[::1]
# system + hrSystem groups only
#view systemonly included .1.3.6.1.2.1.1 # 注释掉
#view systemonly included .1.3.6.1.2.1.25.1 # 注释掉
view systemonly included .1 # 开放所有mib数据能够正常访问
...
2.3.3、重启snmp服务
2.3.4、查看软件状态
systemctl status snmpd
ss -lnu | grep 161
2.4、服务端测试获取值
2.4.1、服务端获取单个值
# 内核信息:
snmpwalk -v 2c -c public 192.168.10.27 1.3.6.1.2.1.1.1
# 主机名信息:
snmpget -v 2c -c public 192.168.10.27 1.3.6.1.2.1.1.5.0
# 物理内存信息:
snmpget -v 2c -c public 192.168.10.27 1.3.6.1.4.1.2021.4.5.0
2.4.2、服务端获取多个值
# 内存所有值
snmpwalk -v 2c -c public 192.168.10.27 1.3.6.1.4.1.2021.4
# cpu负载
snmpwalk -v 2c -c public 192.168.10.27 1.3.6.1.4.1.2021.10.1.3
2.5、zabbix添加snmp客户端主机
2.6、查询监控状态
2.7、查询图表数据