1. 監控原理
監控方式有兩種,一種是利用ssh方式,執行Nagios的check_by_ssh來執行被監控服務器上的插件程序,從而獲取相關的信息。但是這種方式,當運用於監控上百臺服務器時,由於ssh連接的建立和中斷,會對Nagios服務器產生高負載現象,所以不建議使用。它的優點在安全性高與採用NRPE的插件方式。
另外一種方式,是常用的方式。就是在被監控的Linux/Unix的服務器上安裝NRPE監控引擎,然後Nagios服務器通過check_nrpe的程序,利用ssl通訊模式調用nrpe獲取相關數據信息。優點包括可以使用Nagios的大多數監控插件。處理可以監控自身的狀態變化,還可以拓展應用監控其它服務器的開放服務。
2. 監控內容
Linux/Unix服務器的內部參數包括以下
- 內存使用狀況
- CPU負載
- 磁盤使用狀況
- 運行的進程
- 登錄用戶
外部監控內容,可以使用Nagios的監控插件,監控其他的服務器開放的服務。起到間接監控的作用或者說是代理監控。
3.安裝步驟
配置環境 ubuntu 8.0
a.前提條件
- 在Linux服務器上具有root權限
- 允許建立nagios帳號讓遠程訪問
- 安裝以下包
- apt-get install gcc
- apt-get install build-essential
- apt-get install libssl0.9.8
- apt-get install libssl-dev
- apt-get install openssl
b.遠程主機配置
- 創建賬戶nagios並設定密碼
useradd nagios
password nagios
- 下載nagios的插件資料,解包安裝
下載地址 http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.6.tar.gz
- 解開nagios plugins的源代碼包
tar xzvf nagios-plugins-1.4.6.tar.gz
cd nagios-plugins-1.4.6
- 編譯安裝nagios plugins
./configura
make
make install
- 改變安裝目錄和文件的用戶和組屬性
chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec
c.安裝NRPE
- 下載NRPE插件 http://osdn.dl.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
- 解壓縮NRPE源代碼
tar -zxvf nrpe-2.8.tar.gz
- 編譯NRPE
./configure
make all注意事項: 在ubuntu下面安裝時,需要先確認安裝了openssl libssl0.9.8 libssl-dev
- 安裝NRPE插件、進程程序和案例進程
make install-plugin
make install-daemon
make install-daemon-config
- 安裝NRPE到xinet服務中
make install-xinetd
- 編輯/etc/xinetd.d/nrpe 將nagios的服務器ip添加進去
only_from= 127.0.0.1
- 將NRPE進程端口加到/etc/services中
nrpe 5666/tcp
- 重新啓動xinetd服務
service xinetd restart
d. 測試NRPE是否正常
- 確認nrpe是否在xinetd下運行
netstat -at |grep nrpe
如果反饋的是以下信息,則表示運行正常。
tcp 0 0 *:nrpe *:* LISTEN
沒有出現以上信息,則從下面找問題
- 確認/etc/services中是否添加nrpe的端口描述
- 在/etc/xinetd.d/nrpe文件中的only_from參數是否包含了"127.0.0.1"
- 確認xinetd.d是否安裝和啓動
- 查看系統日誌中涉及xinetd或nrpe的問題,進行修正
- 確認NRPE進程是否正常運行,利用check_nrpe來做檢測,執行指令如下:
/usr/local/nagios/libexec/check_nrpe -H localhost
正常反饋信息爲 NRPE v2.8
e.客製化NRPE指令
編輯/usr/local/nagios/etc/nrpe.cfg
在最後的COMMAND部分已經定義了部分監測的指令,你可以根據實際情況進行添加修改參數。
同時,可以用以下指令檢測nrpe調用nagios插件是否正常
/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
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_total_procs
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_zombie_procs
f.監控服務器設置
- 需要完成內容包括
- 安裝check_nrpe 插件
- 創建一個Nagios使用check_nrpe插件的指令定義
- 創佳監控遠程主機的Nagios主機和服務定義
- 安裝check_nrpe插件步驟
安裝ssl的包
apt-get install libssl-dev
下載nrpe源碼包
解壓縮該包 tar -zxvf nrpe-2.*.tar.gz
cd nrpe-2.*
./configure
make all
安裝check_nrpe程序到/usr/local/nagiso/libexec/
make install-plugin
- 測試與被監控主機的nrpe程序的通信狀況
先編輯被監控主機的/etc/xinetd.d/nrpe中的only_from的參數爲監控服務器的ip
重新啓動xinetd的服務 service xinetd restart
在監控服務器上,運行 /usr/local/nagios/libexec/check_nrpe -H 被監控主機IP
正常反饋信息如下:
NRPE v2.8
如果有問題,用telnet IP地址 5666檢測一下。如果被直接connection closed,則需要查看一下防火牆的規則和被監測主機的nrpe的進程
- 創建command定義
編輯/usr/local/nagios/etc/objects/commands.cfg增加以下配置信息
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
- 定義主機和服務設定
先建立一個模板用於之後的主機監控的繼承設定(在/usr/local/nagios/etc/objects/templates.cfg已經有添加了這個模板規則,只是notification_period不一樣而已,關於這個的解釋也非常有意思可以自己看看)
define host{
name linux-server ; Name of this template
use generic-host ; Inherit default values
check_period 24x7
check_interval 5
retry_interval 1
max_check_attempts 10
check_command check-host-alive
notification_period 24x7
notification_interval 30
notification_options d,r
contact_groups admins
register 0 ; DONT REGISTER THIS - ITS A TEMPLATE
}編輯/usr/local/nagios/etc/objects/localhost.cfg(也可以自己創建文件,只要在nagios.cfg中添加對應配置)
增加被監控的主機對象
define host{
use linux-server
host_name web-server ;nrpe check host
alias ubuntu server (WWW)
address 192.168.200.244
}
增加監控遠程服務器的服務對象
define service{
use generic-service
host_name web-server
service_description CPU Load
check_command check_nrpe!check_load
}define service{
use generic-service
host_name web-server
service_description Current Users
check_command check_nrpe!check_users
}#磁盤監控需要確認自己的硬盤是hda 還是sda,nrpe安裝的默認配置是check_hda1,所以需要你手動修改被監控服務器的/usr/local/nagios/etc/nrpe.cfg,將hda修改爲sda。並重新啓動xinetd服務
define service{
use generic-service
host_name web-server
service_description /dev/sda1 Free Space
check_command check_nrpe!check_sda1
}define service{
use generic-service
host_name web-server
service_description Total Processes
check_command check_nrpe!check_total_procs
}define service{
use generic-service
host_name web-server
service_description Zombie Processes
check_command check_nrpe!check_zombie_procs
}
配置完成後,運行/etc/init.d/nagios checkconfig 或
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 檢測nagios配置是否正確。
沒有問題,重新啓動nagios服務,則可以通過網頁來查看監控結果了。
4.自定義監控服務
由於前面的服務是nrpe主機上的默認建立的樣例規則。如果手動建立服務監控需要做以下操作
- 在nrpe.cfg上建立監控服務指令和參數
- 在nagios服務器上建立對應的服務定義
a.被監控主機的配置內容
在/usr/local/nagios/libexec下,有很多監控插件。在寫入nrpe.cfg前,先用指令測試這個插件和參數所產生的結果是否符合要求
例如 /usr/local/nagios/libexec/check_swap -w 20% -c 10% ‘監控swap的使用狀況
編輯/usr/local/nagios/etc/nrpe.cfg
添加一行 command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
然後重新啓動xinetd服務
b.Nagios服務的配置內容
編輯/usr/local/nagios/etc/objects/localhost.cfg
添加以下內容
service{
use generic_service
hostname web_server
service_description swap status
check_command check_nrpe!check_swap
}
然後重新啓動nagios服務,這個新的監控服務就完成創建了。