本文檔是Nagios3.2.0基于Red Hat 安裝配置及部署,文檔內容包含如下
1、安裝環境及準備軟件包
2、Nagios安裝過程
3、安裝過程報錯注意事項
4、Nagios監控服務器配置介紹及個配置文件作用
5、Linux系統被監控端配置
6、Window系統被監控端配置
7、監控項設置、參數介紹,錯誤排錯
一、安裝環境和軟件包
Os:Red Hat Enterprise Linux Server release 5.2
nagios-3.2.0.tar.gz
nagios-plugins-1.4.13.tar.gz
nrpe-2.12.tar.gz
環境支持包:gcc gcc-c++ gd gd-devel php httpd openssl-devel
二、安裝過程
①?、安裝支持包
#yum -y install gcc gcc-c++ gd gd-devel php httpd openssl-devel 注:3.2的nagios,web首頁已經由html變為php,必須安裝php支持
(盡量采用yum方式安裝、配置yum源過程省略)
②?、安裝nagios
創建用戶
#useradd?nagios
#passwd nagios
創建組
#groupadd nagcmd
#usermod -G nagcmd nagios
#usermod -G nagcmd apache
安裝
#tar xzf nagios-3.2.0.tar.gz
#cd nagios-3.2.0
#./configure --with-command-group=nagcmd --prefix=/usr/local/nagios
#make all
#make install# 使用make install來安裝主程序,CGI和HTML文件
#make install-init# 使用make install-init在/etc/rc.d/init.d安裝啟動腳本
#make install-config# 使用make install-cofig來安裝示例配置文件,安裝的路徑是/usr/local/nagios/etc.
#make install-commandmode # 使用make install-commandmode來配置目錄權限
配置apache
#vi /etc/httpd/conf/httpd.conf#加入末尾
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
#?SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
#?Order deny,allow
#?Deny from all
#?Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
#?SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
#?Order deny,allow
#?Deny from all
#?Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
創建apache目錄驗證文件
#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password: (輸入密碼)
Re-type new password: (再輸入一次密碼)
Adding password for user nagiosadmin
#service httpd restart
配置nagios配置文件
#vi /usr/local/nagios/etc/objects/contacts.cfg# 將里面的email地址改為自己的email地址
③?、安裝nagios插件
#tar xzf nagios-plugins-1.4.13.tar.gz
#cd nagios-plugins-1.4.13
#./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios
#make && make install
④?、啟動nagios
添加服務
#chkconfig --add nagios
#chkconfig nagios on
檢查配置文件
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
啟動nagios
#service nagios start
啟動apache
#service httpd start
訪問http://localhost/nagios 輸入用戶名密碼
id:nagiosadmin
三、安裝過程報錯注意事項
1、nagios提示http 500
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
查詢日志:/usr/local/nagios/var
[Thu Sep 17 22:50:02 2009] [error] [client 10.0.0.73] Premature end of script headers: status.cgi, referer: http://10.0.0.193/side.html
試試apache的SuExec:
[root@centos sbin]# setenforce 0
2、報錯[1297704346] SERVICE ALERT: localhost;HTTP;WARNING;SOFT;3;HTTP WARNING: HTTP/1.1 403 Forbidden
[1297704406] SERVICE ALERT: localhost;HTTP;WARNING;HARD;4;HTTP WARNING: HTTP/1.1 403 Forbidden
[1297704506] Caught SIGTERM, shutting down...
[1297704506] Successfully shutdown... (PID=16538)
[1297704600] Nagios 3.2.0 starting... (PID=4313)
[1297704600] Local time is Tue Feb 15 01:30:00 CST 2011
四、Nagios監控服務器配置介紹及個配置文件作用
配置文件路徑
[root@Nagios-Server nagios]# pwd
/usr/local/nagios
[root@Nagios-Server nagios]# ls
bin?etc ?libexec?sbin?share?var
bin:Nagios執行程序所在目錄,nagios文件即為主程序
etc?Nagios配置文件位置
libexec Nagios的監控插件
sbinNagios Cgi文件所在目錄,也就是執行外部命令所需文件所在的目錄
ShareNagios網頁文件所在的目錄
varNagios日志文件、spid 等文件所在的目錄
var/archives日志歸檔目錄
var/rw用來存放外部命令文件
/usr/local/nagios/etc/nagios.cfg
Nagios的主配置文件
cfg_file=/usr/local/nagios/etc/objects/commands.cfg# 命令的配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg# 聯系人配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg# 聯系組配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg# 監視時段配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/templates.cfg# 模板的配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg# 主機組配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg# 主機配置文件路徑
cfg_file=/usr/local/nagios/etc/objects/services.cfg# 服務配置文件路徑
關系圖

官方說明:在Nagios里每個要監控的服務都必須給出一個綁定在剛才定義出的主機上的一個服務對象。可以把服務對象放在任何一個由
cfg_file域指向的對象配置文件里或是放在cfg_dir域所指向的目錄下。
也就是說只需要在nagios.cfg 的配置文件里指定cfg_dir 就可以實現監控機器的目的。
#把關于windows的配置選項前面的#號去掉
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
#把server目錄配置前面的#去掉,記得手動創建目錄
cfg_dir=/usr/local/nagios/etc/servers
#如果需要查看日志就把下面的配置加上,記得自己手動創建目錄
log_file=/usr/local/nagios/var/nagios.log
debug_file=/usr/local/nagios/var/nagios.debug
debug_level=32
#修改CGI腳本控制文件cgi.cfg
vi /usr/local/nagios/etc/cgi.cfg
#是否開啟驗證,1是開啟0是關閉
use_authentication=1
#修改默認用戶
default_user_name=test
#多個用戶之間用逗號隔開
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
具體每一個配置文件的內容,不再一一介紹可以查看223服務器我的定義,寫的很直觀有注釋
作為監控服務器時,需配置如下內容
在運行nagios的監控主機上
安裝check_nrpe插件
在commands.cfg中創建check_nrpe的命令定義,因為只有在commands.cfg中定義過的命令才能在services.cfg中使用
創建對被監控主機的監控項目
安裝check_nrpe插件
[root@server1 yahoon]# tar -zxvf nrpe-2.12.tar.gz
[root@server1 yahoon]# cd nrpe-2.12
[root@server1 nrpe-2.12]# ./configure
[root@server1 nrpe-2.12]# make all
[root@server1 nrpe-2.12]# make install-plugin
只運行這一步就行了,因為只需要check_nrpe插件
在dbpi上我們剛裝好了nrpe,現在我們測試一下監控機使用check_nrpe與被監控機運行的nrpedaemon之間的通信.
[root@server1 nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.225
NRPE v2.12
看到已經正確返回了NRPE的版本信息,說明一切正常.
在commands.cfg中增加對check_nrpe的定義
vi /usr/local/nagios/etc/commands.cfg
在最后面增加如下內容
########################################################################
#
# NRPE COMMAND
#
########################################################################
# 'check_nrpe ' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
意義如下
command_name check_nrpe
定義命令名稱為check_nrpe,在services.cfg中要使用這個名稱.
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
這是定義實際運行的插件程序.這個命令行的書寫要完全按照check_nrpe這個命令的用法.不知道用法的就用check_nrpe –h查看
-c后面帶的$ARG1$參數是傳給nrpe daemon執行的檢測命令,之前說過了它必須是nrpe.cfg中所定義的那5條命令中的其中一條.在services.cfg中使用check_nrpe的時候要用!帶上這個參數
五、Linux系統被監控端配置
原理如下圖

NRPE總共由兩部分組成:
–check_nrpe 插件,位于在監控主機上
–NRPE daemon,運行在遠程的linux主機上(通常就是被監控機)
按照上圖,整個的監控過程如下:
當nagios需要監控某個遠程linux主機的服務或者資源情況時
1.nagios會運行check_nrpe這個插件,告訴它要檢查什么.
2.check_nrpe插件會連接到遠程的NRPE daemon,所用的方式是SSL
3.NRPE daemon會運行相應的nagios插件來執行檢查
4.NRPE daemon將檢查的結果返回給check_nrpe插件,插件將其遞交給nagios做處理.
注意:NRPE daemon需要nagios插件安裝在遠程的linux主機上,否則,daemon不能做任何的監控.
通過NRPE的檢測分為兩種:
1).直接檢測:檢測的對象是運行NRPE的那臺linux主機的本地資源,原理如下圖

2).間接檢測:當運行nagios的監控主機無法訪問到某臺被監控機,但是運行NRPE的機器可以訪問到時,NRPE就可以充當一個代理,將監控請求發送到被監控機
在被監控主機上
1增加用戶
[root@Nagios-Server root]# useradd nagios
設置密碼
[root@Nagios-Server root]# passwd nagios
2安裝nagios插件
解壓縮
tar -zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
編譯安裝
./configure
make
make install
這一步完成后會在/usr/local/nagios/下生成兩個目錄libexec和share
[root@Nagios-Server nagios]# ls /usr/local/nagios/
libexec?share
修改目錄權限
[root@Nagios-Server nagios]# chown nagios.nagios /usr/local/nagios
[root@Nagios-Server nagios]# chown -R nagios.nagios /usr/local/nagios/libexec
3安裝nrpe
解壓縮
tar -zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
編譯
./configure
輸出如下
*** Configuration summary for nrpe 2.12 05-10-2007 ***:
General Options:
-------------------------
NRPE port:5666
NRPE user: nagios
NRPE group:nagios
Nagios user:?nagios
Nagios group: nagios
Review the options above for accuracy.?If they look okay,
type 'make all' to compile the NRPE daemon and client.
可以看到NRPE的端口是5666,下一步是make all
make all
輸出如下
*** Compile finished ***
If the NRPE daemon and client compiled without any errors, you
can continue with the installation or upgrade process.
Read the PDF documentation (NRPE.pdf) for information on the next
steps you should take to complete the installation or upgrade.
接下來安裝NPRE插件,daemon和示例配置文件
安裝check_nrpe這個插件
make install-plugin
之前說過監控機需要安裝check_nrpe這個插件,被監控機并不需要,我們在這里安裝它是為了測試的目的
安裝deamon
make install-daemon
安裝配置文件
make install-daemon-config
現在再查看nagios目錄就會發現有4個目錄了
[root@Nagios-Server nrpe-2.12]# ls /usr/local/nagios/
binetc????? libexec?share
按照安裝文檔的說明,是將NRPE deamon作為xinetd下的一個服務運行的.在這樣的情況下xinetd就必須要先安裝好,不過一般系統已經默認裝了
4.安裝xinetd腳本
[root@Nagios-Server nrpe-2.12]# make install-xinetd
輸出如下
/usr/bin/install -c -m 644 sample-config/nrpe.xinetd /etc/xinetd.d/nrpe
可以看到創建了這個文件/etc/xinetd.d/nrpe
編輯這個腳本
vi /etc/xinetd.d/nrpe
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags?????????? = REUSE
socket_type???? = stream
port??????????? = 5666
wait??????????? = no
user??????????? = nagios
group?????????? = nagios
server????????? = /usr/local/nagios/bin/nrpe
server_args???? = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure?+= USERID
disable???????? = no
only_from?????? = 127.0.0.1在后面增加監控主機的地址1.223,以空格間隔
}
改后
only_from?????? = 127.0.0.1 192.168.1.223
編輯/etc/services文件,增加NRPE服務
vi /etc/services
增加如下
# Local services
nrpe5666/tcp??????????????????????? # nrpe
重啟xinetd服務
[root@Nagios-Server nrpe-2.12]# service xinetd restart
Stopping xinetd: [?OK?]
Starting xinetd: [?OK?]
查看NRPE是否已經啟動
[root@Nagios-Server nrpe-2.12]# netstat -at|grep nrpe
tcp0????? 0 *:nrpe????????????????? *:*???????????????????? LISTEN??
[root@Nagios-Server nrpe-2.12]# netstat -an|grep 5666
tcp0????? 0 0.0.0.0:5666??????????? 0.0.0.0:*?????????????? LISTEN?
可以看到5666端口已經在監聽了
5.測試NRPE是否則正常工作
之前我們在安裝了check_nrpe這個插件用于測試,現在就是用的時候.執行
/usr/local/nagios/libexec/check_nrpe -H localhost
會返回當前NRPE的版本
[root@Nagios-Server nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12
也就是在本地用check_nrpe連接nrpe daemon是正常的
注:為了后面工作的順利進行,注意本地防火墻要打開5666能讓外部的監控機訪問
附錄:
1.重啟nagios的方法
之前我說重啟nagios的時候都是用的殺進程的方式,其實也可以不這么做.如果在安裝nagios的時候安裝了啟動腳本就可以使用/etc/init.d/nagios restart 還可以帶的參數有stop, start,status
如果報錯了,有可能是腳本里面的路徑設置錯誤,解決辦法
vi /etc/init.d/nagios
將prefix=/usr/local/nagiosaa改為安裝的目錄/etc/init.d/nagios
注:在nagios安裝的時候說是將腳本安裝到了/etc/rc.d/init.d,其實這和/etc/init.d是一個目錄
2.不以xinetd的方式運行nrpe
因為我們按照nrpe的安裝文檔安裝下來,nrpe是在xinetd下面運行的,個人比較喜歡像nagios那樣以單獨的daemon來運行.這樣比較好控制.
方法:
編輯/etc/services將nrpe注釋掉
# Local services
#nrpe5666/tcp??????????????????????? # nrpe
編輯nrpe.cfg,增加監控主機的地址
# NOTE: This option is ignored if NRPE is running under either inetd or xinetd
allowed_hosts=127.0.0.1,192.168.1.223
注意兩個地址以逗號隔開
以單獨的daemon啟動nrpe
[root@dbpi etc]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
查看
[root@dbpi etc]# ps -ef|grep nrpe
nagios22125???? 1?0 14:04 ???????? 00:00:00 [nrpe]
[root@dbpi nagios]# netstat -an|grep 5666
tcp0????? 0 0.0.0.0:5666??????????? 0.0.0.0:*?????????????? LISTEN?
說明已經正常啟動了
在/etc/rc.d/rc.local里面加入下面一行就實現開機啟動nrpe了
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
同理要開機運行nagios就在/etc/rc.d/rc.local里面增加下面這行
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
六、Window系統被監控端配置

apache部署?

監控原理
在windows服務器內安裝NSClient++的監控引擎,nagios服務器通過check_nt來獲取監控數據
http://nsclient.org/nscp/downloads
安裝方式,解壓縮到C:\NSClient++
在指令模式下,在該目錄下面運行以下命令,注冊NSCient++的服務
nsclient++ /install
將NSCient++作為啟動進程
nsclient++ SysTray
在服務列表中找到NSClientpp的服務。雙擊打開該服務的配置窗口則在登錄分頁中將“允許服務與桌面交互”勾選上。
編輯NSC.INI,做以下更改
* 在[Module]部分,除了CheckWMI.dll和RemoteConfiguration.dll這兩行的注釋不要去掉,其他DLL的注釋都去掉。
* 在[Setting]部分的allowed_hosts部分設定Nagios的服務器IP或者設定一個IP段,并把前面的注釋去掉。
allowed_hosts=192.168.1.223
* 在[NSClient]部分將port前的注釋去掉,確認port的端口號是12489
啟動nsclient++服務
查看端口
七、監控項設置、錯誤排錯
錯誤:
CHECK_NRPE: Error - Could not complete SSL handshake
vi /etc/xinetd.d/nrpe?加空格ip
service xinetd restart
cd /usr/local/nagios/etc/vi nrpe.cfg
加ip注意,好隔開。
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
Connection refused or timed out
檢查nrpe 端口
檢查nrpe.cfg中allowed_hosts是否包含監控機ip地址
檢查/etc/hosts.allow文件中監控機ip地址nrpe:192.168.1.91
檢查iptables
開放5666端口
1. iptables -L
2. iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
3. #注意順序
4. iptables -L
5. service iptables save
6. service iptables restart