您好,欢迎来到小奈知识网。
搜索
您的当前位置:首页局域网络监视系统的开发与实现

局域网络监视系统的开发与实现

来源:小奈知识网
维普资讯 http://www.cqvip.com 电子测量技术 第3O卷第1O期 ELE rR0NIC MEASUREMENT TECHN0I 0GY 2007年1O月 局域网络监视系统的开发与实现 刘荷花 (太原大学太原030009) 摘要:本文深入分析SNMP的原理与工作模式,总结MⅢ库中用于网络性能分析的对象,给出了若干重要的性能 参数的计算公式,总结了如何利用SNMP4J、JFreeChart以及一些其他技术实现本系统,重点阐述了实时显示模块、循 环采集模块、历史分析模块与报警模块开发实现的要点。描述了如何利用SNMP协议及其他技术实现网络性能监控 系统。通过SNMP协议,了解影响网络性能的关键数据,利用SNMP协议采集、分析这些数据,最终完成一个可以采 集实时性能数据、分析历史数据的网络性能监控系统的软件。 关键词:SNMP计算机网络;性能监控 中图分类号:TP393 文献标识码:A LAN monitoring system development and implementation Liu Hehua (Taiyuan University,Taiy uan O3OOO9) Abstract:SNMP-depth analysis of the principle and mode of work,which concluded MⅢfor network performance analysis of the object and some of the important performance parameters of the formula,summed up how to use snmp4j,JfreeChart and some other technical realization of the system,focusing on the real—time display module, circulating Acquisition Module historical analysis module and alarm module development to achieve points.Describes hoW to use SNMP and other technical realiaztion of network performance monitoring system.Through SNMP.affects the network performance of key data and the use of SNMP collection,the analysis of such data,can finalize a real-time performance data acquisition,analysis of historical data network performance monitoring system software. Keywords:SNMP computer network;performance monitoring 0引 言 近年来,如何有效对网络性能监控变得至关重要,成 为网络管理领域研究的一个热点。本文研究的是基于 SNMP的网络性能监控系统。 1开发环境及相关技术 图1 SNMP的工作模式 1.1简单网络管理协议SNMP 1.2系统分析 为了实现网络管理,许多国际组织先后制定了相应的 系统可分为4个功能(如图2所示),分别是:循环采集 标准、协议。IETF的简单网络管理协议(simple network 数据、实时查看数据、分析历史数据、报警功能。 management protocol,SNMP)是目前计算机网络中应用 循环采集数据:监控端程序开始运行后,以某个固定 最广的网络管理协议,已成为网络管理信息交换事实上的 的时间为间隔,系统依次从每个被监控端采集所有数据, 工业标准,几乎所有厂商的产品都兼容SNMP标准。 然后存人数据库中,作为历史数据。 SNMP协议主要定义了5种操作,用来在管理进程和 实时查看数据:监控主机主动发起请求,需要查看被 代理之间的交换。SNMP通过对MIB的访问机制,获得每 监控端的当前性能数据,系统利用协议采集性能数据,监 一类管理信息组MIB对象的具体信息并进行统计分析,结 控端以固定的模式将实时性能数据呈现。 合用于故障管理的Trap报文即可实现网络管理的5大功 分析历史数据:监控端以数据库中的数据为基础,生 能,SNMP的工作模式如图1所示。 成某一时间段内的性能趋势图。 ・ 115 ・ 维普资讯 http://www.cqvip.com 第3O卷 电子测 量技术 报警功能:若被监控端的某个性能数据超出预先设定 好的阀值,可以发出报警信息。 后历史分析的时候使用。具体实现步骤如下: 新建一个CycleGet类,添加代码如下: public static void main(String[--]args){ rs—targetObj.getTarget();//获得所有被监控主机信息 图2系统功能图 2系统实现 2.1实时显示模块 根据用户选择的被监控主机的IP和数据项名称,从被 监控主机上以某个时间间隔采集此项性能数据,采集到数 据之后,将其存到临时数据表tempdata中,然后供显示时 调用。这里需要创建一个类命名为DBconnect,用来实现 与数据库的连接,具体步骤如下: 新建一个类DBConnect,添加代码如下: import java.sq1. ; public class DBConnect …… public void setURL(String dbName){ this.dbURL一“jdbc:mysql://”+this.ip+“:”十 this.port+“/”+dbName;//设置数据库标识 } public Connection getoCnnection(){ Class.forName(“org.git.mm.mysq1.Driver”);//an 载数据库驱动 ……、 public void setParam(String ip,String port,String user,String psw){ this.ip—ip; this.port—port this.user=userl thi&password—psw}} 利用JFreeChart将tempdata中的数据用曲线显示在 页面上,可供管理员直观的查看当前性能状况。 2.2循环采集模块 程序运行之后,以某个时间为间隔,一直调用 SNMPGet类遍历采集所有的数据项,那些需要计算之后 才能显示的数据,调用Calculator类计算得出结果,最后, 将采集到或计算出的数据存入数据库webcyb表中,供以 ・ 1 1 6 ・ rsl—oidObj.getAllOID();//取得zjip,time,oid集 tempData—snmpGet.getValue();//调用snmpGet的 getValue采集数据 ipttl—getlpttl(zjip,time);//计算IP吞吐率 valueObj.insert(zjip,bbdm,5320,5320,time,iptt1); ' ●●●●●● Thread.sleep(10000);//完成一次遍历数据采集后线程睡 眠1O秒 其中targetObj是MonitedTarget类的一个实例化对 象,调用它的方法getTarget是完成与数据库交互的一个 操作:获得所有监控对象表中的所有信息。对于IP吞吐 率、输出错误率等数据需要经过计算才能存入数据库,所 以ipttl—getlpttl(zjip,time)语句是调用getIpttl方法来 计算,getIpttl再调用写具体计算公式的类Calculator来实 现。然后调用类CycleValue中的方法insert来完成把记 录插入数据库的功能。最后,经过十秒钟的休眠之后,重 新开始下一轮的数据采集。 2.3历史数据分析模块 从数据库中查询特定主机在某一个时间既内的某个 数据项,然后利用JFreeChart技术将其值用曲线表示出 来,可以很直观地反映出这个数据项在过去一段时间内的 趋势变化,从而帮助管理员做某种决断。具体实现步骤 如下: 新建一个类history,添加代码如下: private DefaultCategoryDataset createDataset(){ Defaul ̄tegoryDataset dataset—new Defaul ̄_.ategoryDataset 0; ……//建一个简单的数据集 rs—obj.getHistory(zjip,dlzbdm,startTime,endTime); //得到历史数据 } private static String changeTime(String time){ ……resultTime—Y+m+d;}//转化时间 } 建立一个简单的数据集,供JFreeChart显示时调用。 语句 维普资讯 http://www.cqvip.com

刘荷花:局域网络监视系统的开发与实现 rS—obj.getHistory(ziip,dlzbdm,startTime, 第1o期 //收到返回的数据包 System.out.println(“Response received with endTime)完成得到历史数据功能。obj是类CycleValue的 个实例化对象,调用它的方法getHistory是完成一个和 一requestID=”+response.getRequestID()+ “数据库的交互的操作:select*from webcyb where dxip= ,errorIndex=”+response.getErrorIndex() “‘+dxip+”’and dlzbdm一“‘+dlzbdm+”’and cysj +“,”+“errorStatus一”+response. between“‘+startTime+”and“‘+endTime+ 。最 getErrorStatusText()+“(”+response. 后,利用JFreeChart技术将数据集中的数据用曲线显示 getErrorStatus()+“)”); 出来。 ……value—obj.parseResponse(response): 2.4报警模块 //调用方法对返回的数据包进行分析 在采集数据的时候,调用datawarning类的checkData ……return value;} 方法,用以判断采集到的数据是否超出阀值,此方法的代 private String parseResponse(PDU response){ 码如下: ……value:vb.toString(); public boolean checkDate・・・・・・ //把通过oid取得的数据转化为字符串 {DBconnectioncommon dbcon=new DBconnectioncommon position—value.indexOf(“一”); (); //position为等号所在的位置 value—value.substring(position+2); if(CounterValue>bjsxValue) //把从position+2开始的子字符串值赋给value ,・・・・・・ )return value ̄) alarms.getalarm(sqls,(String)warning.ipAddress. SNMPGet方法通过参数“get”的设置定义了get- elementAt(i)); request操作,即从代理进程处提取一个或多个参数值,通 ・・・・・・、 过参数“ip,,、“oid”的设置分别确定了被监控主机的ip和数 else if(CounterValue<bjxxValue) 据项。PDU response—snmpRequest.send()语句实现了 ・・・・・・、 将udp message包发送到目标主机,然后收到返回的数据 ・・・・・・, 包之后,将包进行分析,最后将数据项的值显示出来。 alarms.getalarm(sqls,(String)warning.ipAddress. 采集到数据之后,将其存到临时数据表tempdata中, elementAt(i)); 然后供显示时调用。 ‘//报警消息 本文需要创建一个类命名为DBconnect,用来实现与 } 数据库的连接,具体步骤如下: 新建一个类DBConnect,添加代码如下: 3系统实现的范例实验 import java.sq1. ; public class DBConnect,・・・・・・ 以实时显示模块的实现作范例,本文进行了以下 public void setURL(String dbName){ 实验。 this.dbURL一“jdbc:mysql://”+this.ip+“:”+ 采集数据是通过一个类SNMPGet来实现,SNMPGet this.port+“/”+dbName;//设置数据库标识 是基于SNMP4J开发的。写类的具体步骤如下: ) 新建一个类,添加下列代码: public Connection getoCnnection(){ public class SNMPGet,・・・・・・ Class.forName(“org.gi t.眦mysq1.Driver”);// public String getValue(){ 加载数据库驱动 String[-]params一{‘‘一v”,“2c”,“一P”,“GET”, ・・・・・・、 “”,“”);//设参数值 public void setParam(String ip,String port,String try …・・・ user,String psw){ . snmpRequest.setOperation(PDU.GET);//设 this.ip=ip; 置操作方式 this.port—port; try{ this.user=user; PDU response=snmpRequest.send(); this。password=psw;)} //发送udp message包到目标主机 首先要下载JDBC的MYSQL数据库的驱动程序,得 到。jat驱动程序文件,并在环境变量中设置该驱动程序的 ・ 117 ・ 维普资讯 http://www.cqvip.com

第3o卷 路径。 电子测量技术 本文是显示地加载驱动程序类,并且与外部设置 无关。 其他服务器的网络性能的功能,要求被监控主机安装简单 网络管理协议(SNMP),后台程序在监控端运行,采集到数 据后,把数据保存在监控端的数据库里。网络管理员可在 监控端通过浏览器,以图表的形式可以很直观地查看被监 控主机当前性能趋势,以及历史性能数据。被监控端的数 利用JFreeChart将tempdata中的数据用曲线显示在 页面上,可供管理员直观的查看当前性能状况。 新建一个Servlet,命名为liuliangquxian,部分源码 据若超过阀值,可发送报警信息到指定的接受报警信息的 如下: ……//建立一个数据集 private DefaultCategoryDataset createDataset() ,・・・・・・ DefaultCategoryDataset dataset==new Default- CategoryDataset();)…… 、public void service(HttpServletRequest req, HttpServletResponse res){ eDfaultCategoryDataset dataset ̄//JFreeChart 自身的类 JFreeChart chart; Calculator calcObj—new Calculator(); PrintWriter out—res.getWriter();…… chart==ChartFactory.createLineChart ……//保存图片 ChartUtilities. saveChartAsJPEG(new File (fileName),100,chart,700,500); ……//刷新 out.println(“<formaction一\”liuliangquxian\ “method一\”POST\“name=\”self\“>”); ……//时间间隔为五秒钟 Thread.sleep(5000);) 其中Calculator是计算流量曲线所需的参数的一个 类,调用此类的实例化对象来在显示流量曲线中用到.使 用ChartFactory.createLineChart()函数画出曲线图,并且 曲线图的标题、X轴含义、y轴含义、绘图数据等都由该函 数的参数给出。为了可以显示实时数据,还需要把自身的 值传给自身实现刷新。间隔5s之后,继续采集下一个时间 点的数据。 4结 论 本系统实现了通过一台监控主机监控局域网络中的 ・ 118・ 网络主机匕。 参考文献 E1] 严宣辉,龚家骧.利用SNMP实现网络性能的实时监 控[J].计算机应用与软件,2004,21(3);67—69. [2] 中国协议分析网.http:// ̄vw.cnpa£net/Class/SNMP/ O53291853261725 O.html[-Z/aL]. -13] 刘晓华.精通JAVA核心技术I-M].j 京:电子工业 出版社,2003. [4] 林胜利,王坤茹,孟海利.Java优化编程I-M].j匕京:电 子工业出版社,2005. [5] 陈海涛.一种基于SNIVIP的简单网络管理系统 NetWatcher的设计与实现[J].计算机工程,2006(10 增刊). [6] 王平,赵宏.一个基于SNMP的简单网络管理系统的 设计与实现[J].小型微型计算机系统,2001,22(9): 1047-1050. 1-73 张白一,崔尚森.面向对象程序设计 ava[M].西 安:西安电子科技大学出版社,2003. [8] 涂继辉,钟宝荣.网络监测系统的设计与实施[J].农 业网络信息,2004(9):18-20. -19] 李学渊.基于SNMP网络性能管理的研究[J].计算 机与数字工程,2005,33(4):11-15. [1O] 王少杰.一种基于SNMP网络设备监测系统的设计 与实现口].辽宁大学学报:自然科学版,2004,31(4): 346—348. 作者简介 刘荷花,女,1976年8月出生,硕士,讲师,太原大学主 要研究方向为计算机网络与应用。 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo3.com 版权所有 蜀ICP备2023022190号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务