基于SNMP的智能视频监控卡口短信报警系统的设计与实现
2015-01-10张建河刘晓刚梁克勤
张建河,杨 靖,刘晓刚,梁克勤
(1.中国石油新疆油田公司准东采油厂,新疆 阜康 831511;
2.中国石油新疆油田公司采油一厂,新疆 克拉玛依 834000)
0 引 言
近年来,国内外对视频监控的需求与应用不断扩大。首先国外方面,2001年美国“9.11”事件,以及后来的后来西班牙马德里列车连环爆炸和伦敦地铁大爆炸等恐怖袭击等;其次国内方面,2009年新疆“7.5”事件,还有今年三月发生的昆明火车站暴恐案等等,使全世界范围内对视频监控系统需求空前高涨,各国部署的摄像头越来越密集,系统也日益庞大。面对复杂交错的视频监控网络系统,管理和维护难度越来越大,主要面临如下问题:
(1)管理成本高。城市卡口分布广,设备种类多样,系统结构越来越复杂,规模越来越大,而网络管理人员较为缺乏。进而直接导致发现和排除网络故障的难度呈几何级增长。
(2)设备可用性要求非常高。基本要求设备全天24小时不间断工作。一旦某个节点出现故障,如不能及时发现和解决,不仅无法得到用户需要的卡口信息,还可能造成重大的安全隐患。
(3)设备故障发现和处理严重滞后。当成百上千的节点中某个出现故障时,管理监控人员往往不能第一时间发现。因此,如何及时发现问题,准确定位问题,并及时告知管理人员变得尤为重要。
针对以上问题,本文引入基于SNMP的网络管理工具来构建智能卡口管理系统,对卡口的故障信息自动识别和记录存档,并可通过短信等方式通知网络管理人员,从而帮助相关技术人员和值班人员及时有效的发现并解决卡口监控设备在运行中出现的故障和告警等问题。
1 技术简介
1.1 SNMP 网络管理模型
SNMP网络管理模型主要由四部分组成:网络管理站、被管设备、管理信息库(MIB)和管理协议(SNMP)(见图 1)。
图1 SNMP网络管理模型
SNMP管理模型具备典型的客户/服务器体系结构。网络管理站启动管理器进程,对网络设备发送各种查询报文,并接收来自被管设备的响应及陷阱(trap)报文,将结果显示出来,而被管设备上运行着代理进程,负责接收、处理来自网络管理站的请求报文,然后从设备上其他协议模块中取得管理变量的数值,形成响应报文,反送给管理站。在一些紧急情况下,如接口状态发生改变,呼叫成功等时候,主动通知管理站 (发送陷阱TRAP报文)。管理对象的信息存放在被管设备的MIB库中。管理器进程将各种操作维护命令组装成SNMP报文,发送到代理进程,代理进程通过操作MIB库完成这些请求,并且把结果送回给管理器进程,从而完成管理功能。
MIB即每个受管理的SNMP设备都维护包含统计信息和其它数据的数据库。网络管理活动是通过访问和操作MIB中的管理对象实例来实现的,针对智能卡口主要是视频服务器设备(DVS)的配置管理。不同设备的功能、结构不一样,所以监视的参数内容、数据也不一样。
1.2 系统开发包及工具
1.2.1 网管开发包
SNMP++是为网络管理应用程序开发者提供的具有SNMP服务的一套C++类的集合。它具有基于面向对象模型建立的SNMP应用程序接口,但SNMP++并不是现有SNMP引擎的扩充和封装,为了效率和方便移植,它只用到了现有SNMP库里面的一部分。SNMP++的目的就是提供强大灵活的功能,把面向对象的优点带到了网络编程中。
1.2.2 开发工具
由于使用了WinNet网络编程,基于Windows平台,开发工具采用VC++6.0,同时利用飞信API工具实现免费故障短信信息发送等功能。与传统的短信报警平台相比,传统模式需要购置短信模块,发送报警短信需要运营商收费,而采用飞信API工具无需增加硬件投资,发送短信免费,具有很好的经济实用性。
2 系统总体设计
2.1 系统角色建模
系统中存在以下3个角色。下面对各类角色的任务设计则可进行分别描述。
(1)普通用户:用户可以根据自己的账号登陆到系统中。在线查看监控卡口SNMP状态信息。可以对个人信息进行修改和维护等操作。
(2)维修工程师:系统通过SNMP状态检查返回故障信息,并发送短信给现场维修工程师。同时该角色继承普通用户的功能可以查看和修改个人信息,查询系统各个监控卡口SNMP状态故障信息。
(3)管理员:除了继承普通用户的功能外,管理员还可以对系统进行维护,进行用户角色权限的分配工作。
系统角色建模如图2所示。通过对系统角色功能用例分析,系统主要功能模块包括6个,发送故障短信,个人信息管理,系统查询,确认故障处理,角色权限维护和系统维护功能。针对不同的用户角色,系统中存在不同的操作及权限。
图2 系统角色建模图
2.2 系统架构建模
本文研发系统的技术架构采用包和子系统分层。系统架构建模如图3所示。系统架构的分层主要由用户界面层、业务服务层、业务对象层、系统层、中间件、C++和基本复用层组成。业务服务层包括发送故障短信、系统查询、权限修改、故障确认、系统维护,业务对象层包括个人信息表,设备信息表,还包括普通用户、管理员和工程师。系统层包括支持访问系统数据库的类。中间件层支持对面向对象的数据库系统访问。基本复用包括支持模式的类。
图3 技术架构图
3 系统的实现
本系统三个主要角色是普通用户、维修工程师和管理员,他们在各自职责范围内实现不同的功能。限于篇幅,本节主要介绍SNMP状态查询功能和故障短信发送2部分功能实现内容。
3.1 SNMP++开发状态信息查询系统功能实现
SNMP++是以一套C++类作为基石的。它包含了对象描述符(Oid)类、变量绑定(Vb)类、协议数据单元(Pdu)类、Snmp 类。 在利用SNMP++开发实际应用时,首先应开启Snmp类的socket。然后,准备好SNMP通信基本参数,如设置SNMP协议版本、通信端口、共同体名等,如果没有对这些基本参数进行设置,程序采用默认参数:SNMP协议版本为 1,端口为161,共同体名为public。接着,根据网络管理目标,设置代理IP地址,要获取或设置的网络管理信息。创建一个SNMP会话。如果会话创建成功,开始snmp相关操作,如get操作、set操作、get_next操作。如果操作成功,则从变量绑定中获取相应的网络管理信息。最后,关闭Snmp socket,释放资源。
SNMP读取设备状态信息程序活动图如图4。
图4 SNMP读取设备状态信息程序活动图
3.2 故障短信报警开发实例
SNMP与邮件系统、GSM短信猫、飞信API等系统结合实现报警功能。报警系统基于SNMP获取数据,首先配置监控属性如节点状态、接口状态、故障信息等;其次配置触发的动作。通过以上配置,当设备节点出现异常时,可第一时间短信通知网管人员。对于上述配置,首先要将报警信息保存为Log,然后通过邮件或短信方式发送报警信息。下面利用C++编写基于WinInet网络访问飞信开发HTTP协议API接口,此接口支持HTTPS,可避免在网络传输中泄露数据。飞信API类图如图5所示。
图5 飞信API类图
可以看出通过调用 CFeiXin::FX_SendMessage("飞信登录用户名","飞信登录密码","手机号","短信内容")方法,可以很方便地发送短信信息到维护工程师用户的手机上。
图6是FX_SendMessage方法的程序活动图。
图6 飞信API发送短消息程序活动图
3.3 与数据库系统结合
由SNMP与数据库系统结合,将收集的数据存储于数据库,再根据数据库系统的相关功能,如备份数据,恢复数据、定制视图、SQL语句定制查询等功能,比如车辆信息查询、卡口交通信息,车流信息,故障报警处理等。
4 结 语
随着网络技术的发展,SNMP成为管理网络设备的简单而有效的方法。本系统采用面向对象设计方法,深入浅出。系统充分利用了SNMP实时检查设备故障信息,及时发送短消息给维护工程师,保证故障得及时有效的解决,同时由于采用飞信API的方式发送故障短信,发送消息免费,相比传统SMS模块方式具有较好的经济使用价值。
[1]蒋馨.浅析国外智能视频监控技术的发展及应用[J].国际博览,2011(10):105-108.
[2]王朋武.WinSNMPAPI规范[R].北京:北京佳合通信技术公司,2002.
[3]Banker Kim, Mellquist Peter E.SNMP++, Connexions, The Interoperability Report[R].1995.
[4]刘雪飞,吴伯桥,凌涛,等.基于SNMP++网络管理软件的编程实现[J].信息安全与技术,2013(5):63-65.
[5]王金祥.浅析智能视频监控技术[J].山东工业技术,2014(4):45-46.
[6]岑贤道,安常青.网络管理协议及应用开发[M].北京:清华大学出版社,1998.
[7]刘宝华,田亚丽,陈端迎,等.分布式网络管理系统中SNMP的开发与实现[J].软件,2012(6):135-138.
[8]李俊,熊文龙,宫浩然.SNMP 原理及安全性分析[J].交通与计算机,2003(1):16-19.
[9]梁家明.大型局域网管理的探讨[J].广西大学学报:自然科学版,2004(2):25-28.
[10]赵健.基于SNMP网络管理机制及其应用[J].中国民航学院学报,2003(2):94-98.