摘 要:文章提出一種能夠檢測民航轉報機系統硬盤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-),男,廣西貴港,中國民用航空中南地區空中交通管理局廣西分局,助理工程師,研究生,碩士,研究方向:空中交通自動化管理、民航轉報信息化。