简介
SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是“简单网络管理协议,SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议,SNMP主要用于网络设备的管理。
SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
SNMP协议是TCP/IP协议簇的一个应用层协议,在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案,由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能,SNMP的协议版本目前有SNMPv1、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一般用于监控网络设备,还可以采集内存、网络(即采集网络设备接口运行速率)、磁盘、CPU这些基本信息,采集不到跟应用相关的信息
SNMP网络元素分为NMS和Agent两种
NMS(Network Management Station,网络管理站)是运行SNMP客户端管理程序的工作站,能够提供非常友好的人机交互界面,方便网络管理员完成绝大多数的网络管理工作。
Agent是驻留在设备上的一个进程,负责接收、处理来自NMS的请求报文。在一些紧急情况下,如接口状态发 生改变等,Agent也会主动通知NMS。
NMS是SNMP网络的管理者,Agent是SNMP网络的被管理者。NMS和Agent之间通过SNMP协议来交互管理信息。
SNMP数据交互
SNMP管理进程与代理进程之前为了交互信息,定义了5种报文:
get-request操作:从代理进程处提取一个或多个参数值。
get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的。
trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
get-next-request操作:从代理进程处提取一个或多个参数的下一个参数值。
set-request操作:设置代理进程的一个或多个参数值。
SNMP组织结构
SNMP报文协议。
管理信息结构(SMI, Structure ofManagement Information),一套公用的结构和表示符号。
管理信息库(MIB,Management Information Base),管理信息库包含所有代理进程的所有可被查询和修改的参数。
OID(Object Identifiers),一个OID是一个唯一的键值对,用于标识具体某一个设备的某个具体信息 (对象标识),如端口信息、设备名称等。
即一个所监控的设备,如交换机、路由器、防火墙等,就是一个管理信息库;假如该交换机有24个接口,则该交换机就会有对应的不同的24个OID,并且交换机路由器等网络设备上,也会有CPU及内存,则CPU及内存等其他信息也会对应一个不同的OID。
SNMP MIB
所谓(MIB)管理信息库,就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合。MIB是基于对象标识树的,对象标识是一个整数序列,中间以"."分割,这些整数构成一个树型结构,类似于 DNS或Unix的文件系统,MIB被划分为若干个组,如system、 interfaces、 a t(地址转换)和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 OID
如何测试OID:
snmpwalk是SNMP的一个工具,它使用SNMP的GET请求查询指定OID(SNMP协议中的对象标识)入
口的所有OID树信息,并显示给用户。通过snmpwalk也可以查看支持SNMP协议(可网管)的设备的
一些其他信息,比如cisco交换机或路由器IP地址、内存使用率等,也可用来协助开发SNMP功能。
1、yum install net-snmp-utils
安装及配置snmp
1、yum install -y net-snmp
2、vim /etc/snmp/snmpd.conf
com2sec notConfigUser default linux
#通过com2sec指令创建个用户,用户名称为notConfigUser,并且指定团体名称为linux,团体名称及管理端与agent使用snmp协议通讯时的认证密码
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
#通过group指令创建一个组,组名为notConfigGroup,指定该组支持的snmp协议版本,并且把notConfigUser用户添加到组中
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1.3
#通过view指令创建一个视图,视图名称为systemview,指定该视图的权限为允许访问.1.3这个OID开头所对应的所有监控信息
access notConfigGroup "" any noauth exact systemview none none
#通过access指令,指定notConfigGroup组中的用户可以访问systemview视图规定权限内,所有能访问的监控信息,并且指定不用认证,指定systemview视图以只读方式访问
3、systemctl restart snmpd
server端测试:
snmpwalk -v 2c 192.168.3.50 -c linux .1.3.6.1.4.1.2021.10.1.3.1
#-v指定snmp版本,指定目标地址,-c指定团体名称,.1.3.6.1.4.1.2021.10.1.3.1此OID对应的是CPU 1分钟的负载值
添加SNMP主机到zabbix上
1、选择一个snmp的模板
2、修改模板的宏定义(即模板中对变量的赋值),需要与需要进行snmp监控的主机的配置文件中定义的团体名称一致
3、创建主机
4、关联上面步骤中修改宏定义的模板