在講求客戶權益的現代,「服務中斷」是每個企業都無法承受的考驗,更是每個網管人員心中揮之不去的夢魘。但限於人力的考量,網管人員不可能24小時都站在主機前監控系統服務的運作,因此一套能時時監控系統服務,當系統服務發生異常時能夠即時通知管理者的監控系統,將是每個網管人員所迫切需要的。
安裝完成後,以瀏覽器瀏覽,應可看到如下頁圖例所示的監控畫面。
至此,一個完整的服務監控系統已完成。但截至目前為止,監控服務所產生的結果是儲存在檔案中(status.dat),對於監控資料的運用,不是那麼地方便,因此接著繼續介紹NDOUtils軟體,此軟體會將Nagios的資料輸出到資料庫(MySQL)上,以便管理者能更有效的利用監控資料。
使用NDOUtils
NDOUtils主要由NDOMOD Event Broker Module(NDOMOD.O)、NDO2DB、LOG2NDO、FILE2SOCK四個部分所組成,以下分別加以介紹:
‧NDOMOD Event Broker Module(NDOMOD.O):主要的NDO模組,功能在於將Nagios所須產出的資料利用TCP Socket或UNIX套接檔案(Unix Domain Socket)的方式將Nagios所輸出的資訊寫入至資料庫中,但要特別提醒的是,使用此模組功能的前提為,Nagios在編譯時須已開啟Event broker的功能(這也是為什麼在編譯Nagios原始碼的時候須加上「--enable-event-broke」參數的原因)。
‧NDO2DB:主要用來接收由NDOMOD模組所輸出的資訊並將該資訊寫入至資料庫中。啟動NDO2DB後,將建立一個TCP Socket或UNIX套接檔案(來監聽取得客戶端(在此為NDOMOD模組)所輸出的資訊。NDO2DB可同時監聽多個客戶端以取得各個客戶端所輸出的資訊,亦即讀者可同時建立多個Nagios監控點,而使用NDO2DB來同時收取輸出的資訊。
‧LOG2NDO:主要用來將Nagios的歷史日誌透過NDO2DB輸出至資料庫。
‧FILE2SOCK:類似LOG2NDO功能,但資料來源除了可利用檔案外,還可利用標準輸入(stdin)等檔案輸入至資料庫中。
流程有三個步驟,首先NDOMOD模組接收從Nagios傳出的資訊,接著透過TCP或UNIX套接檔案將資訊傳遞至NDO2DB程式,最後NDO2DB再將接收到的資訊寫入資料庫。
接下來說明如何安裝NDOUtils。在此假設讀者已安裝好MySQL,安裝目錄為「/usr/local/mysql5」。由於筆者測試以TCP方式連接資料庫的方式,均無法正常地匯入資料庫(網路上有人提到這可能是BUG),所以將使用以UNIX套接檔案的方式來連接資料庫。在開始進行之前,先下載最新版本的NDOUtils(目前最新的版本是1.4b9)。
先執行指令「wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download」下載安裝檔。然後編譯相關程式,使用指令「./configure --prefix=/usr/local/nagios/ --enable-mysql --with-mysql=/usr/local/mysql5/bin/」啟動MySQL支援功能,並將相關程式安裝在「/usr/local/nagios/」目錄中。接著依序執行指令「make」和「make install」編譯與安裝。
接著建立資料庫。在NDOUtils的「db」目錄中,有個mysql.sql檔案,請依照檔案內容建立相關的資料庫表格,然後拷貝相關檔案。在安裝完成後,由於本例使用的Nagios版本為3,所以必須將相對應的ndomod-3x.o及ndo2db-3x程式拷貝至「/usr/local/nagios/bin/」目錄下。然後設定相關的組態檔。
先設定nagios.cfg,在檔案內容加入以下的設定:
再設定ndomod.cfg組態檔。基本上,此檔案只要設定傳遞資訊的方式即可:
設定ndo2db.cfg組態檔。基本上此檔案僅需設定資料庫的相關資訊即可(如使用者名稱、密碼等資訊):
最後,啟動相關程式。先以指令「/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg」啟動Nagios程式,然後執行指令「/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg」來啟動ndo2db程式。
如果一切設定無誤,此時應有相關資料匯入資料庫中,讀者可檢查「/var/log/messages」,如果有下列訊息,即表示已成功地將Nagios的資料匯入到資料庫。
在應用Nagios的資料庫上,讀者僅須監控下列兩個表格的資料,即可得知目前主機及系統服務的狀態:
‧nagios_servicestatus:可記錄服務監控的狀態
‧nagios_hoststatus:可記錄主機監控的狀態
結語
維持主機服務的運作,是每個網管人員最基本的職責。在此領域中,Nagios應算是最適當的解決方案,它沒有華麗的介面,只是簡單明確地告知主機服務目前的存活(Alive)狀態。而最令筆者激賞的是其所提供的Plug-in程式均是單獨可執行的程式,讓網管人員能夠很方便地嵌入自行開發的軟體中。
而Nagios發展至今,也有為數眾多的Plug-in程式如類似MRTG的頻寬監控等等,只要發揮一點巧思,即可利用Nagios建立一套不亞於商業軟體的監控系統。
(本文原載於網管人第60期)