Linux下Nagios網絡管理模塊-實現(xiàn)網絡服務器的監(jiān)控
運用 Nagios 實現(xiàn)對網絡上服務器的監(jiān)控
1.實現(xiàn)原理
處于網絡中的各種服務器需要管理和維護,管理員不可能及時對每一臺的狀態(tài)都進行監(jiān)控,這時候當然需要借助軟件的功能來實現(xiàn)了。Nagios的功能是監(jiān)控服務和主機,但是他自身并不包括這部分功能,所有的監(jiān)控、檢測功能都是通過各種插件來完成的。啟動 Nagios后,它會周期性的自動調用插件去檢測服務器狀態(tài),同時 Nagios 會維持一個隊列,所有插件返回來的狀態(tài)信息都進入隊列,Nagios每次都從隊首開始讀取信息,并進行處理后,把狀態(tài)結果通過 web 顯示出來。Nagios 提供了許多插件,利用這些插件可以方便的監(jiān)控很多服務狀態(tài)。安裝完成后,在nagios 主目錄下的/libexec 里放有 nagios 自帶的可以使用的所有插件,如,check_disk 是檢查磁盤空間的插件,check_load是檢查CPU負載的,等等。每一個插件可以通過運行./check_xxx –h 來查看其使用方法和功能。Nagios 可以識別 4 種狀態(tài)返回信息,即 0(OK)表示狀態(tài)正常、1(WARNING)表示出現(xiàn)一定的異常、2(CRITICAL)表示出現(xiàn)非常眼中的錯誤、3(UNKNOWN)表示被監(jiān)控的對象已經停止了。Nagios 根據插件返回來的值,來判斷監(jiān)控對象的狀態(tài),并通過 web 顯示出來,以供管理員及時發(fā)現(xiàn)故障。
2.利用 Nagios 的 NRPE 插件實現(xiàn)網絡上服務器的監(jiān)控
知道 Nagios 是如何通過插件來管理服務器對象后,現(xiàn)在開始研究它是如何管理遠端服務器對象的。Nagios 系統(tǒng)提供了一個插件 NRPE。Nagios 通過周期性的運行它來獲得遠端服務器的各種狀態(tài)信息。它們之間的關系如下圖 所示:

Nagios 通過 NRPE 來遠端管理服務
1.Nagios 執(zhí)行安裝在它里面的 check_nrpe 插件,并告訴 check_nrpe 去檢測哪些服務。
2.通過 SSL,check_nrpe 連接遠端機子上的 NRPE daemon
3.NRPE 運行本地的各種插件去檢測本地的服務和狀態(tài)(check_disk,..etc)
4.最后,NRPE 把檢測的結果傳給主機端的 check_nrpe,check_nrpe 再把結果送到 Nagios狀態(tài)隊列中。
5.Nagios 依次讀取隊列中的信息,再把結果顯示出來。
下面通過一個監(jiān)控遠端服務器 CPU 負載情況的實例,研究如何實現(xiàn)通過 NRPE 來管理遠端服務器。假設有一臺遠端服務器的 IP 是 10.20.0.110,Nagios 服務主機 IP 是:10.20.10.1。它們都已經安裝上了 nagios 系統(tǒng),主機通過 NRPE 檢查運行中的服務器 CPU 的負載量,當負載量超過80%是發(fā)出警告(WARNING)報告,超過95%時發(fā)出緊急(CRITICAL)報告。在Nagios 的插件中存在 check_load -w $ARG1$ -c $ARG2$插件,通過查看其幫助,當 Nagios 調用它時,就會去檢查對象主機的CPU負載,達到$ARG1$指定的數(shù)值時就會發(fā)出警告(WARNING),達到$ARG2$時發(fā)出緊急報告(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.執(zhí)行:netstat –at | grep nrpe
如果出現(xiàn):tcp 0 0 *:nrpe *:* LISTEN 說明NRPE監(jiān)聽已經成功啟動了
6.執(zhí)行 /usr/local/nagios/libexec/check_nrpe –H localhost
出現(xiàn) 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
可以看到所監(jiān)控的遠端機器的這個信息了(check_server_load的返回結果),參看圖2.正常狀態(tài)用綠色表示,一旦遠端服務器負載超過 80%,狀態(tài)信息就會變成紅色警告管理員。
【編輯推薦】