全国最高价回收海康威视、大华、宇视等品牌监控设备,收购监控摄像头、硬盘录像机、视频解码器、存储服务器、门禁机、交通抓拍单元等,欢迎来电咨询!
VIP福利
主页 > 监控知识 > 浅谈 SNMP 在网络监控中的应用

浅谈 SNMP 在网络监控中的应用

SNMP 是 Simple Network Management Protocol 的缩写,翻译过来也就是简单网络管理协议。SNMP 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及 HUBS 等)的一种标准协议,它是一种应用层协议。 SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。

很多人知道 SNMP 协议,都是从网络监控开始的,认为 SNMP 单纯的就是监控网络设备,比如交换机,路由器,防火墙等,但实际上 SNMP 能做的事情很多,因为它是一个通用协议,相对来说简单,并且无需安装 Agent 代理,所以很多监控对象都将它作为一个标准,对外提供接口数据。例如我们还可以用 SNMP 监控 X86 服务器,操作系统 OS,甚至某些应用,比如 oracle 也对外提供了 SNMP。

SNMP 是一种协议,我们可以通过 SNMP 协议获取到数据。但是数据的定义是什么样的一个结构,那么我们就不得不提到 MIB 库和 OID 了。MIB 是管理信息库,MIB 定义了受管设备必须保存的数据项、允许对每个数据项进行的操作及其含义,即管理系统可访问的受管设备的控制和状态信息等数据变量都保存在 MIB 中。MIB 定义的通用化格式支持对每一个新的被管理设备定义其特定的 MIB 组,因此厂家可以采用标准的方法定义其专用的管理对象,从而可以管理许多新协议和设备,可扩展性很好。简单来说,可以认为 MIB 库是各个厂家定义的一副密码字典,只是这个密码字典不是随便定义的,而是有着一套国际规范。

那为什么我把它叫做密码字典呢,这里我们又要提到 OID 了。对象标识符 (Object Identifier,OID) 是与对象相关联的用来无歧义地标识对象的全局唯一的值,可保证对象在通信与信息处理中正确地定位和管理。通俗地讲,OID 就是网络通信中对象的身份证,如果没有 MIB 库的定义,你拿到这个身份证号码,你也不知道这个 OID 代表的是张三还是李四。所以我们只有拿到这个 MIB 库之后,你才能够去通过 walk 这个 OID,拿到我们想要获取到的信息。

 

 

SNMP 获取数据的方式有两种,一种是 GET,一种是 WALK 方式。

GET 方式很容易理解,就是每次发送一个 GET 请求的时候,只获取到一个数据。例如 OID 为 1.3.6.1.4.1.9.2.1.58.0,这是 Cisco 的 CPU 利用率,当你发送的 PDU 包中,OID 是这个的话,那么 Cisco 路由器就返回当前 CPU 利用率的值给你。这是一个 CPU 的情况,如果有多个 CPU 的话怎么办呢,难道也是一个个的 GET,这个效率很明显是很低下的,所以又有了 walk 方式。

正如我们前文提到的,MIB 是一个管理库,它是以一个 Tree 的方式展现的。Tree 的展现形式很简单,给我一个根,我就能不停的下钻看到这棵树下面的所有分支。snmp walk 就是这样做的(snmp 工具我推荐 net-snmp,支持 windows 和 linux)。这里我以接口表 (IfTable) 为例,我们先看下 IfTable 的结构:

 

 

从上面的图我们可以很直接的了解到,接口表有很多属性,包括端口索引,接口描述,接口的流量数据等等。那么我们通过 net-snmp 工具 walk 一下这个 OID 看看结果:

 

 

从上面图中(红框标出来的部分),我们可以发现每个属性后面都有一个数字标示,这个标示其实就是索引,你也可以把它理解为数据库中的 ID。因为我们通过 SNMP Walk 获取到的数据,是一个行式数据,并且是一行只有一列的数据。但实际上我们最终需要的是一个每行有多列的数据,所以这个就需要索引去做对应了。细心的你会发现,每个属性的索引都是对应的,例如 ifIndex.1 和 ifDescr.1 实际上就是同一个接口的不同属性,通过这个索引,我们就可以把相同索引的数据整合在一起,最终形成一个表,类似的效果图如下:

 

 

通过上面的讲解,大家就可以通过 SNMP 获取设备的相应监控数据了。前面讲的都是通过 net-snmp 工具去获取,实际开发过程当中,我们还是要通过代码来做,目前有很多开源的第三方包已经帮我们实现了 SNMP 协议的功能。我是写 Java 的,所以我推荐 snmp4j,这个包对 SNMP 协议整体都做了封装。

关闭
138-2873-8989 工作日:9:00-24:00
周六日:9:00-24:00

添加微信扫一扫