深入浅出Zabbix 3.0 -- 第十三章 监控网络设备

本文深入介绍了Zabbix 3.0中如何监控网络设备,特别是通过SNMP协议进行配置。首先,文章讲解了SNMP的基本概念,包括SNMP的版本、功能、SMI和MIB,以及OID树的结构。接着,重点讨论了Zabbix中配置SNMP监控的方法,如数据类型的选择、OID的发现以及如何配置常规SNMP监控项和动态索引SNMP监控项。最后,文章介绍了SNMP低级发现规则的配置,帮助读者理解如何利用SNMP进行网络设备的全面监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第十三章 监控网络设备

13.1 SNMP简介

13.1.1 SNMP 概述

近日完成《深入浅出 zabbix 4.0》视频教程的录制并正式发布,该教程基于 zabbix 4.2 ,对Zabbix进行全面讲解。欢迎大家围观。课程链接:https://edu.youkuaiyun.com/course/detail/24870

SNMP发展至今以成为应用最广的网络管理协议,目前应用的版本主要有SNMP v1、SNMP v2c和SNMP v3。各版本之间主要的差异表现在信息的定义、通信协议的操作和安全机制上,同时也出现了SNMP应用的两个扩展远程网络监控RMON(Remote Network Monitoring)和RMON2。

从物理层的角度看,使用SNMP对网络进行管理应该包含:网络管理站(NMS)、代理(Agent)、代理服务器(proxy)。NMS能够发生命令,接收通知信息,在网络管理中至少要有一个NMS。Agent能够响应管理节点的请求,也能够主动产生通知信息,在网络管理中可以有一个或多个。Proxy在不同网络间或不同版本间转发SNMP请求和通知信息。

从协议层的角度看,SNMP包含:SMI(Structure of Management Information,管理信息结构)和MIB(Management InformationBase,管理信息库)。SMI是ASN.1(Abstract SyntaxNotation one,抽象语法标记)的一个子集,SMI规定了SNMP中可使用ASN.1中的元素、自定义的数据类型和宏等,由这些元素、数据类型、宏及其他相关的语法可定义SNMP中的MIB。MIB是Agent中可被管理对象的抽象描述。在SNMP中,MIB是以树形结构组织进行查看的,树中的每个节点称为OID(Object identifier,对象标识),以类似于网址域名的方式组织,以证书表示各个节点,如 1.3.6.4。

SNMP是属于TCP/IP协议栈的应用层协议,类似于HTTP、FTP协议。只是SNMP传输层使用的是UDP协议。

在SNMP v1中,提供了一种从NMS到Agent的简单的认证模式----Community,NMS向Agent发送请求时需要提供Community字符串,Agent收到字符串后需检查是否和本地的一致。因使用明文传递Community,具有明显的安全隐患。

在1996年IETF发布了SNMP v2c(Community-BasedSNMP v2),该版本在v1的基础上定义了管理站之间的通信,所有支持分布式网络管理,但是在安全机制方面还是和v1的一样。

在1998年IETF发布了SNMP v3,在SNMP v2的基础上扩展了安全性(基于用户的安全模型及视图的访问控制模型)和管理机制。在安全性上,v3版本在协议报文中加入了安全性参数,允许对报文进行加密传输和强制性验证,是一种安全的协议。SNMP v3中使用模块化的思想定义了协议中的各个组成模块,完善了协议的体系结构,最重要的是和SNMP v1和SNMP v2保持兼容。

 

13.2.2 SNMP的功能

SNMP中agent主要负责信息的上传,NMS除了具有SNMP协议的级别功能外,还具有对已发送和接收的信息进行日志记录、通知信息的记录和管理及配置功能,并能提供图形化的配置和管理界面。

为了实现这些功能,SNMP中包含一系列的操作命令,主要有:

  • 读取命令:Get系列命令,NMS像Agent发出请求收集管理信息。

  • 设置命令:Set命令,NMs将报文中携带的数据写入Agent中。

  • 告警功能:Trap系列,Agent主动向NMS发送告警/事件报文的信息。

 

图 13-1

1、  Get 操作

Get操作是NMS主动发起的操作。在发出的报文中除了携带Get请求标志外,还包括了待请求的OID名称和值对,并以这种名称和值对的绑定形式实现管理对象信息的传递。当然,Get操作中OID对应的值为NILL。

2、  Get-Next操作

Get-Next操作和Get功能类似,不同的是查询的信息并不是报文中绑定的OID信息而是该对象的下一个OID的信息(如果下一个OID信息是可读的)。比如说NMS想要收集Agent端的sysName的下一个节点sysLocation的信息,在请求报文中是sysName.0,而返回的报文中绑定的是sysLocation.0和值。

3、  Get-Bulk操作

实际上是多个Get-Next操作的集合,这是在SNMP v2中新加入的操作方法。

4、Set操作

Set操作是对具有可写权限的OID进行参数的设置操作,实现对设备的参数管理、配置和控制等。与Get操作绑定变量不同的是Set中需要绑定对应OID设置的值。

5、Get-Response

Get-Response是对NMS的Get和Set两类命令的响应,根据命令的不同和命令中的参数不同,相应的返回变量绑定的信息及错误状态信息(表明命令执行成功或失败)等。

6、Trap系列

Trap是Agent向NMS主动报告重要事件的机制,对于这种报告,NMS无须对Agent进行响应。Trap信息中的内容表明了什么时间在什么地点发生了什么事情。

 

13.1.3 SMI和MIB

1、SMI

SMI是SNMP中以ASN.1语法定义的信息模块,是ASN.1中的一个子集。这些模块中定义了很多SNMP中特有的宏、自定义数据类型和规则等。定义这些宏、数据类型、规则的主要目的有3个:一是表示和定义SNMP应用中特有的数据类型;二是简化管理对象的定义方法;三是分配SNMP中的对象标识符空间及管理对象编码的方法。SNMP正是基于这些定义在RFC文档中的信息模块,实现了协议的标准化,使得各个组织、企业和个人在定义管理对象时保持一致性。

在SNMP中,实际上定义了两个版本的SMI,分别是RFC 1151中定义的SMI v1和RFC 2578中定义的SMI v2。SMI v1中只是简单的定义了几种数据类型、规则说明、OBJECT-TYPE宏等,在SMI v2中则以模块化的定义方式,将所有的相关内容都完整的组织起来了。

SMI v1中定义的基础数据类型有:

  • INTEGER:实际上是32位的整数。

  • OCTET STRING:0个或多个8位字符(单字节),即可以表示文本字符,也可以表示物理地址。取值范围0 到65535。

  • OBJECT IDENTIFIER:以点分十进制表示的OID。

  • NULL:只在SMI v1中有定义,在SMI v2中已经不再使用。

  • SEQUENCE:定义列表。

  • SEQUENCE OF:定义表格。

在SMI v2中对以上的数据类型进一步明确了范围上的限制和更新,另外还引入了BITS类型。

SMI v1中自定义数据类型包括:

  • NetworkAddress(网络地址),可以是除Internet外的网络地址族,

NetworkAddress ::= CHOICE {Internet IPAddress }

  • 32位的IP地址,用网络字节顺序表示

IPAddress ::= [APPLICATION 0 ] IMPLICIT OCTET STRING (SIZE (4))

  • Counter类型值单向增长,达到最大后,回归到0重新开始计数(Agent重启后也会重置为0),主要用于统计接口发送和接收的字节数

Counter ::= [APPLICATION 1 ] IMPLICIT INTEGER(0 .. 4294967295)

  • Gauge类型值可增可减,达到最大值时保持在最大值,如路由器中接口的速率可以用该类型表示

Gauge ::= [ APPLICATION 2 ]IMPLICIT INTEGER(0 .. 4294967295)

  • TimeTicks以百分之一秒(0.01)为单位计时,表示两个时间点之间的计时。要求在描述信息中说明其计时基准。

TimeTicks ::= [ APPLICATION 3 ] IMPLICIT INTEGER(0 .. 4294967295)

  • Opaque将其他ASN.1类型编码后的值两次封装。为了向后兼容,SMIv2中也定义了该类型,不建议使用。

Opaque ::= [APPLICATION 4 ] IMPLICIT OCTET STRING 

SMI v2中相对SMI v1有变化的自定义数据类型有:

  • Gauge32 和Gauge实际上是一致的。另外Gauge32与Unsigned32共用一个应用类型标签号,所以他们的编码实际上是一致的。

Gauge32 ::= [APPLICATION 2 ] IMPLICIT INTEGER(0 .. 4294967295)

Unsigned32 ::= [APPLICATION 2 ] IMPLICIT INTEGER(0 .. 4294967295)

  • Counter64是更大范围的Counter,有64为:2^64-1(0 ..18446744073709551615)。在标准MIB模块中,只有在使用Counter32时计数器不到1小时就归0的情况下使用。

Counter64 ::= [ APPLICATION6 ] IMPLICIT INTEGER(0 ..18446744073709551615)

SMI v2中依然保留了IPAddress类型,且含有没有变化。不过不适用于IPv6的128为地址。对Counter32更进一步的说明:计数的值只有在有初始值和有记录变化时,当前的计数值才有明确的含义。

从MIB的视角来看,SMI是直接指导MIB定义的章程,定义了MIB的数据类型和语法,为MIB中的管理对象分配OID空间。

2、MIB

MIB是管理信息的集合,是根据业务的需求或网络管理标准的要求,按照约定的组织规则、定义语法编写的结构化的文本文件。

每个MIB中的管理对象都应该清晰的描述该对象所有的属性,包括名称、描述、数据类型等。这些属性的内容能够通过对象的唯一标示OID,被通信双方所识别。也就是说,MIB是NMS和Agent相互沟通的桥梁,只有Agent实现了该MIB,且NMS认识该MIB,两者才能正确配合实现相应的管理功能。将MIB导入NMS后,NMS才能知道待管理对象所有的细节。在Agent中实现了MIB中定义的管理对象后说明该Agent支持该MIB。

一个Agent可以实现多个MIB,每个MIB包含的管理对象可多可少,没有明确的要求。MIB主要由两部分组成,一部分是国际标准化组织定义的标准的管理对象,包括MIB-I(RFC1156)和MIB-II(RFC1213)。标准的MIB中定义了一些常规和基础的管理对象,所有入网设备都支持。另一部分是各大厂商、组织或私人自定义的私有MIB,这些私有MIB是厂商根据设备管理的需求,将标准MIB中没有的需要管理的对象进行自定义。私有MIB定义在节点enterprises(1.3.6.1.4.1)下。

标准MIB中将管理对象分为10个组,也就是MIB树中的10个分支,它们是:System、Interfaces、AT(Address Translation,状态为deprecated,表示下一版本不再使用)、IP、ICMP、TCP、UDP、EGP、Transmission、SNMP,它们的父节点是1.3.6.1.2.1(mib-2)。这10个组中的管理对象时网络管理中最重要的部分之一。

  • System组:主要用来描述Agent系统层面信息。包括sysName、sysLocation、sysDescr、sysServices、sysUpTime、sysC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白小白一起学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值