摘 要:本文介紹了應用開源軟件Nagios,集成構建首都機場T3航站樓行李系統監控平臺,通過對數據庫監控、網絡流量監控、系統日志監控等三個模塊的集成開發,提高了IT維保工作效率,達到了減少運行崗位,降低員工工作壓力的目的。
關鍵詞:行李 監控 Nagios 網絡
中圖分類號:TP31文獻標識碼:A 文章編號:1674-098X(2011)12(b)-0014-03
1 引言
首都國際機場T3航站樓行李處理系統(簡稱BHS),是世界上較為先進的行李自動處理系統。自2008年投入運行以來,日均處理出港行李30000余件。BHS能否正常,不間斷的運行,直接關系到出港航班的準時離港,旅客與行李的同機抵達。因此第一時間發現BHS運行中出現的問題,并及時解決,做到系統組件運行過程可控制、配置管理可追溯、故障發生可恢復是首都機場T3航站樓BHS運行工作的關鍵。
首都機場T3航站樓BHS系統控制投資高達2億元人民幣,每年維護成本約3500萬元(其中絕大部分支付給行李系統建設廠商),因此,借鑒IT服務管理的方法,應用成熟的監控軟件平臺,集成系統控制管理工具,有助于首都機場行李系統的連續運行、服務品質的提升和管理成本的降低。
2 Nagios監控軟件
Nagios是一款用來監視系統和網絡的開源應用軟件,它通常運行于一個主服務器上,這個服務器運行Liunx或Unix操作系統。Nagios利用其眾多的插件實現對本機和遠端服務器的監控,當被監控對象出現異常,Nagios就會及時向管理人員報警。Nagios具有配置靈活,維護簡便,可以根據實際情況自定義shell腳本,定制監控內容等優點。但是,Nagios也有缺乏技術支持、安裝困難等缺點。
首都機場T3航站樓行李系統由數十臺服務器和交換機組成,服務器的系統環境分別為linux,unix,windows等,使用nagios監控軟件可以實現對這些不同的系統環境的同時監控。此外,nagios所具有的強大而又豐富的插件支持,可以對行李系統的多角度,多方面進行監控。Nagios開源的特性,又為我們根據自身需要進行監控插件開發,留下了伏筆。實踐與事實證明,基于nagios的T3航站樓行李系統監控平臺的搭建是切實可行的。
3 T3行李系統監控平臺的設計與實現
對T3航站樓行李系統監控有三個節點。分別是oracle數據庫的監控,Cisco交換機的監控,以及對windows服務器日志文件的監控。
3.1 oracle數據庫
T3航站樓行李系統的所使用的數據庫系統,是甲骨文公司的Oracle 10g。系統將每件行李的數據信息存入數據庫。監控數據庫的目的是在問題剛出現且未造成嚴重影響的情況下找出正在出現的問題。Nagios集成監控行李系統的oracle數據庫,對生產中的數據安全具有輔助作用,通過監控,可以幫助DBA更好的維護數據庫。
對oracle數據庫的監控是通過check _oracle插件來完成的。Nagios通過調用oracle服務器端的check_oracle插件,來獲取數據庫相關信息。Check_oracle提供了DB,TNS,Login,Cache,Tablespace等五個參數的監控。
首先要在oracle服務器端定義以上五個參數的命令:
command[check_oracle_tns]=/usr/local/nagios/libexec/check_oracle --tns orcl
command[check_oracle_db]=/usr/local/nagios/libexec/check_oracle --db orcl
command[check_oracle_login]=/usr/local/nagios/libexec/check_oracle
--login orcl
command[check_oracle_cache]=/usr/local/nagios/libexec/check_oracle
--cache orcl oracle a123456 80 90
command[check_oracle_tablespace]=/usr/local/nagios/libexec/check_oracle
--tablespace orcl oracle a123456 SYSTEM 90 80
然后在nagios服務器端定義oracle主機以及服務。在host.cfg文件中添加:
define host{
host_name DI-A
alias DI-A
address 192.168.73.142
check_command check-host-alive
use generic-host
max_check_attempts 5
check_period 24x7
contact_groups admin
notification_interval 30
notification_period 24x7
notification_options d,u,r
}
定義被監控oracle主機。在service.cfg中添加:
define service {
use generic-service
host_name DI-A
service_description TNS Check
check_command check_nrpe!check_oracle_tns
}
define service {
use generic-service
host_name DI-A
service_description DB Check
check_command check_nrpe!check_oracle_db
}
define service {
use generic-service
host_name DI-A
service_description Login Check
check_command check_nrpe!check_oracle_login
}
define service {
use generic-service
host_name DI-A
service_description Cache Check
check_command check_nrpe!check_oracle_cache
}
define service {
use generic-service
host_name DI-A
service_description Tablespace Check
check_command check_nrpe!check_oracle_tablespace
}
定義五個監控服務。這樣,nagios監控oracle數據庫的平臺就搭建起來了,監控情況如圖1所示。
3.2 Cisco交換機
46臺Cisco交換機是T3行李系統的重要組成部分,承擔了BHS的服務器以及各終端的網絡連接和數據交換。
BHS建設初期,廠商是通過MRTG這款軟件來監控Cisco交換機的,以前的運行方式需要單獨監控MRTG,這樣就需要運行人員一直對其保持關注。Nagios提供了check_mrtgtraf插件,可以將MRTG 的監控集成到nagios平臺上。應用該插件可以通過讀取MRTG的日志文件實時獲取交換機的流量值,來實現流量負載的報警。
Check_mrtgtraf插件可監控最大值和平均值兩組數據。Check_mrtgtraf插件的用法如下:
Usage: check_mrtgtraf -F
其中參數
# \"check_local_mrtgtraf1\" command definition
define command{
command_namecheck_mrtgtraf1
command_line/usr/local/nagios/libexec/check_mrtgtraf -F
/var/www/mrtg/localhost_eth0.log -a AVG -w 800,800 -c
1200,1200 -e 10
}
# \"check_local_mrtgtraf2\" command definition
define command{
command_namecheck_mrtgtraf2
command_line/usr/local/nagios/libexec/check_mrtgtraf -F
/var/www/mrtg/localhost_eth0.log -a MAX -w 800,800 -c
1200,1200 -e 10
}
在service.cfg文件中加入服務定義腳本:
define service{
use generic-service
host_name Mrtg
service_description check_ mrtg_avg
check_command chec k_mrtgtraf1
}
define service{
use generic-service
host_name Mrtg
service_description check_mrtg_max
check_command check _mrtgtraf2
}
監控情況如圖2所示。
3.3 Windows服務器日志文件監控
BHS中的windows服務器是系統的核心和重要組成部分。對這些服務器windows系統日志文件監控,可以使運行人員及時掌握其運行情況。
通過check_eventlog插件可實現對其進行監控。
Check_eventlog插件的用法如下:
CheckEventLog file=application file=system filter=new filter=out MaxWarn=1 MaxCrit=1 filter-generated=>2d filter-severity==success filter-severity==informational truncate=1023 unique descriptions \"syntax=%severity%: %source%: %message% (%count%)\"
結合BHS實際情況,我們確定閾值參數后,在command.cfg文件中添加如下腳本:
# 'CheckEventLog2' command definition
define command{
command_name CheckEventLog2
command_line /usr/local/nagios/libexec/check_nrpe -p 5666 -H
192.168.73.123 -c CheckEventLog -a file=
application filter=in MaxWarn=5 MaxCrit=20
filter+eventID==5603 filter +severity==warning
filter+eventSource==WinMgmt filter=in
unique\"syntax=%severity%:%source%:%id%:\"
}
# 'CheckEventLog3' command definition
define command{
command_name CheckEventLog3
command_line /usr/local/nagios/libexec/check_nrpe -p 5666 -H
192.168.73.123 -c CheckEventLog -a file=
application filter=in MaxWarn=0 MaxCrit=1
filter+eventID==5603 filter+sev erity==error
filter+eventSource==LoadPerf filter=in
truncate=1022 unique descriptions
\"syntax=%severity%:%source%:%id%:
please check!\"
}
# 'CheckEventLog4' command definition
define command{
command_name CheckEventLog4
command_line /usr/local/nagios/libexec/check_nrpe -p 5666 -H
192.168.73.123 -c CheckEventLog -a file=
application filter=in MaxWarn=2 MaxCrit=8
filter+eventID==8 filter+sev erity==error
filter+eventSource==crypt32 filter=in
truncate=1023 unique descriptions
\"syntax=error:crypt32:ID=8\"
}
同樣在service.cfg文件中定義服務腳本,重啟nagios后,得出篩選結果如圖3所示。
4 結語
通過應用nagios監控軟件,實現了對T3航站樓行李系統三個關鍵模塊的實時監控,通過近一段時間在測試平臺(TTS)上的運行,證明該監控系統是行之有效的,在系統出現問題時,能夠及時發現,有助于IT運行人員第一時間解決。同時,通過對監控功能模塊的集成,可以減少運行人員數量,降低員工的工作壓力。測試證明,行李系統中央控制室由原來的單位時間內3名監控人員,減少到現在的兩人,可以說提高了工作效率。
但同時我們也清醒認識到,絕大多數監控都是依賴于nagios插件來完成的,現階段也沒有足夠的開源插件,對行李系統的所有設備模塊都能完成監控。例如提供UPS電力的APC機架,以及Barco視頻顯示設備等。如何完成對這些輔助模塊的監控,就有賴于我們對插件的自主開發,這些就是我們首都機場IT技術人員接下來所需要做的。
參考文獻
[1]NSClient++ Reference Manual.
[2]Nagios Usage Guide.
[3]田朝陽.nagios中文手冊.