基于SNMP和WMI的网络设备监控管理系统

来源 :企业技术开发·中旬刊 | 被引量 : 0次 | 上传用户:maygrass
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:网络设备监控系统在保证企业信息化系统稳定运行的过程中起到了至关重要的作用。文章结合windows平台的WMI标准接口和通用的SNMP协议,设计并实现了一个对网络设备实行自动监控及预警的设备监控系统。本系统无需安装客户端,配置简单,使用方便灵活。
  关键词:WMI;SNMP;网络设备监控
  中图分类号:TP393.07 文献标识码:A 文章编号:1006-8937(2016)02-0060-03
  随着企业信息化的深入发展,越来越多的企业购买了大量的网络设备(包括服务器、电脑、交换机等)用以承载自身信息化的建设,随之而来的是多数网络设备由于缺少监控导致业务系统经常中断,不仅影响了企业业务的正常运作,也给维护人员带来了不小的压力;此外,来自不同厂商的网络设备中不可避免地包括各种异构系统平台,给统一监控带来了一定的困难。因此,本文旨在设计并实现一个基于B/S架构的基于SNMP和WMI的网络设备监控系统,基本覆盖各异构网络设备,当设备出现故障或征兆后能及时、自动地向网管人员发出预警。
  1 SNMP、WMI概述
  SMNP是Simple Network Management Protocol的缩写,意为简单网络管理协议。 SNMP是最早提出的网络管理协议之一,目前已得到了广泛的应用和支持,其中包括IBM、HP、SUN等大公司和厂商。如今SNMP已成为网络管理领域中事实上的工业标准,大多数网络管理系统和平台都是基于SNMP协议的[1]。
  WMI(Windows Management Instrumentation,Windows管理规范)是管理Windows设备的一种基础规范和标准方法。Windows系统用户可以借助WMI对本地或远程计算机进行管理,WMI允许通过一系列公共接口访问操作系统各个组件,WMI帮助系统管理员更加高效的完成计算机系统的管理[2][3]。
  2 系统设计
  2.1 网络设备对象分析
  目前在企业信息化系统的实际应用和管理中,存在各种操作系统的服务器和各大厂商的网络互联设备,导致管理困难。本文结合本企业的网络设备现状,设计了一套基于Web的网络设备监控管理系统。本企业多数服务器、PC采用Windows系统,由于微软已将WMI作为系统管理的核心,因此,服务器类设备已基本满足基于WMI组件的数据采集;其次是公司内各种交换器、路由器等设备,为满足该类设备的监控,采用基于SNMP协议进行采集。最终,本文所实现的监控系统将基本覆盖企业内网络设备的监控和管理。
  2.2 系统框架设计
  通过对基于SNMP协议和WMI组件的研究,设计架构了基于B/S结构的三层网络设备监控管理系统模型,如图1所示,分别是数据采集层、数据处理层和数据展现层。
  2.3 系统基本功能
  2.3.1 系统配置功能
  本系统为适应多种异构系统的数据采集,开放了基于SNMP和WMI两种数据采集模式,用户可根据采集设备能够匹配的数采模式进行设置。一般而言,Windows系统服务器都采用WMI模式,数据的实时性更好;而其他网络设备,本文采用了基于SNMP的采集模式,该模式数据稳定性更好;此外,本模块配置了对所检测网络设备各系统参数(CPU利用率、内存利用率、网络负载、磁盘使用率等)的预警阈值设置,用户可根据日常运行情况对设备预警阈值进行设定,若系统监测到采集数据超过了设定的阈值,可向指定用户发送邮件及短信提醒。
  2.3.2 数据采集与处理功能
  该功能分别基于SNMP和WMI两种数据获取方式进行采集,根据用户在配置模块中所做设置,自动采集网络设备运行数据并存于SQL Server数据库,通过对数据进行不同的处理以满足如触发报警事件和展现多种形式数据的要求。
  2.3.3 数据展现模块功能
  该模块主要包含单个网络设备状态查询、所有被采集设备每日数据采样一览、历史监测数据分析等界面;界面主要以图形化形式展示网络设备、服务器等运行情况。
  3 系统实现
  3.1 实现平台
  本系统基于微软.NET平台开发,优势在于基于Windows系统的服务器、PC设备已有成熟的基于.NET的WMI API,开发时只需要引入System.Management命名空间,主要使用到的类为;对于非Windows系统平台的网络设备,本系统引入了目前使用较为广泛且开源的SnmpSharpNet包[4]进行基于SNMP协议的开发。
  3.2 软件主要实体类结构及关系
  软件所设计实体,如图2所示,Device类作为Router类、Server类和Computer类的抽象父类, 各个具体设备实体类包含获取各设备基本信息的属性或方法。如Server类具有获取各个进程(ProcessStat)和硬盘(DiskStat)信息的相关方法,Router类具有获取网络(NetworkStat)相关信息的方法,这些信息都会包含在具体数据结构中。最后的工具类(WMI+SnmpService)将负责具体连接设备并获取相应指定信息。
  3.3 关键技术实现
  通过WMI和SNMP方式采集网络设备数据过程比较相似且获取进程数据较为复杂,因此,以下实现关键技术的代码将以获取进程信息为例,获取其他信息可仿照以下代码。
  3.3.1 WMI和SNMP连接及执行查询语句代码
  ①WMI方式:
  public ManagementConnectPool(string mpusername, string mppwd, string mpspace, string mpserver)
  {   // 初始化wmi连接对象,设置用户名、密码、命名空间、机器地址
  System.Management.ConnectionOptions Conn = new Conne
  ctio Options();
  ManagementObjectSearcher mos = new ManagementObject
  Searcher();
  this.username = mpusername;
  this.pwd = mppwd;
  this.space = mpspace;
  this.server = mpserver;
  Conn.Username = mpusername;
  Conn.Password = mppwd;
  Conn.Authority = "ntlmdomain:"+ConfigurationManager.App
  Settings["domain"];
  string scopestring = "//" + mpserver + mpspace;
  System.Management.ManagementScope Ms = new Managem
  entScope(scopestring);
  Ms.Connect();
  mos.Scope = Ms;
  }
  ②Snmp方式:
  ///
  /// 通过此方法可以向snmp服务发起一个请求,获取该oid下所有信息
  ///

  public static Dictionary getWalkValue(string host, string community, string irootOid)
  {
  Dictionary dic = new Dictionary();
  OctetString mycommunity = new OctetString(community);
  AgentParameters param = new AgentParameters (mycommunit
  ty);
  param.Version = SnmpVersion.Ver2;
  IpAddress agent = new IpAddress(host);
  UdpTarget target = new UdpTarget((IPAddress)agent, 161, 2000, 1);
  Oid rootOid = new Oid(irootOid);
  Oid lastOid = (Oid)rootOid.Clone();
  Pdu pdu = new Pdu(PduType.GetBulk);
  pdu.NonRepeaters = 0;
  while (lastOid != null)
  {
  if (pdu.RequestId != 0)
  {
  pdu.RequestId += 1;
  }
  pdu.VbList.Clear();
  pdu.VbList.Add(lastOid);
  target.Timeout = 200000;//超时时间尽量设置大一点,防止轮询设备时出现中断
  SnmpV2Packet result = (SnmpV2Packet)target.Request(pdu, param);
  if (result != null)
  {
  //处理获取到的结果;
  ……………
  }
  }
  target.Close();
  return dic;
  }
  3.3.2 单个进程Cpu占用率计算:
  ①WMI方式:Win32_PerfRawData提供了监控Windows系统性能的相关原始数据,通过计算能获取单个进程Cpu占用率这样的数值。
  根据MSDN所述[5],本文采用Win32_PerfRawData_PerfProc_
  Process类的两个属性PercentProcessorTime和TimeStamp_Sys100
  NS的数值作为原始数据,由于PercentProcessorTime的CounterTy
  pe值为542180608,即类型为PERF_100NSEC_TIMER,因此计算公式为:
  (N1-N0)/(D1-D0)x100%
  其中,分母D代表采样间隔时间内所有逝去的时间,分子N代表采样间隔内进程活动时间,具体计算代码如下:
  public Decimal GetCpuUsagePerProcess(string pid)
  {
  Decimal N0 = 0, N1 = 0, D0 = 0, D1 = 0,cpuUsagePer
  Process = 0;
  ManagementObjectCollection moc1 = mcp.getQueryResult("Select * from Win32_PerfRawData_PerfProc_Process where IDProcess = '" + pid + "'");   foreach (ManagementObject mo in moc1)
  {
  N0 = Decimal.Parse(mo.GetPropertyValue("PercentProcessor
  Time").ToString());
  D0 = Decimal.Parse(mo.GetPropertyValue("TimeStamp_Sys
  100NS").ToString());
  break;
  }
  Thread.Sleep(1000);
  ManagementObjectCollection moc2 = mcp.getQueryResult("Select * from Win32_PerfRawData_PerfProc_Process where IDProcess = '" + pid + "'");
  foreach (ManagementObject mo in moc2)
  {
  N1 = Decimal.Parse(mo.GetPropertyValue("PercentProcessor
  Time").ToString());
  D1 = Decimal.Parse(mo.GetPropertyValue("TimeStamp_Sys
  100NS").ToString());
  break;
  }
  cpuUsagePerProcess=((D1 - D0)==0?0:((N1 - N0)/(D1 - D0))*100);
  return cpuUsagePerProcess;
  }
  ②Snmp方式: 本文以windows系统的MIB库为例,因此采用了MIB中hrSWRunPerfCPU 的cputime作为计算单个进程cpu占用率的参数。以间隔一定时间分两次获取各进程(hrSWRunPerfCPU:cputime)数据,第一个参数为cputime1,并累加此时cpu总时间为total_cputime1,第二个即为cputime2,cpu总时间为total_cputime2,因此单个进程cpu占用率计算公式为:
  [(cputime2 - cputime1)/( total_cputime2- total_cputime1)]x100%,具体计算代码如下:
  public List GetCpuUsagePerProcess(string oid,string community,string hostIp)
  {
  Decimal cputime1 = 0, cputime2 = 0, total_cputime1=0,total_cputime2=0;
  SnmpService snmpService1 = new SnmpNet.SnmpService(community, hostIp);
  var result1 = snmpService1.getWalkValue(oid);
  List cputime1List = new List();
  foreach (var item in result1)
  {
  cputime1 = Decimal.Parse(item.Value);
  cputime1List.Add(cputime1);
  }
  foreach (var item in result1)
  {
  total_cputime1 = total_cputime1 + Decimal.Parse(item.Value);}
  Thread.Sleep(16000);//时间足够长,因为snmp更新时间较长;太短会导致数据无变化
  SnmpService snmpService2 = new SnmpNet.SnmpService(community, hostIp);
  var result2 = snmpService2.getWalkValue(oid);
  List cputime2List = new List();
  foreach (var item in result2)
  {
  cputime2 = Decimal.Parse(item.Value);
  cputime2List.Add(cputime2);}
  foreach (var item in result2)
  {
  total_cputime2= total_cputime2+Decimal.Parse(item.Value);}
  List cpuUsagePerProcessList=new List();
  for (int i = 0; i < result1.Count; i++)
  {
  cpuUsagePerProcessList.Add((cputime2List[i] - cputime1List[i]) / (total_cputime2-total_cputime1));}
  return cpuUsagePerProcessList;}
  4 结 语
  通过SNMP和WMI技术的综合应用,本文所构建的网络设备监控系统可对企业大部分信息化设备实现远程监控和管理,显著降低了信息化系统软硬件的运维压力。无论是基于SNMP标准协议的SnmpSharpNet组件包,还是微软基于.Net平台的WMI API支持,都极大的加快了软件的开发进程。采用以上两种技术都不需要被监控设备安装客户端,只需进行简单的系统配置。因此,本文所实现的B/S架构的网络设备管理系统相比其他类似系统具有设备覆盖广、使用和配置灵活方便的优势。
  参考文献:
  [1] 彭熙.SNMP网络管理代理软件开发平台的研究与实现[D].武汉:华中 师范大学,2004.
  [2] 师鸿博.基于SNMP协议的Web监控系统[D].南京:南京邮电大学,2011.
其他文献
摘 要:在变电站防误系统中,解锁钥匙又称万能钥匙,即一把万能钥匙可以开同一类型的多把锁,具有一对多的解锁特性。如果在使用过程中不小心走错间隔,誤解锁的情况将不可避免。同时,现场人员擅自或重复使用解锁钥匙,技术上缺乏有效的措施。为解决上述原因而产生的误操作事故这一长期困扰电力系统运行操作安全的难题,文章,研究开发了针对不同种类的防误装置和不同厂家生产的防误锁具,具有强制一对一解锁功能的防误装置解锁钥
期刊
摘 要:文章主要列举了螺纹紧固件常见的失效模式,针对失效模式分析失效产生的原因,并列举实例进行说明。  关键词:紧固件;失效;原因  中图分类号:TH131.1 文献标识码:A 文章编号:1006-8937(2015)29-092-02  机械类产品装配中,零件与零件之间主要依靠紧固件联接。其中螺纹紧固件应用最为广泛,紧固件的性能及联接效果直接影响到产品的性能和安全以及使用寿命。紧固件的失效是常见
期刊
摘 要:变电站是保障电力系统安全运行的重要前提,起到十分关键的汇集电能和转换电压等作用。一般情况下,电力系统由于运行环境比较复杂,运行期间很容易受到各种因素的影响,因此,往往存在很多的安全隐患和各种潜在风险。为了保障电力系统的平稳运行,就必须重视变电站线路和设备的安全防护,积极采取有效的继电保护改进措施,确保变电站的平稳运行。文章立足实际,对于影响变电站运行的各项因素进行了全面分析,在此基础上提出
期刊
摘 要:近年来,飞机已经成为一种非常重要的交通运输工具,在长时间飞行过程中使得飞机线路出现故障,严重影响飞机的安全运行。不同飞机的线路不同,一旦出现飞机线路故障问题,必须及时采取有效解决方法,确保飞机平稳运行。文章简要介绍了飞机线路故障类型和原因,分析了飞机线路故障常见的检测方式,阐述了飞机线路故障维护检修策略,以供参考。  关键词:飞机线路;故障问题  中图分类号:V267 文献标识码:A 文章
期刊
摘 要:在遗产旅游不断发展背景下,如何使西部旅游城市旅游业获得新一轮发展,已经成为亟待解决的问题。文章以发展会展旅游为突破口,以乐山为例,在分析乐山发展会展旅游的条件基础上,提出乐山会展旅游发展的若干策略,这对于西部众多遗产旅游城市发展会展旅游有一定的借鉴意义。  关键词:旅游城市;会展旅游;发展策略  中图分类号:F592.7 文献标识码:A 文章编号:1006-8937(2015)29-012
期刊
摘 要:线缆外皮剥皮装置是提高线缆机械化应用水平的重要工器具,在铺设线缆时,需要先剥离线缆的外皮,现有的方法是利用环形切刀,工人采用手工操作进行环切。由于线缆的外皮较厚,工人操作十分费劲,致使剥皮效率低、劳动强度大、占用劳动力多。文章以提高生产效率、降低线缆内金属导线伤害程度为目的,从安全作业角度出发,设计一个新型线缆外皮剥皮装置。  关键词:线缆外皮剥皮装置;分离滑轨;驱动轴杆;驱动液压筒  中
期刊
摘 要:目前,我国的电力事业的不断发展,±800 kV特高压直流输电系统被广泛的应用于我国的电网建设中,使我国的电网不断完善,更加安全、稳定。但是,在建设过程中,仍然存在很多问题,输电系统从设计、研究、建设到测试、运行,需要利用很多技术保障电压的稳定性以及安全性。文章通过分析±800 kV特高压直流输电系统可能出现的故障,提出相应的控制措施。  关键词:±800 kV特高压直流;输电系统故障;控制
期刊
摘 要:21世纪经济的飞速发展带来了城市的繁荣,同时也加剧了城市道路交通的拥堵。文章立足于大连市的交通现状,对城市道路交通拥堵进行分析,并通过探究提出有效的治理措施。  关键词:新形势;城市道路;交通拥堵;治理措施;分析  中图分类号:U491.1+2 文献标识码:A 文章编号:1006-8937(2015)32-0143-02  1 城市道路交通拥堵原因的综合分析  1.1 道路容量无法满足交通
期刊
摘 要:某建材公司运输皮带廊道位于河岸场地,评述了建设区域的地形地貌、地层岩性、地质构造、水文地质条件、不良地质现象等地质环境条件,评估了建设场地的现状、建设后及受水库运行等因素的地质环境影响,为建设项目用地的申报、审批及相关部门减灾防灾等事宜提供必要的地质依据。  关键词:河岸场地 地质环境 影响评估  中图分类号:P642.22;X43 文献标识码:A 文章编号:1006-8937(2015)
期刊
摘 要:普法工作是我国法治社会建设中的重要工作之一。六五普法提出深化“六进”主题活动,提出立足建立现代企业制度,深化“法律进企业”活动,提高企业核心竞争力和依法防范风险的能力。可见,企业普法工作是构建企业治理法制化,科学化的重要力量。增强员工的法制观念,在企业中创造良好的法制宣传氛围,对于促进和谐企业建设起到了十分重要的作用。文章结合现代企业普法工作中的实际案例,谈谈现代企业的普法工作。  关键词
期刊