引言:筆者所在學校信息化建設經過多年發展,至今形成了以網絡設施、服務器及校園網站和相關教學辦公系統為核心的信息化設施。隨著信息化加深,監控目標從早期的關注軟硬件可用性,轉變為關注運行健康度。我校采用開源監控工具Nagios,很好地實現了校園網健康監控目的。
IT設施存在多種故障可能性:硬件會因老化或環境不佳導致性能表現下降、甚至完全損壞;軟件因設計編碼缺陷而會有段錯誤、耗盡資源等故障。這些故障幾乎無法避免,一旦發生就會影響IT設施對外服務,輕則響應速度下降,重則完全不可用。因此,必須有一套機制能確保迅速發現IT設施存在的各種故障,并能做出正確應對措施,這就是監控。現在IT設施的規模都遠遠超出人力所能控制的范圍,需要自動化、可靈活擴展的工具實現無人值守監控。
研究開源監控軟件意義是既要節約軟件采購成本,又要利用開源軟件的技術優勢,彌補當前筆者學校校監控軟件的不足。
開源監控軟件最大的優勢是開放性。如果遇到軟件缺陷,用戶除了向開發者提交缺陷和在社區尋找問題的變通解決方法,還可以自己動手修改代碼來解決問題。開放性的另一個好處是用戶可以自己改裝以實現復雜的監控邏輯。開源監控軟件設計中都提供二次開發的接口。
只要遵守接口規范,用戶就能實現任意復雜邏輯的監控。
Nagios是開源監控軟件中的老牌產品,從2002年起便有投入使用的案例,至今依然在持續開發更新,至今很多企業依然使用Nagios作為主要監控工具。在Nagios之后有很多后起之秀,但都不同程度受到Nagios的影響。
Nagios是 指NagiosCore,既Nagios核心。但是光有核心不能監控任何主機,必須有合適的工具配合核心實現完整監控功能。這些工具分為兩大類:插件(Plugin)和擴展( Addon)。
Nagios插件是一組可執行文件的集合,作用是獲得被監控目標的狀態。所有Nagios集成方案都需要用插件。插件可以安裝在被監控端操作系統上,也可以和Nagios核心安裝在一起。插件根據要監控的資源類型分為操作系統、數據庫、Java Application、日志文件等類別。插件可以使用任何編程語言編寫,不需要專用開發工具。Nagios通過命令對象調用Nagios插件。
Nagios擴展的作用是增加核心所沒有的功能。在Nagios Exchange網站上,有很多擴展可免費下載和使用。Nagios團隊提供了一部分擴展,而大部分擴展由Nagios用戶和其他研究機構貢獻。各種擴展按其主要功能分門別類,數量最多的擴展有配置工具、圖形前端和企業版擴展(Nagios XI才能使用的擴展)。一般而言,擴展常用于遠程執行插件、分布式監控、報表、圖形化展示和整合其他系統(比如和Help Desk 連接)。
核心、插件和各種擴展可組成各種用途的監控系統。借助一些擴展,Nagios還可以和其他監控軟件一起使用以結合各自的功能。
NRPE是Nagios Remote Plugin Executor的 縮 寫。它由兩個部分組成,插件check_nrpe和擴展NRPE。
Nagios為 核 心,插 件check_nrpe和核心安裝于同一臺主機上。擴展NRPE和各種檢查插件安裝在被監控對象所在的主機上。NRPE以后臺服務的方式運行,并監聽一個端口。檢查插件不僅可以監控本機上的各種對象,還可以監控遠端主機上的網絡服務,比如HTTP和FTP。核心調用check_nrpe,并向后者傳遞一個參數。這個參數是一個名稱。通過SSL加密的鏈路,check_nrpe把調用指令傳遞到對應主機上的NRPE。NRPE的配置文件nrpe.cfg是名稱-命令行的字典,NRPE根據名稱尋找對應的命令行(就是檢查插件),并執行它。最后,NRPE把命令執行的返回碼和所有stdout的輸出返回給check_nrpe,check_nrpe 把這個返回碼作為自己的返回碼再反饋到核心。
這個集成方案的優點是安裝簡單。在核心主機上只需要安裝一個文件check_nrpe,在被監控主機上除了檢查插件,只需要安裝nrpe和nrpe.cfg兩個文件。
Check_MK+pnp4nagio此方案的核心Check_MK,它是多個Nagios擴展的集合。Check_MK在核心和被監控主機之間起到中間人的作用。Check_MK有專用 的 agent(代 理),和 一般的常駐系統代理不同,Check_MK代理沒有進程,而是xinetd/inetd管理的一個子服務,默認監聽在6556端口。用telnet連接此端口,代理程序會執行一個shell程序并回顯輸出結果。Check_MK代理執行兩種程序來獲得被監控目標的狀態,官方命名為Check_MK插件和本地檢查(local checks)。本地檢查就是Nagios插件。Check_MK插件與Nagios插件不同之處在于,Check_MK 插件執行操作系統命令并把結果重組為方便分割的格式文本后回顯,忽略返回值。Check_MK獲得文本后建立該主機的服務“庫存”(inventory)。舉例來說,Check_MK插件執行df命令獲得所有掛載點的名稱和使用率,Check_MK據此建立兩種庫存:每個掛載點存在和各掛載點的使用率。每種庫存都有對應的inventoryfunction,把文本內容轉為Nagios服務對象,并由Nagios核心執行檢查。
第一步:核心發起一個對主機的存活檢查,被Check_MK“截獲”。
第二步:Check_MK向此主機上的代理監聽的TCP端口發起連接。Agent收到連接后執行Check_MK插件和本地檢查程序。Check_MK Agent把所有Check_MK插件和本地檢查輸出到標準輸出的內容集合到一起,回寫給Check_MK。
第三步:Check_MK收到從Agent返回的文本,進行一些處理。首先,根據特定的標志行,把文本拆分為多段建立庫存。其次,inventory function根據標志行中的標簽,把每段中的行分配給對應的服務對象。最后,對于要收集性能數據的服務對象,再從行中提取出性能數據,保存在rrdtools的數據庫中,讓pnp4nagios繪制性能圖表。
第四步:Check_MK分析服務對象的當前狀態值。如果有狀態非OK,以被動檢查服務的方式提交到核心,由核心繼續執行通知過程。
NRPE方案的相對優勢是安裝和使用簡單。所有要安裝的文件只有4個,而配置只需要增加一個服務對象和在nrpe.cfg中增加一行命令。而Check_MK安裝時要填寫35個選項,配置文件是Python字典文件,參數眾多難以記憶。和NRPE方案相比,Check_MK有如下優勢:
(1)更安全。Check_MK不會向Agent發送任何可變參數,不會被注入惡意命令。
(2)配置更直觀。通過網頁配置工具WATO,管理員不用在文本編輯器中自己編寫對象,而只用在網頁界面上填寫必要信息,由WATO自動形成配置文件并重新加載。這樣避免出現對象語法錯誤,也簡化了配置過程。Check_MK也支持通過文本編輯器產生的對象文件。
(3)服務自動發現。對于操作系統常見的監控服務,如內存使用率、磁盤空間使用率等,Check_MK能通過插件自動發現并建立庫存。根據庫存,Check_MK能自動建立Nagios對象文件,這樣就省去了新增主機后需要自己動手編寫一堆對象文件的勞動。
(4)占用更少的計算資源。Nagios每執行一次主動檢查,要分支出一個子進程。進程占用較多的計算資源。Check_MK只會執行主機的主動檢查,在一次檢查中把主機上所有的監控服務都檢查一遍。這樣和主機關聯的服務檢查就全部變為被動檢查,不會產生子進程。這樣節約了執行檢查需要的資源,就可以縮短監控的檢查間隔。根據Check_MK網站上的描述,可以10倍地縮短間隔。
(5)監控服務和通知分離。Nagios的 Service對象只能指定一種通知命令和聯系人組,無法實現諸如“用短信通知應用管理員,同時用郵件通知經理”的要求。Check_MK通過規則集合實現了服務對象和任意數量聯系人對象的組合,從而能靈活定義通知方式。
綜合比較NRPE方案和Check_MK方案,后者更勝一籌。Check_MK方案更快更安全,并且本身提供了BI、對NagVis和pnp4nagios的原生支持、網頁配置工具WATO和靈活的基于規則的通知方法。尤其是BI,在復雜業務系統中展示和定位問題根源非常有用,對以業務為導向的監控有很大幫助。
我校信息化建設經過多年發展,至今形成了以網絡設施、服務器及校園網站和相關教學辦公系統為核心的信息化設施。硬件基礎設施包括路由器、交換機、防火墻、磁盤陣列、PC服務器和專用定制設備,操作系統Windows和虛擬化平臺為主。隨著信息化加深,監控目標從早期的關注軟硬件可用性,轉變為關注運行健康度。系統健康度的監控目標分為三個層次。
(1)故障。盡管當前IT環境普遍使用冗余和高可用機制,支撐校園信息化系統的軟硬件故障依然要監控。
(2)性能瓶頸。用戶好感會因為性能瓶頸而下降。性能瓶頸可能很明顯,比如數據庫中一個查詢語句執行過久;也可能很隱蔽,比如在特定類型瀏覽器上打開網頁很慢。
(3)運行邏輯正確性。只和我校業務有關而和IT設施無關的業務數據是否符合約束條件。
Check_MK+pnp4nagios方案能勝任實現我校監控需求,未來將在此方案的基礎上配合其他Nagios擴展以實現監控需求。該方案監控軟件優勢如下所述。
(1)輕量級的操作系統監控代理。Check_MK的代理安裝文件只有20KB,半分鐘就完成安裝,部署迅速。
(2)靈活的通知機制。相比沒有任何通知功能的Netcool Omnibus,Check_MK不僅完全保留了Nagios的通知管理功能,還提供了基于規則的通知策略,實現非常靈活的通知機制。
(3)功能齊全的網頁配置工具WATO。WATO用Python編寫,速度快,而且可修改聯級樣式表使網頁能符合用戶的審美觀。支持自定義程序監控。
(4)關聯影響視圖。利用Check_MK的BI,為每個業務系統建立聚合視圖,監控內容不僅有系統基礎設施和應用健康狀態,還有系統對外數據出口。
監控系統是我校信息化精細化運維管理的重要設施之一,通過良好的監控設置,及時發現系統狀況,可以降低我校系統運行故障率,提升教學服務水平。
Nagios開源監控軟件的運用不僅在成本上、效用上符合節約實用原則,更重要的是在運行效率和功能擴展上能夠滿足我校相當長時間內的監控需求。