nagios的原理

來源:互聯網
上載者:User

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 顯示出來,以供管理員及時發現故障。

2.利用 Nagios 的 NRPE 外掛程式實現網路上伺服器的監控

知道 Nagios 是如何通過外掛程式來管理伺服器對象後,現在開始研究它是如何管理遠端伺服器對象的。Nagios 系統提供了一個外掛程式 NRPE。Nagios 通過周期性的運行它來獲得遠端伺服器的各種狀態資訊。它們之間的關係如下圖 所示:

Nagios 通過 NRPE 來遠端管理服務

1.Nagios 執行安裝在它裡面的 check_nrpe 外掛程式,並告訴 check_nrpe 去檢測哪些服務。

2.通過 SSL,check_nrpe 串連遠端機子上的 NRPE daemon

3.NRPE 運行本地的各種外掛程式去檢測本地的服務和狀態(check_disk,..etc)

4.最後,NRPE 把檢測的結果傳給主機端的 check_nrpe,check_nrpe 再把結果送到 Nagios狀態隊列中。

5.Nagios 依次讀取隊列中的資訊,再把結果顯示出來。

更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/soft/tools/

下面通過一個監控遠端伺服器 CPU 負載情況的執行個體,研究如何?通過 NRPE 來管理遠端伺服器。假設有一台遠端伺服器的 IP 是 10.20.0.110,Nagios 服務主機 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%,狀態資訊就會變成紅色警告管理員。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。