摘 要 以荔湾区公安分局机房运维管理经验为依据,结合计算机网络、程序设计等技术,通过监控机房内交换机的运行状态来掌握机房内的温度变化,一方面节省温度监控子系统的建设开支,另一方面免去子系统的运维工作,提高管理效率。目前已使用该系统对分局8个比较重要的机房进行温度监控,未来计划普及到各异地办公单位机房。
关键词 机房 温度 交换机 程序设计 运维自动化
广州荔湾区公安分局目前有8个比较重要的计算机网络机房,分布在荔湾区5栋办公楼内。机房内大多安装使用普通家用空调,也没有来电自启功能。机房都是无人守值,遇到空调故障或市电切换时,就会出现机房内没有空调工作而温度升高的情况。由于发现不及时,设备在温度过高的环境下运行,往往会导致服务器或交换机出现死机的情况,严重时甚至会烧坏硬件设备,影响日常业务应用的正常运行。所以,对机房温度进行监控是很有必要的。
传统的单机房温度监控需要安装专门的温度采集仪,然后通过配备手机卡将温度报警信息以短信的形式发送给用户。这种方式的特点结构简单,但不便管理,有一定的建造成本和后期的运维成本。传统的多机房温度监控,为了达到统一管理的目的,需要设立专门的服务器,搭建专门的平台进行统一管理。温度采集仪通常通过无线方式将采集数据上传到互联网服务器,由平台对温度数据进行分析并通过多种形式将数据结果呈现给用户。这种温控方式的优点是温控精确,便于管理,缺点是建设成本高,部署复杂,需要专人进行后期运维。对于我们公安内部计算机网络机房来说,还需要考虑采集的数据通过何种网络何种方式传输的问题,这种方案的性价比很低,可操作性不强。
在计算机网络运维管理中发现,网络交换机本身就具备有设备温度监测功能,只需要定时监测交换机的温度就可以掌握机房内的温度变化,温度监控无需另外建设,日后也无需维护,只要网络交换机在它就在。而且,计算机网络机房内一般都有多台正常运行的网络设备,只要对2台以上的设备进行采集,设定报警模型,那么单点故障问题也能得到有效解决。为此,通过整合一些现有已掌握的技术,用最小的代价去解决这个问题,就能达到良好的实际使用效果。系统设计包括温度采集、数据存储、分析告警和数据展示4个部分,系统架构如图1所示:
图1 系统架构
分局原来在自动化运维管理方面已经建立了网络自动巡检机制,实际项目中把温度采集和数据分析模块都部署在网络巡检服务器上,WEB管理服务器也是共用的,短信报警模块也是已经建立好的,所以本系统的建立在硬件上是零投入的。
1 温度采集与数据分析
设备温度的采集可以通过SNMP协议、MIB管理信息库等方式获取,但为了防止设备兼容性而导致程序复杂化的问题,同时考虑到程序未来的扩展性,决定以最原始的telnet方式实现。温度采集与数据分析的技术难点主要在于需要模拟telnet建立与交换机的连接,并发送相应的交换机命令完成设备环境温度的显示,通过捕获console的返回信息,最后通过正则表达式获取交换机的实时温度。
使用了Microsoft.Net平台的C#语言进行温度采集和数据分析。C#编程语言是由微软公司专门为NET平台设计的语言,它从C、C++和Java发展而来,采用了这3种语言最优秀的特点,并加入了它自己的特性。C#是事件驱动的,完全面向对象的可视化编程语言,使用了Visual Studio 2017集成开发环境来编写C#程序。使用IDE进行敏捷开发,程序员可以方便地建立、运行、测试和调试C#程序,这就将开发一个可用程序的时间减少到不用IDE开发时所用时间的1/10以下,大大缩短了开发周期。数据采集程序运行界面如图2所示:
采用c#提供的TcpClient类与交换机新建一个标准的socket连接,通过GetStream方法获取返回数据,主要代码如下:
图2 数据采集程序运行界面
由于是对交换机的温度而不是机房的温度进行监控,所以在建立分析模型时就需要进行条件综合分析。例如,当该机房中1台交换机设备温度过高时,有可能是因为设备的原因造成的;当该机房中2台交换机设备温度过高时,基本确定是机房环境的问题;当交换机温度升高5℃,但之后不再上升时,有可能是由于室外温度过高或空调预设温度过高造成的。以上的情况,都是在实际运维时遇到过的,分析模型也需要在今后的工作中不断地改进和完善。
当条件与分析模型一致时,系统将发送报警信息到短信平台,主要代码如下:
2 数据储存与数据展示
程序每15min检测一次设备的温度,并将结果记录到数据库。本程序使用了Mysql5.6数据库,主要建立了Temperature(交换机的IP地址、TELNET用户、密码、正则表达式、命令、标准温度、详细描述等信息)、TemperatureLog(设备ID、采集时间、温度)、TelnetpromptType(字典)3张数据表。
在后台管理中,采用了ECharts数据图表中的折线图来对设备温度数据进行可视化的展示。ECharts全称为Enterprise Charts,是一个使用Javascript实现的开源可视化库,遵循BSD开源协议,可以流畅运行在PC和移动设备上,兼容Chrome、Firefox、Safari、IE8以上浏览器,交互丰富,可高度个性化定制的数据可视化图表。ECharts提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于BI的漏斗图,仪表盘,并且支持图与图之间的混搭。主要代码如下:
function myFunction(_deviceid,_type)
为适应今后发展的需求,UI方面采用了基于Bootstrap3的前端框架。它基于HTML、CSS和JS,简单灵活,适用于响应式布局、移动设备项目的开发。如图3所示,机房交换机后台温度监控能通过移动警务终端浏览,ECharts的折线图也能自适应显示。
图3 电脑浏览器和警务移动终端后台显示界面
服务端主要通过一般应用程序temperature.ashx页面接受参数,然后从数据库中读取筛选相应设备的数据记录,再构造好折线图的标题、横坐标、纵坐标、温度数据、警界温度,最后以JSON的数据格式返回给客户端。客户端则通过HTTP向服务器发送AJAX异步请求,设备ID、日期等参数以POST方式提交,以获取相应交换机的温度检测记录。异步请求代码如下:
目前已使用该系统对分局8个比较重要的机房进行温度监控,试运行以来效果良好,未来计划普及到各异地办公单位机