基于SNMP协议的广播发射台网络监控管理系统
李熙浤
(国家广电总局七五一台 福建 邵武 354011)
SNMP是"Simple Network Management Protocol"的缩写,它的中文含义是"简单网络管理协议",为简单网关监控协议(SGMP) 的前身,主要用来管理通信线路。
2.1 SNMP基本原理
2.2 管理信息库MIB
MIB,Management Information Base:管理信息库,由网络管理协议访问的管理对象数据库,它包括SNMP可以通过网络设备的SNMP管理代理进行设置的变量,代表网络中可以管理的资源和设备。MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点来访问网络中的设备。
2.3 SNMP的五种消息类型
SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request、Trap
1.Get-Request、Get-Next-Request与Get-Response:SNMP管理站通过Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next- Request用于和Get-Request组合起来查询特定的表对象中的列元素。后再进行查询(其中第一次用Get-Request,其后用Get-Next-Request)
2.Set-Request:SNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。
3.Trap:SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生。[1]
3.1 需要被监控的网络资源
目前我台局域网络系统中含有网络设备:①广播发射机工控主机;②安全播出监控平台服务器;③路由器、防火墙、交换机等数据通信设备。由于这些设备与我台安全播出工作息息相关,并且设备种类、厂商和所运行的操作系统又各不相同,则需要相关技术人员和值班人员通过一个通用的网络监控系统对设备的运行状态进行统一监测和控制。
3.2 系统结构
根据我台被监控网络资源实际情况,我们设计开发的网络监控管理系统需要对三种不同类型的网络设备实现监控功能:工控主机、服务器、数据通信设备。考虑到今后需要被监控设备数量和种类可能会继续增加或更换,为了保证系统的可升级性并且能够快速高效的进行监控数据获取、分析和存储,也为了对被监控设备更好的进行控制管理,我们根据SNMP的网络管理模型特点,将监控管理系统设计成分布式系统,系统结构包括:监控(显示、交互)模块、应用服务器模块、数据库模块、被监控对象模块。系统的各个模块之间通过消息中间件完成信息传递和交互工作,而应用服务器模块和数据库模块就构成了一个代理工作站的角色。各模块的关系架构图如图1所示:
3.3 系统硬件组成
本系统中,监控工作站模块可以和应用服务器模块集成在一台应用服务器中,用户通过应用服务器即可设置和管理被监控对象、游览被监控对象状态、查询监控日志。也可以部署在单独的普通PC主机上通过局域网与应用服务器相连,实现用户远程对被监控设备的即时监控。数据库模块则单独部署在数据服务器中,用来存储备份MIB信息数据库、获取到的被监控设备的状态信息和系统的操作日志,如果有条件的话也可以多加一台数据库服务器作为热备份之用,各个服务器类型的选用可根据实际的网络系统规模而定。
将监控工作站模块、应用服务器模块、数据库模块分开的分布式系统模式优点是:便于管理,当系统正在运行时,其中任何一个节点设备出现故障即可单独更换,使系统在第一时间恢复运行。网络监控管理系统的资源拓扑图如图3所示:
4 系统实现
4.1 系统工作流程
根据监控管理工作的需要,在监控工作开始前对需要被监控的设备上开启相应的SMMP服务,使其能够响应网络监控管理系统发来的监控信息。而本系统的监控工作流程如下:
1.首先,用户通过监控模块对本系统进行设置,如设置系统监控规则或手动输入被监控设备相关信息。设置完毕后,监控模块将系统配置信息或监控请求定时或者不定时的通过消息中间件传送给应用服务器模块。同时监控模块也为用户提供本系统的使用说明和系统帮助。
2.应用服务器模块接收监控模块发来的信息并进行处理:①如果是用户输入的配置信息则对自身配置状态进行更新,同时将相关的操作记录发送给数据库模块进行存储。②如果是监控请求,则先读取数据服务器上的MIB库查找相应的设备信息,如果库中未添加该设备信息则启动SNMP服务,则在网络中根据用户通过监控模块提供的设备相关信息进行查找并添加;如果读取到了MIB库中的相应信息则通过SNMP服务程序对请求信息进行报文改装,形成并发送被监控设备上SNMP服务可识别的报文内容,以此实现对被监控设备的监控。
3.应用服务器模块将采集到的被监控设备状态信息形成结果报文反馈给监控模块,同时存入数据库以备查询。如果被监控设备状态发生改变需进行报警或解除报警,则通知监控模块做出相应的反应。
4.监控模块在收到应用服务器模块反馈的被监控设备状态报告后,进行报表统计、显示、报警或解除报警等处理,使用户获取相关信息。[2]
4.2 开发工具介绍
管理器和代理工具:本系统我们采用了SNMP4J, 一个用JAVA来实现SNMP协议的管理器和代理,支持SNMP应用程序接口的类库。它是一个商业类库,而且开源免费,它也是一个有着很高技术艺术性的SNMP执行能力的类库,支持J2SE1.4或更高的版本。
MIB库设计和测试工具:在建立MIB库的过程中,可以使用一个名叫MG-SOFT的软件,这个软件是一个专业的SNMP应用编程软件。它含有:MG-SOFT Visual MIB Builder、MG-SOFT MIB Compiler和MG-SOFT MIB Browser等工具,使用该软件可以收集和编写设备的MIB库,也可以进行SNMP协议管理的模拟测试。
程序开发工具:在编写程序时,我们使用的是JAVA语言,IDE工具采用Netbeans软件进行开发,并使用MSSQL实现模块数据的数据存储和读取相关功能。通过JAVA对SNMP4J接口的调用,可以使SNMP的实现更加高效,程序的错误更少。同时使用JAVA语言编写的程序既可以在单机模式上运行,也能够部署在网络服务器端和客户端上运行,还可以提供网页式的交互操作模式,这些特点为我们开发网络监控管理系统提供了便利。[3]
4.3 SNMP通信代码
由于篇幅有限,我们只列举SNMP4J获取数据的部分代码
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());//设定采取的协议
snmp.listen(); //监听
CommunityTarget 751-server = new CommunityTarget(); //设置agent对象
751server.setAddress(new UdpAddress("X.X.X.X/161")); //设置IP地址和端口号
751server.setCommunity(new OctetString("public")); //设置共同体名
751server.setVersion(SnmpConstants.version2c); //设置版本
751server.setRetries(1); //设置通信不成功时重试次数
751server.setTimeout(5000); //设置超时时间
PDU request = new PDU(); //创建新的PDU
request.setType(PDU.GET); //设置PDU类型和
request.add(new VariableBinding(new OID(oidstr))); //OID添加
PDU response = null; //定义response包
ResponseEvent responseEvent = snmp.send(request, 751-server); //发出request PDU
PDU response = responseEvent.getResponse(); //接收response PDU
if(response != null){ System.out.println("request.size()="+request.size());
System.out.println("response.size()="+response.size());
VariableBinding vb = response.get(0);
System.out.println(vb);
}//response PDU包解析并输出
4.4 网络监控管理系统的主要功能
通过对不同被监控设备进行MIB库的定义,网络监控管理系统可以方便的通过网络对这些设备进行状态检测和控制。比如包括设备CPU、内存使用率的数据获取等。
评论 点击评论