Nagios網(wǎng)絡(luò)監(jiān)控工作原理
因為工作需要,我用的Linux系統(tǒng),常常要用到一個工具:Nagios
圖-Nagios
運用 Nagios 實現(xiàn)對網(wǎng)絡(luò)上服務(wù)器的網(wǎng)絡(luò)監(jiān)控
1.實現(xiàn)原理
處于網(wǎng)絡(luò)中的各種服務(wù)器需要管理和維護,管理員不可能及時對每一臺的狀態(tài)都進行監(jiān)控,這時候當(dāng)然需要借助軟件的功能來實現(xiàn)了。Nagios的功能是監(jiān)控服務(wù)和主機,但是他自身并不包括這部分功能,所有的監(jiān)控、檢測功能都是通過各種插件來完成的。啟動 Nagios后,它會周期性的自動調(diào)用插件去檢測服務(wù)器狀態(tài),同時 Nagios 會維持一個隊列,所有插件返回來的狀態(tài)信息都進入隊列,Nagios每次都從隊首開始讀取信息,并進行處理后,把狀態(tài)結(jié)果通過 web 顯示出來。Nagios 提供了許多插件,利用這些插件可以方便的監(jiān)控很多服務(wù)狀態(tài)。安裝完成后,在nagios 主目錄下的/libexec 里放有 nagios 自帶的可以使用的所有插件,如,check_disk 是檢查磁盤空間的插件,check_load是檢查CPU負(fù)載的,等等。每一個插件可以通過運行./check_xxx –h 來查看其使用方法和功能。Nagios 可以識別 4 種狀態(tài)返回信息,即 0(OK)表示狀態(tài)正常、1(WARNING)表示出現(xiàn)一定的異常、2(CRITICAL)表示出現(xiàn)非常眼中的錯誤、3(UNKNOWN)表示被監(jiān)控的對象已經(jīng)停止了。Nagios 根據(jù)插件返回來的值,來判斷監(jiān)控對象的狀態(tài),并通過 web 顯示出來,以供管理員及時發(fā)現(xiàn)故障。
2.利用 Nagios 的 NRPE 插件實現(xiàn)網(wǎng)絡(luò)上服務(wù)器的監(jiān)控
知道 Nagios 是如何通過插件來管理服務(wù)器對象后,現(xiàn)在開始研究它是如何管理遠端服務(wù)器對象的。Nagios 系統(tǒng)提供了一個插件 NRPE。Nagios 通過周期性的運行它來獲得遠端服務(wù)器的各種狀態(tài)信息。它們之間的關(guān)系如下圖 所示:
#p#
Nagios 通過 NRPE 來遠端管理服務(wù)
1.Nagios 執(zhí)行安裝在它里面的 check_nrpe 插件,并告訴 check_nrpe 去檢測哪些服務(wù)。
2.通過 SSL,check_nrpe 連接遠端機子上的 NRPE daemon
3.NRPE 運行本地的各種插件去檢測本地的服務(wù)和狀態(tài)(check_disk,..etc)
4.最后,NRPE 把檢測的結(jié)果傳給主機端的 check_nrpe,check_nrpe 再把結(jié)果送到 Nagios狀態(tài)隊列中。
5.Nagios 依次讀取隊列中的信息,再把結(jié)果顯示出來。
下面通過一個監(jiān)控遠端服務(wù)器 CPU 負(fù)載情況的實例,研究如何實現(xiàn)通過 NRPE 來管理遠端服務(wù)器。假設(shè)有一臺遠端服務(wù)器的 IP 是 10.20.0.110,Nagios 服務(wù)主機 IP 是:10.20.10.1。它們都已經(jīng)安裝上了 nagios 系統(tǒng),主機通過 NRPE 檢查運行中的服務(wù)器 CPU 的負(fù)載量,當(dāng)負(fù)載量超過80%是發(fā)出警告(WARNING)報告,超過95%時發(fā)出緊急(CRITICAL)報告。在Nagios 的插件中存在 check_load -w $ARG1$ -c $ARG2$插件,通過查看其幫助,當(dāng) Nagios 調(diào)用它時,就會去檢查對象主機的CPU負(fù)載,達到$ARG1$指定的數(shù)值時就會發(fā)出警告(WARNING),達到$ARG2$時發(fā)出緊急報告(CRITICAL)。
首先是在遠端服務(wù)器上的修改:
1.讓 Nagios 用戶擁有對如下文件的所用權(quán):
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 查詢服務(wù)
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)聽已經(jīng)成功啟動了
6.執(zhí)行 /usr/local/nagios/libexec/check_nrpe –H localhost
出現(xiàn) NRPE v 2.8.1 則安裝成功。
7.確認(rèn)本地防火墻允許遠端服務(wù)器訪問 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 服務(wù),修改如下:
define command { command_name check_server_load command_line $USER1$/check_load -w 80% -c 95% } 9.打開 /usr/local/nagios/etc/nrpe.cfg 可以看到里面已經(jīng)默認(rèn)定義了一些檢測服務(wù),如:
/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 外的其它服務(wù)定義。
#p#
最后是 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 地址,然后在服務(wù)中添加要檢測的命令:
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的返回結(jié)果),參看圖2.正常狀態(tài)用綠色表示,一旦遠端服務(wù)器負(fù)載超過 80%,狀態(tài)信息就會變成紅色警告管理員。
通過文章的詳細介紹,相信各位都知道了Nagios網(wǎng)絡(luò)監(jiān)控工作原理,學(xué)懂的朋友快跟其他人分享吧!
【編輯推薦】
- Nagios 簡介與功能
- 12.10 Nagios監(jiān)控策略
- Nagios Sendmail無法發(fā)送mail郵件的解決方法
- Nagios中告警郵件如何處理 Sendmail服務(wù)的配置
- Nagios監(jiān)控Sphinx