简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的Internet协议族的一部分。该协议能够支持网上管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。
SNMP管理站和SNMP代理之间是松散耦合。他们之间的通信是通过UDP协议完成的。一般情况下,SNMP管理站通过UDP协议向SNMP代理发送各种命令,当SNMP代理收到命令后,返回SNMP管理站需要的参数。但是当SNMP代理检测到网络元素异常的时候,也可以主动向SNMP管理站发送消息,通告当前异常状况。
SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了【读】操作;管理员需要向设备执行设置操作,所以SNMP提供了【写】操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了【Trap】操作。
SNMP采用UDP协议在管理端和agent之间传输信息。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。
MIB(Management Information Base)是用于管理通信网络中的实体的数据库。通常与简单网络管理协议(SNMP)相关联,数据库是分层的(树形结构的),并且每个条目通过对象标识符(OID)来寻址。
MIB层次结构可以描述为具有无名根的树,其级别由不同的组织分配。顶级MIB OID属于不同的标准组织,而较低级别的对象ID由关联组织分配。此模型允许跨OSI参考模型的所有层进行管理,扩展到数据库,电子邮件和Java参考模型等应用程序,因为可以为所有此类区域特定信息和操作定义MIB
Object IDentifiers(OID)在计算中,对象标识符或OID是由国际电信联盟(ITU)和ISO / IEC标准化的标识符机制,用于命名具有全局明确持久名称的任何对象,概念或“事物”。
介绍完SNMP我们来看看zabbix如何使用snmp的方式监控
首先在被监控主机安装snmp
yum install net-snmp net-snmp-utils -y mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf_bak cat /etc/snmp/snmpd.conf_bak | egrep -v "^$|#" > /etc/snmp/snmpd.conf
有时候我们监控项需要权限,为了测试,先在打开全部查看的权限
#vi /etc/snmp/snmpd.conf view systemview included .1 #添加此行到此位置 view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1
重启snmp
systemctl start snmpd
查看udp端口监听状态
netstat -nupl
显示161端口已经监听
snmpget命令格式
snmpget [COMMON OPTIONS] [-Cf] AGENT OID [OID]...
常用的选项
-v 1|2c|3 表示使用snmp协议的哪个版本,有3个版本,最常用的是2c -c COMMUNITY 设置口令,一般都是public,如果需要修改可以在配置文件改
获取内存大小
##.1.3.6.1.2.1.25.2.2.0这个OID是获取内存总量大小的。 snmpget -v 2c -c public 172.26.61.57 .1.3.6.1.2.1.25.2.2.0 #返回 HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 930008 KBytes
Zabbix利用SNMP方式监控,具体配置如下图
添加监控模板,zabbix4.4的版本直接使用Template OS Linux SNMPv2,它包含了以下模板
Template Module EtherLike-MIB SNMPv2 Template Module Generic SNMPv2 Template Module Interfaces SNMPv2 Template Module Linux block devices SNMPv2 Template Module Linux CPU SNMPv2 Template Module Linux filesystems SNMPv2 Template Module Linux memory SNMPv2
无需做其他修改,然后我们看看效果