基於 Linux 系統的Nagios網絡管理模塊的實現

 
1.   引言
隨着計算機網絡的普及,網絡管理已成爲信息時代中最重要的問題之一。在現有的技術條件下,人們希望有一個更加穩定可靠的網絡環境。計算機網絡管理系統就是應這樣的需求而產生的。它對網絡上的各種設備進行管理,通過監視和控制這些設備,及時地向管理人員報告網絡狀態,並且簡化網絡故障的處理,減少故障造成的損失,提高網絡的服務質量和效率。面對企業大大小小的服務器,單憑某個網管工具或某個人,已經不能勝任如此大的工作量同時也無法滿足業務緊迫性的要求。各類企業之間以及企業內部的服務也越來越普遍,對於企業管理員的任務也是隨之更加繁重。即使是一個小公司,在他們所使用的計算機系統中,也應該包含有不少數量的,運行着許多服務和軟件包的硬件。大公司則更有成百上千的同類設施需要管理和運行。在管理員不可能及時去注意每一個服務和軟件的情況下,爲了對這些衆多的服務和軟件進行有效的管理。
一般來說,是採取發生問題後進行解決的方法,即基於反應的解決方案。但是這種解決方案通常的效率都是非常低的,如果反應及時,只需少數的幾分鐘就可以解決問題,但如果發現問題晚了,就會浪費時間帶來更多損失。比如,察看及時地話,通過日誌就可以發現某個服務是否運行異常,然後解決掉,但如果是在此服務異常運行已經很嚴重時,要恢復它,不僅困難還會帶來不小的損失。因此,一個完成此類檢測功能的自動化工具對於網絡管理員就顯得非常重要。Nagios 是一個運行於 Linux 系統上的開源網絡管理監測系統。它強大的功能可以實現對網絡上的服務器進行全面的監控,包括服務(apachemysqlntpftpdiskqmail http 等等)的狀態,服務器的狀態。
2.   Nagios 系統
2.1 Nagios 系統介紹
Nagios是一個用來監視系統和網絡的開源應用軟件,它通常運行於一個主服務器上,
這個服務器運行 Liunx Unix 操作系統。Nagios 利用其衆多的插件實現對本機和遠端服務的監控,當被監控對象出現異常,Nagios 就會及時給管理人員告警。它是一個基於 TCP/IP
協議的軟件包,包含有nagios主程序和它的各個插件,配置非常靈活,可以監視的項目很
多,也可以通過自定義 shell 腳本進行監控服務,非常適合各類企業的網絡應用。
2.2 Nagios 系統的主要特點
Nagios 系統的特點主要有下面幾點:
1. 監控主機資源和網絡服務
2. 允許用戶通過設計實現簡單的插件來監控自己特定的服務
3. 當被監控對象出現問題時,會及時通知管理人員
4. 事先定義事件處理程序,當對象出現問題時自動調用對應的處理程序
5. 通過 web 頁面來監視對象狀態,警告提示和日誌文件。
如下圖 1 Nagios 的結構圖:

1    Nagios 系統的結構圖
可見,Nagios 採用分佈--集中的管理模式。在 Nagios 服務器上安裝 Nagios 主程序,
在被監控主機上安裝 Nagios 代理程序。通過 Nagios 主程序和 Nagios 代理程序之間的通訊,監視對象的狀態。
2.3  Linux上運行 Nagios 系統
Nagios 系統是運行在 Linux 或者 Unix 操作系統之上的,安裝前確認操作系統支持 TCP/IP協議並且有 C 語言編譯器(如,gcc )。如果沒有 web 服務器,例如 apache,預先安裝之。在 Nagois 官方網站 http://www.nagios.org      下載 Nagios 主程序、插件和安裝文檔,最新版本是 Nagios 3.2.3Nagios 是開源項目,它的安裝也比較簡單,按照文檔一步步執行就可以順利完成。
如果 Nagios 安裝在/usr/local 目錄下,完成後執行如下命令:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
這個操作用來預先檢查 nagios 配置的是否正確。如果沒有錯誤,開始運行 Nagios
service nagios start (後面也可跟這些:restart, stop, reload.),也可以這樣啓動:
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
Nagios 啓動正常後,登錄到 nagios CGIs
打開瀏覽器,輸入 http://主機 IP/nagios/如果配置正確將會進入到  nagios    的監視界面,然後可以查看沒人情況下主機被監視的細節數據。如果出現提示“Internal Server Error”,這可能是本機上安裝並正在運行Redhat Linux. 首先查看 Linux 是否處於 Enforcing 模式getenforce然後把 Linux 置爲 permissive 模式setenforce 0重新打開瀏覽器就可以看到被 Nagios 監控的服務了。
現在訪問nagios的服務器web界面,界面如下圖2
訪問界面圖2
3.  運用 Nagios 實現對網絡上服務器的監控
3.1  實現原理
處於網絡中的各種服務器需要管理和維護,管理員不可能及時對每一臺的狀態都進行監
控,這時候當然需要藉助軟件的功能來實現了。Nagios     的功能是監控服務和主機,但是他
自身並不包括這部分功能,所有的監控、檢測功能都是通過各種插件來完成的。啓動 Nagios後,它會週期性的自動調用插件去檢測服務器狀態,同時 Nagios 會維持一個隊列,所有插件返回來的狀態信息都進入隊列,Nagios      每次都從隊首開始讀取信息,並進行處理後,把狀態結果通過 web 顯示出來。Nagios 提供了許多插件,利用這些插件可以方便的監控很多服務狀態。安裝完成後,在nagios 主目錄下的/libexec 裏放有 nagios 自帶的可以使用的所有插件,如,check_disk 是檢查磁盤空間的插件,check_load   是檢查   CPU       負載的,等等。每一個插件可以通過運行./check_xxx h 來查看其使用方法和功能。Nagios 可以識別 4 種狀態返回信息,即 0(OK)表示狀態正常、1(WARNING)表示出現一定的異常、2(CRITICAL)表示出現非常眼中的錯誤、3(UNKNOWN)表示被監控的對象已經停止了。Nagios 根據插件返回來的值,來判斷監控對象的狀態,並通過 web 顯示出來,以供管理員及時發現故障。
3.2  利用 Nagios NRPE 插件實現網絡上服務器的監控
知道 Nagios 是如何通過插件來管理服務器對象後,現在開始研究它是如何管理遠端服
務器對象的。Nagios 系統提供了一個插件 NRPENagios 通過週期性的運行它來獲得遠端服務器的各種狀態信息。它們之間的關係如下圖 3 所示:
3 Nagios 通過 NRPE 來遠端管理服務[
1. Nagios 執行安裝在它裏面的 check_nrpe 插件,並告訴 check_nrpe 去檢測哪些服務。
2. 通過 SSLcheck_nrpe 連接遠端機子上的 NRPE daemon
3. NRPE 運行本地的各種插件去檢測本地的服務和狀態(check_disk,..etc)
4. 最後,NRPE 把檢測的結果傳給主機端的 check_nrpecheck_nrpe 再把結果送到 Nagios狀態隊列中。
5. Nagios 依次讀取隊列中的信息,再把結果顯示出來。
下面通過一個監控遠端服務器 CPU 負載情況的實例,研究如何實現通過 NRPE 來管理遠端服務器。假設有一臺遠端服務器的 IP 10.20.0.110Nagios 服務主機 IP 是:10.20.10.1。它們都已經安裝上了 nagios 系統,主機通過 NRPE 檢查運行中的服務器 CPU 的負載量,當負載量超過   80%是發出警告(WARNING)報告,超過 95%時發出緊急(CRITICAL)報告。在Nagios 的插件中存在 check_load -w $ARG1$ -c $ARG2$插件,通過查看其幫助, Nagios 調用它時,就會去檢查對象主機的  CPU       負載,達到$ARG1$指定的數值時就會發出警告(WARNING),達到$ARG2$時發出緊急報告(CRITICAL)
 
首先是在遠端服務器上的修改:
1. Nagios 用戶擁有對如下文件的所用權:
chown nagios.nagios /usr/local/nagios
chown –R nagios.nagios /usr/local/nagios/libexec
然後如果沒有安裝 xinetd,則先安裝 xinetd
2. 按照 Nagios 文檔安裝好 nrpe 插件。
3. 修改文件/etc/xinetd.d/nrpe
only_from  = 127.0.0.1 10.20.10.1(這個是 Nagios 主機的 IP)
nrpe 允許以上 IP 的機器通過 nrpe 查詢服務
4. /etc/service 文件裏添加:
nrpe  5666/tcp  #nrpe
然後  service xinetd restart
5. 執行:netstat at | grep nrpe
如果出現:tcp   0      0 *:nrpe   *:*    LISTEN 說明NRPE監聽已經成功啓動了
6. 執行  /usr/local/nagios/libexec/check_nrpe H localhost
出現 NRPE  v 2.8.1 則安裝成功。
7. 確認本地防火牆允許遠端服務器訪問 NRPE daemon
iptables -IRH-Firewall-1-INPUT -p tcp -m tcp –dport 5666 -j ACCEPT
service iptables save
8. 打開/usr/local/nagios/etc/commands.cfg,找到 check_load 服務,修改如下:
define command{
        command_name    check_server_load
        command_line    $USER1$/check_load -w 80% -c 95%
                }
9. 打開 /usr/local/nagios/etc/nrpe.cfg 可以看到裏面已經默認定義了一些檢測服務,如:
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_hda1
註釋掉除 check_load 外的其它服務定義。
最後是 Nagios 主機上的修改:
1  Nagios 主機上安裝 nrpe 插件。
2  打開/usr/local/nagios/etc/command.cfg     添加如下行:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe –H 10.20.0.110 -c $ARG1$
}
3再在對象定義的配置文件裏(host.cfg 文件),修改 host 爲要檢測的主機的 IP 地址,然後
在服務中添加要檢測的命令:
define service{
use linux-service
service_description remote_CPU_Load
check_command check_nrpe!check_load
}
4  nagios.cfg 主配置文件中,cfg_file 值爲 host.cfg,運行
/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg
如果沒有錯   就啓動 nagios
service nagios start(restart,stop)
5  打開瀏覽器:http://主機 IP/nagios 
可以看到所監控的遠端機器的這個信息了(check_server_load     的返回結果),參看圖2.正常狀態用綠色表示,一旦遠端服務器負載超過 80%,狀態信息就會變成紅色警告管理員。
4.  Nagios 系統的評價和建議
本文是對 Nagios 的遠端監控功能的應用和研究,要想得到更加複雜的服務,還需要進
一步的研究它的文檔,並且不斷的去嘗試。和所有的網絡管理工具一樣,要想進行充分利用
Nagios    進行全面的監控服務,需要進行相當複雜的設置,並且需要在運行時進行調整,以
確保所提供的信息是正確的,這些都會隨着對 Nagios 的進一步瞭解而慢慢容易起來。雖然
Nagios 配置複雜,但是一旦配置成功後它的操作很簡單,大部分是基於 web 的操作,而且
易於擴展,這是它的兩大特點。它還可以很輕鬆的與其他的工具進行整合和擴展,可以從其他的應用軟件中接收數據,或者向一些報告引擎或者工具中發送數據等,例如,它可以藉助 mrtg 軟件來義圖表的形式顯示監控的服務狀態,限於篇幅在此就不細說了。Nagios 是一個非常強大的工具,在它運行後,它能夠讓你的 IT 工作變得更加容易。而相比商業版的類似軟件,它也具有低成本的優勢。自然,最好的特點是由於它是開放源代碼的軟件,因此我們隨時可以從整個 Nagios 社區中獲得幫助,能夠共享社區中的各種插件和經驗。最後對使用 Nagios 系統提出一點建議。在使用 Nagios 之前,開始考慮需要監控哪些服務和主機,對它們進行統一的規劃,首先對重要資源服務進行管理,接着再去實現對其它服務進行管理;在配置完 Nagios 後,保存其配置文檔,做好必要的註釋,這將會使所監控管理的資源和所運行的插件更加清晰,也方便其他人以後能夠在已有 Nagios 上繼續工作。
發佈了54 篇原創文章 · 獲贊 21 · 訪問量 102萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章