摘 要:文章提出一种能够检测民航转报机系统硬盘I/O性能的监控系统,该系统可以部署于民航转报机IP终端,并定时进行数据更新,诊断后台Linux服务器硬盘运行状况,为转报机日常维护提供技术支持。系统通过visual2010进行C#设计。

关键词:I/O性能监控;民航转报;C#

引言

目前,民航转报系统为了保障系统运行的稳定性以及相关行业的政策要求,后台服务器采用Linux系统进行服务器的进程服务与支持。与此同时,在两台主备服务器的监控上,系统提供了相应的IP终端对其运行的进程、数据报文、设备参数以及其他配置操作的监控。在此过程,系统厂家并未提及硬盘输入输出能力、硬盘坏道的监控。而对于一个运行稳定要求较高的系统来说,24小时不间断的运行,使得系统硬盘故障出现的概率增加不少,这对于实际运行来说,又是一个故障的隐患。基于Linux后台操作的系统,监控硬盘一方面命令繁琐不适合一般值班人员操作,另一方面则是定期的人工维护在系统保障要求增加的多系统平台上显得更加耗时。因此,文章提出一种民航转报机硬盘I/O性能监控,系统能应用于空管一线值班,提高工作效率。

1 系统的整体设计

1.1 监控的重要参数

对于Linux硬盘监控,系统监控的重要指标有多种,例如每秒I/O数(IOPS或tps)、硬盘吞吐量(Throughput)、平均I/O数据尺寸、硬盘活动时间百分比(Utilization)、服务时间(Service Time)、等待时间(Wait Time)等。对于民航转报机来说,结合实际工作情况,我们将重点关注硬盘吞吐量、磁盘活动时间百分比以及I/O等待队列长度。这三个元素将与转报服务器处理报文息息相关。

1.2 监控的实现

系统总体实现通过对转报机后台进行部署脚本,通过前端IP终端进行执行文件下载到本地,并提取相应信息进行设计。后台脚本的实现有多方面,本系统主要考虑以上的三大主要监控要素、硬盘坏道监控以及容量监控。而前台IP终端则应用关键点,目的在于利用C#对后台执行后的结果文本进行FTP下载,并使用文献[2]所采纳的正则表达式进行文本匹配。

1.2.1 后台文件设计

后台文件设计,可以采纳Linux的iostat和sar命令进行脚本编写。iostat命令主要通过监控磁盘的活动时间及其平均传输速度,监控系统的I/O设备负载,并与此同时生成报告,在实际设计中即为后面所述的保存的后台文本信息。iostat的主要目的在于监控系统的磁盘利用率,并与此同时评估系统的I/O瓶颈。相比之下,sar命令报告CPU的使用情况,统计相关的信息,并给出相应的结果报告。在LINUX运行环境下,两者存在于工具包sysstat中。也就是说,我们必须在设计前为转报系统的后台安装sysstat工具包,为系统的设计做好环境部署。

在设计上就可以通过shell脚本进行编写,部分脚本如下:

function usage {

echo ""

echo "usage: IOAnalyzer.sh -i inIostatFile [ -l outLogFile ] \

[ -a outAlertFile ] [ -u dishUtil ] [ -r rateGEUtil ]"

echo ""

echo "For example: IOAnalyzer.sh -i /tmp/iostat.out -l /tmp/logFile \

-a /tmp/aletFile -u 80 -r 70"

echo "For AIX, please run 'iostat -d [ [ ] \

to create inIostatFile"

echo "For Linux, please run 'iostat -d -x [ [ ] \

to create inIostatFile"

exit 1

主要实现对相关功能的监控,而后则通过命令将访问结果报告存储与系统固定路径下。

1.2.2 C#的FTP下载设计

IP终端前端软件的设计上,系统主要考虑的是在不影响后台系统运行的情况下,到后台文件报告生成路径下下载文件报告并针对性分析。系统在前端提供友好人机交互界面,通过定期维护的操作指引,系统将提供人工索取后台文件和自动索取后台文件。考虑监控数据的大小,系统不建议采用频繁自动获取,而提供了手工定期维护获取,定期维护分析。这一方面避免了对linux后台文件的繁琐指令操作,也避免了维护人员的误操作。另一方面则是提供了更加丰富的系统告警及分析功能。包括对整个系统的操作日志记录方便后续空管安全事件的检查。

在FTP下载上,系统首先需要在visual2010平台上实现对FtpSupport.dll的引入。系统通过引入dll文件,可以快速进行功能实现而不再深究底层操作,缩短开发周期。

而在软件上,引入FtpSupport.dll的程序可以简单通过以下指令进行FTP的相关操作:

FtpSupport.FtpConnection ftp= new FtpSupport.FtpConnection();

ftp.Connect(ftpserver, ftpuser, ftppass);

ftp.PutFile(fromurl + filename, filename);

ftp.Close();

1.2.3 C# 正则表达式的信息提取

根据文献[2],借鉴其经验,正则表达式是C#里面较好的字符串信息处理方法。对于后台执行报告来说,系统通过上述FTP下载至本地IP终端,在此过程获取到的将是与后台无差异的文文章件。该文件将包含相关报告信息,因此系统可以通过前端对正则表达式的使用将对应的文件关键信息提取出来进行进一步的报告分析和相应告警。

在设计上C#提供了强大的正则表达式处理方式,首先引用System.Text.RegularExpressions命名空间,其次利用正则表达式构造一个Regex类,再通过使用Regex类的IsMatch方法验证匹配。在C#中Regex类的IsMatch()方法返回一个bool值,如果有匹配项,返回true,否则返回false。软件上实现有:

MatchCollection mc;

Regex r = new Regex("all is ");

mc = r.Matches("all is ok");

for (int i = 0; i < mc.Count; i++)

{

//相关子处理模块

}

2 结束语

文章提供了一套能够适用于空管值班一线的转报机服务器硬盘I/O性能监控系统,该系统通过对后台执行命令生成报告的保存,在转报机前端IP终端进行部署分析下载软件,实现了民航对民航转报机的硬盘及I/O能力与状态的监控。系统可以应用于目前民航主流转报机系统,为提高一线值班效率提供技术手段。

参考文献

[1]李伟.嵌入式硬盘录像机存储软件设计[D].浙江大学,2007.

[2]曾培彬,高升秋.基于Web信息处理的机位信息融合设计与实现[J].中国民航飞行学院学报,2014(5).

作者简介:杨奕堂(1985-),男,广西贵港,中国民用航空中南地区空中交通管理局广西分局,助理工程师,研究生,硕士,研究方向:空中交通自动化管理、民航转报信息化。