写具体内容前,我们需要先思考如下几个问题?
(1) 什么是SnmpTrap ?
(2)SnmpTrap 是用来干什么的?
(3)为什么要设计一个通用的SnmpTrap接收功能?
1、什么是SnmpTrap ?
摘自网络: SNMP Trap是SNMP的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。通过告警事件,管理站可以通过定义好的方法来处理告警。
通俗的来讲:就是设备厂商做了一个监控设备的代理程序,当设备出现故障时,发送的一个告警事件。
2、SnmpTrap 是用来干什么的?
主要是用来进行告警,为了更好的对设备进行管理,设备厂商一般都会有状态的管理服务器,用来纳管运行的各个设备,当某个设备出现故障时,代理端会上送的管理端。进行报警,方便维护人员及时发现,并解决问题。
3、为什么要设计一个通用的SnmpTrap接收功能?
带着这个问题,我们就开始了下面的的思考和设计。
随着信息化的发展,各行各业对监控的需求逐步增强,各厂家提供的监控过于分散,不能完全满足客户的需求,为了建立统一的监控系统,集成接入各厂商的事件,目前SNMP协议在业界的广泛应用,各厂商都基于SNMP实现的Trap 主动告警的功能。为了更便捷,易于扩展,事件统一集中,故进行Trap 通用接入的设计与实现。
1)首先要对设备进行分类:
设备接入分类:网络设备(交换机、防火墙、路由器)、存储设备、硬件设备等
2)涉及的接入交易:
Trap IP接入管理。
Trap 设备注册管理。
Trap 报文解析配置。
Trap 事件预警。
Trap 推送配置。
指标黑名单管理。
事件信息。
事件详情。
字典映射维护。
3)接入流程
4) Trap 报文构成
VBS=[{variable=290 days, 8:51:28.19, oid=1.3.6.1.2.1.1.3.0, type=TimeTicks}, {variable=1.3.6.1.4.1.2011.5.25.41.4.7, oid=1.3.6.1.6.3.1
.1.4.1.0, type=OID}, {variable=94, oid=1.3.6.1.4.1.2011.5.25.41.1.7.1.1.10.140, type=Integer32}, {variable=90, oid=1.3.6.1.4.1.2011.5.25.41.1.7.1.1.11.140, type=Integer32}, {variable=GigabitEtherne
t1/3/0/38, oid=1.3.6.1.4.1.2011.5.25.41.1.7.1.1.19.140, type=OctetString}]
5)Trap 涉及的端口及协议
采用UDP协议,默认使用162端口。