基于.NET的气象网络监控报警系统的设计与实现
2016-11-11高美美侯胜利朱雪峰
高美美,侯胜利,朱雪峰,万 慧,侯 康
(1.陕西省榆林市气象局,陕西榆林 719000;2.北京信息科技大学继续教育学院,北京 100101 )
基于.NET的气象网络监控报警系统的设计与实现
高美美1,侯胜利2,朱雪峰1,万 慧1,侯 康1
(1.陕西省榆林市气象局,陕西榆林 719000;2.北京信息科技大学继续教育学院,北京 100101 )
为了提升气象网络管理的现代化水平,提高业务质量,榆林市气象局通信网络监控报警系统的设计开发基于.NET平台,采用C#、PHP、TSQL等语言,实现了网络状态自动监控、故障短信报警、故障原因填报、网络运行质量统计、固定IP签到、单机断电检测6个功能,具有实用性、易管理、低成本、可扩展等特点。介绍了系统的设计思路、开发的技术方法、系统结构和功能,详细阐述了网络自动监控、短信发送和接收、大数据存储、Web网站的设计和实现,并给出应用案例。
.NET;网络监控;短信报警;设计
伴随信息网络技术的不断发展,各类规模大小不等、设备种类、数量不同的网络广泛建设于各个领域。网络管理成为网络研究建设的重要内容,是网络安全、稳定、可靠运行的有力保障[1]。故障管理是网络管理的五大功能之一,其目标是实现自动检测、记录网络故障并通知用户,以便网络有效运行[1-2]。目前,基层气象网络管理员主要通过定期定时巡视机房和用户反馈掌握各类线路、各种设备的网络状态和网络故障,这种人工方式不能实时、有效、全面地监控网络体系中设备的运行状态,无法满足当前气象网络发展的需求。网络管理技术正趋于分布式、综合化、Web化和智能化发展[2],各行业基于计算机技术方面的研究和软件开发很多[3-6],如陈冰怀等[5]开发设计了风廓线雷达实时监控系统,实现对风廓线雷达设备数据的实时监控、显示、状态的自动判断和故障信息自动报警;纪奎秀等[6]基于.NET、Web等技术,开发了成都区域气象技术装备信息智能化管理系统,实现对大气探测设备运行信息的实时监测和语音报警、短信报警功能。
近几年,榆林市气象局大力发展现代化建设,将原来的2 M省-市广电专线升级为10 M,2 M市-县电信专线升级为6 M,10 M局域网移动带宽升级为100 M,新建人影基地4 M移动专线、10 M局域网移动带宽,并配备了2台天融信宽带路由器、2台思科核心交换机、1台上网行为管理器等高性能网络设备,以满足气象业务对信息网络的需要。气象业务改革之际,为适应新形势,保障气象业务质量稳中有升,提升网络管理的现代化水平,榆林市气象局在现有计算机网络体系的基础上设计开发了通信网络监控报警系统。笔者介绍了该系统的设计思路、技术方法和结构,详细阐述了该系统主要功能的设计与实现,并给出应用案例。
1 系统设计思路、技术方法及总体结构
1.1设计思路系统设计开发围绕网络自动监控、故障短信报警、固定IP签到等6个主要功能需求进行:①要实现对省-市、市-县气象广电线路、电信线路和各种网络设备、服务器网络状态的自动实时监控;②要能够对所有被监控对象的网络运行情况进行日、月、年质量统计,图表展示,并显示故障详情;③网络故障时能短信报警,将故障详情发送给值班员,值班员也可以通过发送命令获取某设备的实时网络状态;④有权限的用户每天交接班时可以填报故障线路和故障设备的故障原因及值班员姓名;⑤可以指定计算机用户通过浏览器进行网上值班签到,并可以统计某时间段用户的签到情况,查看签到详情;⑥可以自动或手动检测和查看某时间局域网内计算机断电情况。
1.2技术方法如何实现自动检测网络运行状态、检测结果入库、记录故障信息、发送故障短信、短信查询网络运行状态、固定IP网络签到是系统研究的重点。.NET平台[7]非常流行且成熟的任务调度框架Quartz.NET的使用是实现系统核心功能的关键技术方法。Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,用C#写成,可用于Winform和ASP.NET应用中,具有巨大的灵活性[8]。系统设计Quartz.NET永久性的植入操作系统,指定时间自动执行Ping命令,检测网络当前状态。系统在检测网络状态前,首先查询出MySQL数据库中所有有效IP地址,然后逐一进行Ping操作,记录Ping操作结果,并入库,以方便前台查询与展示。如果Ping操作失败,系统则判定该设备网络通信失败,记录下故障产生时间、网络状态、IP地址等信息,然后根据此IP地址找到相关设备的关联手机号进行短信报警。
系统利用B/S设计结构模型的优势[4,9-13],基于PHP语言的ThinkPHP框架基础上,结合MySQL数据库[14]、Web技术,采用C#[7]、Html、PHP[15]、TSQL、JavaScript等开发语言进行开发设计,实现后台管理设置监控IP地址、签到IP地址、用户信息、设备类型等信息,实现前台查看当前和以往时间的网络状态,分时段统计质量、制作报表,统计故障、显示故障信息,填报故障原因、值班签到和统计、查询签到情况,查询单机断电信息,保证了系统易管理、可扩展、可移植、低成本等特点。
1.3总体结构和功能根据系统的功能作用,系统可分为网络监控系统、固定IP签到系统、单机断电检测系统3个子系统,每个子系统又分若干子项(图1)。
图1 榆林市气象局通信网络监控报警系统结构Fig.1 Structure of communication network monitoring alarm system of Yulin Meteorological Bureau
1.3.1网络监控系统。网络监控系统包括客户端和WEB网站端。客户端采用C#语言进行了简单灵活设计与处理(图2)。点击“开始检测”后,按钮变为无效状态,系统会按每5 min检测1次的规则自动进行网络检测,检测结果记录到“修改数据库连接”指定的数据库,“运行信息显示”区域可以监控系统运行情况。该客户端与第三方短信平台成功对接,实现故障短信报警和实时网络状态短信查询功能,“短信猫配置”可以对短信猫进行串口号、波特率设置,测试和监控短信猫的运行状态。WEB网站端可以监控设备、线路的当前运行状态,地图标注当前市-省、市-县通讯线路的网络状态,查询过去某时刻的网络状态,可以按日、月、年分类统计,查询各种设备、线路的网络运行质量,并用图表展示,填报网络故障原因,展示故障详情。
图2 网络监控系统客户端 Fig.2 Client side of network monitoring system
1.3.2固定IP签到系统。固定IP签到系统可以自动判断当前签到的IP地址是否为系统后台设定的签到IP地址,如果是,则该IP地址可以签到,系统记录展示该IP地址的签到详情,否则不能签到。同时,该系统具有签到查询功能,可以统计某时段内所有签到IP地址的按时签到、未签到、逾期签到情况,可以浮动框查看签到详情。
1.3.3单机断电检测系统。单机断电检测系统包括C# 编成的客户端和WEB网站端。客户端主要实现对系统设定的局域网内计算机“手工检测”和 “自动检测”功能(图3)。系统可以在任意时刻点击“手动检测”按钮,检测计算机网络状态,“自动检测”时间默认设置为23:00。WEB网站端提供某时段(默认为前1 d)单机断电检测记录查询,显示未断电的计算机用户信息。
图3 单机断电检测系统客户端Fig.3 Client side of standalone power off detection system
2 系统主要功能的设计与实现
2.1网络自动检测功能的实现根据实际工作的需要,系统采用Quartz.NET任务调度框架设计每5 min自动检测1次所有设备、线路的网络运行状态,实现网络自动检测功能。主要C#语句如下:
DateTime now = DateTime.Now;//获取当前时间
DateTime nextTime = now.AddMinutes(5 - now.Minute % 5).AddSeconds(-now.Second);//计算出下一个需要检测的时间点
List
foreach (var item in list)//循环所有IP地址
{
//建立作业,需要此作业按照CheckJob方法执行
IJobDetail job = JobBuilder
.Create
.WithIdentity("PingJob" + item.Id,"PING")
.Build();
job.JobDataMap.Add("ip",item);//向作业中添加IP数据,供CheckJob使用
job.JobDataMap.Add("constr",connectionStr); //向作业中添加数据链接字符串,供CheckJob使用
//触发器,建立一个每5 min执行一次的线程
ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder
.Create()
.StartAt(new DateTimeOffset(nextTime))
.WithIdentity("PingTrigger" + item.Id,"TriggerGroup1")
.WithSimpleSchedule(x => x.WithIntervalInSeconds(300).RepeatForever())
.Build();
//关联任务和触发器,把作业绑定到触发器,实现每5 min执行一次检测操作
sCheduler.ScheduleJob(job,trigger);
}
2.2大数据存储功能的实现由于系统每隔5 min检测1次所有IP地址的网络状态,并记录每次检测结果,则系统会产生庞大的数据量。为了保证数据查询速度,防止出现数据量暴增而造成数据表压力过大的现象,系统设计在业务逻辑层进行水平数据拆分,采用分表处理的大数据处理机制,按年存入数据,并建立相关索引(图4~5)。
图4 信息分表存储Fig.4 Table division storage of information
图5 数据库索引Fig.5 Database index
2.3短信发送、接收功能的实现为实现网络故障短信报警、网络状态短信查询功能,系统需要与企业短信服务器二次开发平台进行对接,即应用短信猫或短信平台提供的二次开发语言包进行设计,将短信猫或短信平台的短信收发功能集成到系统中。网络监控系统经过连续2次Ping命令检测,确定某IP地址的网络不通时,则认为该网络故障,记录下该网络故障发生的时间、关联的设备名称、IP和用户手机号等信息,录入到sms_log表。系统定义短信发送触发器,每10 s检测一下是否有要发送的短信,如果有则调用短信发送程序。同时,定义接收短信的触发器,间隔固定时间接收1次短信,并根据接收到的短信命令完成查询,并将查询结果直接回执给发送请求的手机号码。 C#实现短信发送的程序如下:
using GSMMODEM;//引入第三方类库,短信猫类库
private GsmModem gm = new GsmModem();//实例化短信类
List
foreach (var item in list)
{
if (gm.IsOpen)//检测当前短信猫是否开启
{
try
{
gm.SendMsg(item.PhoneNumber,item.SmsContent);//发送短信
LogInfo(string.Format("SendMsg:发送成功-- {0},{1}",item.PhoneNumber,item.SmsContent));
BIPInfo.UpdateLog(item.SmsIndex);
}
catch (Exception ee)
{
LogInfo("SendMsg:发送失败-- Exception:" + ee.ToString());
label6.Text = "发送失败";
label6.ForeColor = Color.Red;
return;
}
}
}
2.4WEB网站的设计与实现
2.4.1前台展示。 前台展示设计使用HTML5、CSS3[16]等最新技术,整体设计简单清晰,以蓝色为主(图6)。前台展示设计了主页、网络运行监控、网络运行质量统计、网络故障填报、固定IP签到、单机断电检测查询6个模块。其中,网络运行监控包括省市县通信线路监控、市级主要设备监控2个子模块,网络运行质量统计包括按照设备名称统计、按设备类型统计2个子模块,网络故障填报包括网络故障填报和网络故障查询2个子模块,固定IP签到包括签到查询和固定IP签到2个子模块,权限用户通过选择模块可以进入相应功能栏目。
此外,主页页面具有5 min自动刷新功能,地图标注所有广电、电信线路当前网络运行状态。网络运行质量统计页面设计了图表统计、显示数据质量、浮动框展示网络故障详情。固定IP签到页面设计了浮动框展示签到详情。各页面中绿色按钮表示当前网络状况良好,红色按钮表示当前网络状况中断,网络故障发生时页面头部出现醒目提示条目。
图6 榆林市气象局通信网络监控报警系统前台展示界面 Fig.6 The front desk display interface of communication network monitoring alarm system of Yulin Meteorological Bureau
2.4.2后台管理。为了提高系统的安全性,后台管理设计采用随机验证码机制、md5算法加密、后台验证逻辑等技术。后台页面设计了首页、IP地址、用户、设备类型、签到管理、断电检测6个管理模块(图7)。其中,用户模块包括用户信息和权限管理2个管理子模块,签到管理模块包括签到时间配置和签到IP地址2个管理子模块。权限用户可以选择相应模块实现对被监控设备或线路的IP地址、收发短信的用户、设备类型、签到IP地址、单机断电检测用户等信息及其关联信息进行增加、修改、查看、设置等操作,可以对系统用户权限、签到时间进行设置。
图7 榆林市气象局通信网络监控报警系统后台管理界面 Fig.7 Background management interface of communication network monitoring alarm system of Yulin Meteorological Bureau
3 应用案例
该系统自2015年4月份开始试运行,3个子系统(网络监控系统、固定IP签到系统、单机断电检测系统)的独立、配合使用在基层气象观测业务的故障排查、应急处置等方面发挥了重要作用。2015年7月12日5:00和6:00,清涧县气象局出现连续2次自动站报文缺报现象,报告指出故障的产生是12日4:00全县停电导致。在系统使用之前,清涧县气象局曾经多次出现由于全县停电而导致自动站报文缺报、逾限的现象。为了核实事故详情、彻查故障原因、根除隐患,榆林市气象局业务科技科组织业务员开展深入调查。业务员通过查询榆林市通信网络监控报警系统中的网络监控系统,发现12日5:00和6:00清涧广电线路和电信线路运行状态均正常,说明12日5:00和6:00榆林市气象局到清涧县气象局的广电线路和电信线路以及清涧县气象局的路由器、UPS设备均正常。详细分析县级网络和供电结构,业务员认为故障原因可能产生在路由器、交换机、计算机之间的网络连接或交换机、计算机与UPS的供电线路连接上,考虑到故障是由停电引发的,基本可以判定故障原因产生在交换机、计算机与UPS的供电线路连接上。业务员立即组织指导县级业务人员详细检查交换机、计算机与UPS的连接,最终发现交换机供电是跨越UPS直接接通市电,所以当全县停电时,交换机就会断电关机,计算机断网,导致故障发生。
2015年7月15日16:00,绥德县气象局出现自动站报文逾限、签到系统未签到的现象。为落实业务管理、查明故障原因,业务管理员通过查询该系统发现,15:55绥德县气象局广电、电信线路同时发生中断,直到16:15左右2条线路恢复正常,16:16左右县级业务员进行了网络值班签到,但超出了签到时限,导致该故障的发生。
2015年8月4日10:30,系统检测到市-县各条广电线路突然中断、府谷电信线路中断,情况比较危机。市级值班员发现故障现象后立即电话通知县级值班员做好电信线路监控和应急准备工作,并及时联系了广电公司抢修线路。广电公司查明,由于广电公司机房接线器松动导致故障发生,并及时排除故障。由于业务员发现故障比较早,应急响应及时,因此自动站、土壤水分等业务报文未出现一次缺报、逾限现象,12:30左右线路恢复正常。
2015年12月20日13:45、2016年1月15日10:10,系统在通信线路和网络设备均正常的情况下检测到市-县各条广电线路同时中断的故障现象。为了彻查故障原因,排除隐患,市级技术员在广电公司技术员的协助指导下,利用系统功能,经过多次测试、检测,最终发现拔掉广电和电信路由器之间的备份网线,市-县各条广电线路会自动恢复正常,一旦插上该条备份网线,广电公司检测到广电路由器端口数据包急剧增加,一段时间后,市-县各条广电线路就会发生同时中断现象。针对此次重大技术故障的发生,市级技术员在省级技术员的帮助下,重新调整路由器配置,进行及时整改。
4 小结
(1)榆林市气象局通信网络监控报警系统基于.NET平台、ThinkPHP框架,采用C#、Web、MySQL数据库等计算机技术开发设计,实现了网络自动监控、故障短信报警、网络运行质量统计、固定IP签到、单机断电检测等功能,达到了系统设计的预期目标。
(2)系统采用B/S设计模型,保证了系统易管理、低成本、可扩展、易移植的特征,确保了系统整体的协调性和稳定性。
(3)该系统试运行期间,运行效果良好,各项指标符合业务要求。系统在业务故障排查、应急处置方面凸显出重要作用,对提升基础业务质量和提高业务管理现代化水平具有重大意义,具有很好的推广前景。
(4)系统由地市级自主研发,实现了网络值班签到管理功能,更好地适应地面观测业务改革,具有创新性。
(5)系统在使用中还存在故障信息发送延迟、漏发的现象。其主要原因是系统配备的短信猫及其接口程序性能较差。后期将考虑更换短信猫接口程序,解决实际应用中遇到的BUG、缓存等问题,不断调试、完善系统,保证系统可靠、稳定运行。
[1] 谢筱惠,刘锋,李旭东,等.浅谈基层台站网络管理[J].气象研究与应用,2013,34(3):93-94.
[2] 张杰.基于SNMP的网络管理系统的研究与实现[D].上海:东华大学,2008:9-24.
[3] 陶永.网络中心监控系统的设计与实现[D].合肥:安徽工业大学,2011.
[4] 王鑫.B/S模式实时监控的研究与实现[D].北京:中国铁道科学研究院,2005.
[5] 陈冰怀,黄宏智,陈捷雄,等.风廓线雷达实时监控系统的开发与应用[J].广东气象,2015,37(1):68-70.
[6] 纪奎秀,郑伟,蒋小平,等.成都区域气象技术装备信息智能化管理系统[J].气象科技,2009,37(4):462-465.
[7] NAGEL C,EVJEN B,GLYNN J.C#高级编程[M].李铭,译.7版.北京:清华大学出版社,2010:661-689.
[8] 陈满,李慰椿.使用Quartz.net定时备份SQL Server[J].电脑编程技巧与维护,2013(22):44.
[9] 袁正腾,高进,向玉春,等.基于.NET平台B/S模式的人工影响天气管理信息系统设计与实现[J].气象科技,2008,36(3):364.
[10] 陈辉,王守忠,杜成林,等.基于B/S架构的气象科技管理信息系统[J].气象科技,2005,33(S1):166.
[11] 吴林荣,罗慧,鲁渊平,等.重大气象灾害服务效益评估系统设计与业务应用[J].气象科技,2010,38(3):395.
[12] 吴林荣.用ASP开发基于B/S结构的网站管理系统[J].陕西气象,2006(6):37.
[13] 刘安麟,邓凤东,王钊.基于WEB GIS技术的陕西省气象信息共享系统设计[J].陕西气象,2008(5):13-14.
[14] 姜承尧.MySQL技术内幕:InnoDB存储引擎[M].北京:机械工业出版社,2011:72-83.
[15] ZANDSTRA M.深入PHP:面向对象、模式与实践[M].陈浩,吴孙滨,胡丹,等译.3版.北京:人民邮电出版社,2011:121-133.
[16] 成林.Bootstrap实战[M].北京:机械工业出版社,2013:36-122.
Design and Implementation of Meteorological Network Monitoring Alarm System Based on .NET
GAO Mei-mei1, HOU Sheng-li2, ZHU Xue-feng1et al
(1. Meteorological Bureau of Yulin City, Yulin, Shaanxi 719000; 2. School of Continuing Education, Beijing Information Science and Technology University, Beijing 100101)
To enhance the modernization level of meteorological network management, and to enhance the quality of service, Communication Network Monitoring Alarm System of the Meteorological Bureau of Yulin City was designed based on .NET platform. C#, PHP, TSQL and other languages were adopted to realize the six functions of automatic monitoring of network state, fault message alarm, fault cause reporting, network running quality statistics, fixed IP sign in, standalone power off detection. It had the characteristics of practicability, manageability, low cost, extensibility and so on. In this research, we introduced the system design thought, development technical method, system structure and function. At the same time, we expounded in detail the network automatic monitoring, message send and receive, large data storage, Web design and realization, And the application case was put forward.
.NET; Network monitoring; Short-message warning; Desgin
陕西省气象局科技创新基金计划项目(2015M-58);榆林市气象局科技创新基金计划项目(2014J-13)。
高美美(1982- ),女,陕西榆林人,工程师,从事气象信息技术保障与软件开发工作。
2016-07-15
S 16
A
0517-6611(2016)27-0191-04