[导入]基于SNMP数据采集模块的设计和实现2
作者: ecsun 链接:http://papa.javaeye.com/blog/226508 发表时间: 2008年08月11日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
摘要随着电信行业数据业务的不断发展,数据网络监测和管理的复杂性将不断增加,对实时的电信网络监测系统的需求也越来越强烈。文章介绍了一个基于简单网络管理协议(SNMP)的网络监测和管理系统的设计过程。系统主要使用SNMP协议,对电信网络主要是IP网络进行全面监测及Web呈现。
0、引言
当今社会对网络的安全和网络性能要求越来越高,与此同时,电信业务的蓬勃发展、数据网络的日益壮大,对网络特别是电信网络进行监测和管理软件的需求也就越来越强烈。正是由于这种强烈的需求,越来越多的企业开始致力于网络监测管理软件的设计和生产。
网络监测管理在近几年发展非常迅速,众多网络监管软件纷纷浮出水面。总体来说,现阶段较流行的网络监管软件主要有以下三种实现方式:基于嵌入式、基于移动代理技术[1,2]和直接基于系统协议。考虑到本系统面向电信网络以及实现的复杂程度,我们采用第三种方式来对系统进行实现。
当前,有两种网络管理协议在计算机网络管理中占主导地位:一种是开放系统互连组织(OSI)提出的公共管理信息及协议(CMIS/CMIP);另一种是Internet工程任务组(IETF)提出的简单网络管理协议(SNMP) [3,4]。IETF指定的SNMP协议显得简单实用,容易实现,因而被迅速地推广开来,得到了广泛支持。
SNMP是在TCP/IP协议栈之上的应用层协议,由三个部分组成:管理信息结构(SMI)、管理信息库(MIB)和SNMP协议[5]。SNI描述了管理信息的标准符号,最关键的原则是被管理对象的定义要用抽象语句定义 ASN.1来描述。MIB用来贮存管理信息,可把一个管理信息库比作一个虚拟的信息仓库。SNMP协议是网络管理站(manager)和代理(agent)之间的异步请求和响应协议。网络管理信息的数据由SNMP从MIB库中获取,再经过网络管理系统应用程序的过滤、分析、加工处理后,存储于 Web服务器的数据库中。
本文介绍的是基于SNMP协议和Web呈现的对电信网络主要是IP网络进行全面监测的监测平台。此监测平台可用于企业内部局域网络的监测和管理,也可用于一个包含多个局域网络组的统一网络,是一个全面的网络监测软件。
1、系统结构设计
1.1系统的物理部属
系统中的实体有:根监测器、数据库服务器、Web服务器,在各个子网中再采用叶监测器的方式从而形成一个监测器树的分布式监测系统。监测器分布式地部署在各个被监测的数据网内。每个监测器负责一个网段(可以使用手工来设置)。监测器探针(以下简称探针)将自己负责的网段中设备所有的SNMP信息以轮询的方式采集下来,并且存储到数据库中去。然后使用Web服务器将客户端浏览器需要的信息读取出来,传递给浏览器端。浏览器端根据用户的各种要求向Web服务器提出数据要求,Web服务器审核后从数据库中提取需要的信息通过浏览器端显示给用户。
叶监测器部署在各个规模适当的局域网内,这是出于轮询性能的考虑。要保证整个系统数据采集的高性能,就必须科学地规划叶监测器在整个网络中的部署,而在局域网中的部署就是整个系统的最小单元。本文是基于一个局域网为背景的测试环境。
1.2系统三层架构
系统采用三层结构:数据采集层面、数据存储层面、数据呈现层面。采用数据库将底层的分布式数据采集和呈现层的浏览器/服务器(B/S)架构完全隔离,增强了系统的可扩展性、稳定性、开发的并行性。SNMP检测系统的三层架构如图1所示。 图1 SNMP检测系统的三层架构点击此处查看全部新闻图片
其中数据采集层包括SNMP信息采集、Trap信息接受、数据库入库、拓扑发现和守护进程等子模块;数据存储层包括系统配置表、监测信息表、Trap告警表、拓扑信息表、用户权限表、统计信息表、用户定制表等子模块;数据呈现层包括数据库访问、设备状态实时显示、故障告警、性能报告、用户定制等子模块。
1.3系统接口描述
SNMP检测系统的三层架构中接口描述如图2所示。 图2系统三层架构中接口描述
A接口:a)SNMP监测器将所有采集到的准实时的数据先存在文件中,然后再导到数据库,由定时器(1分钟)来触发数据传送模块,周期地将根监测器中的数据汇集到Oracle数据库中去。b)如果SNMP监测器接收到网络设备所发来的Trap信息(实时数据),系统使用数据传送模块立即将Trap信息送到对应的紧急故障报警数据库中去。
B接口:Web服务器从数据库服务器中的读取数据。在数据库中存储了三类数据:非实时数据(最大支持1年)、准实时数据(1分钟)、实时数据(小于5秒)。
C接口:将数据库统计分析模块所要的数据取出来。
D接口:位于数据库统计分析模块与WebServer之间,接口为数据库中的各个统计分析结果表使用XML封装;并且要支持准实时的数据更新;还要实时地刷新本在的紧急故障报警数据库。
E接口:HTTP接口。
2、系统的设计和实现
2.1系统的开发环境和工具
本课题使用Linux作为操作系统平台,使用MagicC++可视化IDE作为开发工具,使用CVS(Linux平台)和VisualSourceSafe(windows平台)进行代码和文档版本控制,使用Oracle进行分布式数据库部属,前台的界面呈现部分使用了Apache服务器以及PHP语言、HTML语言、JavaScript语言等工具。
2.2SNMP数据采集层的设计和实现
SNMP数据采集层主要由五个模块所组成,分别是:日志模块、SNMP采集模块、Trap消息接收模块、DEAMON模块和数据库接口模块。其中SNMP采集模块和Trap消息接收模块是数据采集层的核心模块。
2.2.1SNMP数据采集模块的设计和实现
SNMP数据采集模块的主要功能是:从数据库的系统配置表中的设备监测列表中取出一个被监测网络单元的IP地址,根据配置表中用户定制监测项的MIBID来轮询网络单元的各个MIB值,并将值存入链表中。等全部MIBID查询结束后,将所得到的链表存入到对应的数据文件中去,继续轮询下一个网络单元。全部网络单元拓扑查询结束后,回到等待状态,使用信号解析子模块解析信号,以判断是结束还是继续查询,或者是应答监测模块的监测信号。
SNMP数据采集模块由6个子模块组成,它们分别是系统调度子模块、MIBID查询引擎、文件读写接口、链表操作接口、信号解析接口、数据库接口。其中最重要的是MIBID查询引擎。
MIBID查询引擎是通过使用修改net-snmp软件包中的snmpget和 snmpwalk来构成的,它可以通过文件读写接口将MIB子树ID配置文件读出来,并且按照ID值使用引擎发出SNMPGETNEXT请求,等待消息回来。如果不成功,记录模块将出错信息存入到日志文件中去,如果成功完成SNMP查询操作,则链表操作接口将数据插入到链表中。同时查询此次设备轮询是否已经完成,如果完成,使用文件读写接口将链表存入文件;如果未完成,继续查询。然后,调用信号解析接口按照别的进程传递过来的信号分类处理。
2.2.2Trap消息接受模块的设计和实现
Trap消息接收模块的目的是负责接收SNMP发送来的Trap消息,并且将此消息即刻写入到数据库中去。
Trap接收模块的流程如下:
1)Trap消息以守护进程的方式运行于系统中,监测系统的触发条件有两个:a)来自于所监测网络单元的Trap消息。b)来自于DEAMON进程的运行监测信号。
2)下面就是从这两个触发条件开始:
如果是a),那么将这条Trap消息传给消息包裹函数,打上本监测系统的标记,然后调用入库模块将包裹后的信息存入到Trap信息表中去。
如果是b),那么调用监测信号回应子模块回应监测信号。
2.3SNMP数据呈现层的设计和实现
SNMP数据呈现层根据功能可以划分为五个主要的模块,分别为:数据库访问模块、设备状态实时显示模块、故障实时告警模块、性能报告模块和用户定制模块。主要利用HTML语言构建页面,PHP语言的访问数据库及绘图语句实现了上述五个模块的功能。
2.3.1数据库访问
数据库访问模块分为数据库读取子模块和数据库录入修改子模块,主要用到了PHP语言对Oracle数据库的连接及操作的函数。
2.3.2PHP绘图语句
性能报告模块主要使用PHP语言中的绘图函数如Imagecreate()、 Imagecolorallocate()、Imageline()、Imagestring()、Imagerectangle()、 Imagefillrectangle()、Imagefontheight()、Imagefontwidth()。通过这些函数实现了对设备的主要信息的柱状图、曲线图的显示,使用户对设备的各种信息的变化对比能有一个直观的了解。
3、运行结果及分析
3.1SNMP信息采集模块运行输出
通过遍历目的主机的SNMPMIB树所获得的结果可看到:a)系统的一些信息,包括系统的版本号、启动时间、描述、系统名、位置、服务等信息。b)对此主机系统interface的描述。c)每个接口的详细信息,接口的类型,接口的最小传输单元。
3.2日志模块输出
日志模块的输出格式,主要包括日志的描述信息、日志输出的时间、日志类型、日志导出程序、主机标识等信息。
3.3系统界面图
图3显示的是在局域网中进行测试的主界面,系统会根据数据库中存储的局域网组信息自动生成局域网组的树型菜单,由于在局域网中进行测试,所以图显示的只有一个局域网组。右边显示的是此局域网组的实时设备状态,将鼠标放到设备上,可以看到相应设备信息,点击设备,可以进入详细信息页面,查看此设备的详细信息。 图3系统主界面
3.4性能报告曲线图
本系统可以根据用户的需要,对目标网络中的各类设备,包括交换机、防火墙、路由器、主机、服务器等进行监测,获取设备的端口信息、流量信息、故障信息以及各种性能信息。图4显示的是测试局域网内一个交换机从12:00~17:00的平均流量曲线图。同样的数据还可以用柱状图显示。 图4交换机平均流量曲线图
4、结束语
本文主要论述了SNMP电信网络监测系统主要架构,该系统成功实现了大部分相关的基本功能,如SNMP信息采集模块、日志模块、数据库接口模块,以及在各模块中作为切面抽象出的链表操作接口、文件操作接口、SNMPTrap模块中的 Trap消息监听接口,以及通过Web服务器的状态信息实时显示、故障实时告警,图形化报表显示、用户定制等功能。该系统在SNMP轮询效率及呈现美观性方面还有待于进一步提高。
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
[新闻]MySpace称目前是收购创业公司良机
博客园首页 社区 新闻频道 小组 博问 网摘 闪存
文章来源:http://www.cnblogs.com/haipeng/archive/2008/08/11/1291652.html