Nagios 系統介紹
Nagios是一個用來監視系統和網絡的開源應用軟件,它通常運行於一個主服務器上,
這個服務器運行 Liunx 或 Unix 操作系統。Nagios 利用其衆多的插件實現對本機和遠端服務的監控,當被監控對象出現異常,Nagios 就會及時給管理人員告警。它是一個基於 TCP/IP
協議的軟件包,包含有nagios主程序和它的各個插件,配置非常靈活,可以監視的項目很多,也可以通過自定義 shell 腳本進行監控服務,非常適合各類企業的網絡應用。
Nagios 系統的主要特點
Nagios 系統的特點主要有下面幾點:
1.監控主機資源和網絡服務
2.允許用戶通過設計實現簡單的插件來監控自己特定的服務
3.當被監控對象出現問題時,會及時通知管理人員
4.事先定義事件處理程序,當對象出現問題時自動調用對應的處理程序
5.通過 web 頁面來監視對象狀態,警告提示和日誌文件。
可見,Nagios 採用分佈--集中的管理模式。在 Nagios 服務器上安裝 Nagios 主程序,
在被監控主機上安裝 Nagios 代理程序。通過 Nagios 主程序和 Nagios 代理程序之間的通訊,監視對象的狀態。
以下是我在RHEL5.4上進行的配置過程:
準備軟件包
nagios-3.2.1 .tar.gz
nagios-plugins-1.4.14 .tar.gz
nrpe-2.12.tar.gz
安裝必備軟件包:
[root@station1 ~]# yum -y install httpd gcc glibc glibc-common gd gd-devel php
支持PHP
[root@station1 ~]# vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.html index.html.var index.php index.phps
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
[root@station1 html]# cat index.php
<?php
phpinfo();
?>
[root@station1 html]#
創建nagios用戶與組(用戶組nagcmd用於從web接口執行外部命令.)
[root@station1 ~]# useradd nagios;passwd nagios
Changing password for user nagios.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@station1 ~]# groupadd nagcmd
[root@station1 ~]# usermod -G nagcmd nagios
[root@station1 ~]# usermod -G nagcmd apache
[root@station1 ~]#
[root@station1 src]# cd /usr/local/src/
[root@station1 src]# ls
nagios-3.2.1 .tar.gz nagios-plugins-1.4.14.tar.gz nrpe-2.12.tar.gz
[root@station1 src]# tar zxvf nagios-3.2.1 .tar.gz
[root@station1 src]# cd nagios-3.2.1
[root@station1nagios-3.2.1 ]#./configure–with-command-group=nagcmd –prefix=/usr/local/nagios
[root@station1nagios-3.2.1 ]#make all
[root@station1nagios-3.2.1 ]#make install #安裝主程序,CGI和HTML文件
[root@station1nagios-3.2.1 ]#make install-init #在/etc/rc.d/init.d安裝啓動腳本
[root@station1nagios-3.2.1 ]#make install-config #安裝示例配置文件
[root@station1nagios-3.2.1 ]#make install-commandmode #配置目錄權限
驗證是否安裝成功:
[root@station1 nagios]# pwd
/usr/local/nagios
[root@station1 nagios]# ls
bin etc libexec sbin share var
[root@station1 nagios]# cd var/
[root@station1 var]# ls
archives rw spool
[root@station1 var]
編譯並安裝nagios插件 nagios‐plugins
[root@station1 src]# tar zxvf nagios-plugins-1.4.14 .tar.gz
[root@station1 src]# cd nagios-plugins-1.4.14
[root@station1nagios-plugins-1.4.14 ]#./configure--with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios/
[root@station1nagios-plugins-1.4.14 ]# make && make install
驗證插件是否安裝成功:
[root@station1 nagios]# du -h libexec/
[root@station1 nagios]#
配置Apache
[root@station1 ~]# vim /etc/httpd/conf/httpd.conf
###############################
# setting for nagios 20100719 #
###############################
ScriptAlias /nagios/cgi-bin/ "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
Order allow,deny
Allow from all
AllowOverride None
AuthName "Nagios Access"
AuthType basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
Options None
Order allow,deny
Allow from all
AllowOverride None
AuthName "Nagios Access"
AuthType basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
創建apache目錄驗證文件
[root@station1 ~]# htpasswd -cm /usr/local/nagios/etc/htpasswd nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
查看cgi.cfg是否允許nagiosadmin用戶的認證
[root@station1 etc]# pwd
/usr/local/nagios/etc
[root@station1 etc]# grep authorized < cgi.cfg
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
#authorized_for_read_only=user1,user2
[root@station1 etc]#
配置nagios配置文件
#vi /usr/local/nagios/etc/objects/contacts.cfg 修改email地址爲自己的email地址.
啓動nagios
[root@station1 ~]# chkconfig --add nagios
[root@station1 ~]# chkconfig nagios on
[root@station1 ~]#
檢查配置文件
[root@station1 ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
[root@station1 ~]# service nagios start
Starting nagios: done.
[root@station1 ~]# service httpd start
Starting httpd: [ OK ]
[root@station1 ~]#
訪問http://localhost/nagios 輸入用戶名密碼
安裝附加插件nrpe
[root@station1 src]# tar zxvf nrpe-2.12.tar.gz
[root@station1 src]# cd nrpe-2.12
[root@station1 nrpe-2.12]# ./configure
[root@station1 nrpe-2.12]# make all
[root@station1 nrpe-2.12]# make install-plugin #服務器端只要安裝nrpe監控插件就行
[root@station1 nrpe-2.12]# make install-daemon
[root@station1 nrpe-2.12]# make install-daemon-config
添加要監控的主機
[root@station1 ~]# vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1
以獨立守護進程啓動nrpe
[root@station1 ~]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
寫入開機腳本
[root@station1 ~]# echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d">> /etc/rc.d/rc.local
檢查nrpe是否安裝正常
[root@station1 ~]# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12
[root@station1 ~]# netstat -tln | grep 5666
tcp 0 0 0.0.0 .0:5666 0.0.0 .0:* LISTEN
[root@station1 ~]#
定義監控命令
[root@station1 ~]# vim /usr/local/nagios/etc/nrpe.cfg
以下是默認定義好的:
# The following examples use hardcoded command arguments...
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
自定義監控命令:
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
command[check_disk_root]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
測試:
[root@station1 ~]# /usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /home
DISK OK - free space: /home 86 MB (93% inode=99%);| /home=5MB;76;86;0;96
[root@station1 ~]#
[root@station1 etc]# pwd
/usr/local/nagios/etc
[root@station1 etc]# vim resource.cfg
$USER1$=/usr/local/nagios/libexec #定義插件路徑
例:SWAP監控
[root@station1 etc]# vim objects/commands.cfg #命令配置文件
# 'check_local_swap' command definition
define command{
command_name check_local_swap
command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$
}
[root@station1 objects]# vim localhost.cfg #監控對象控制
define service{
use local-service ; Name of service template to use
host_name localhost
service_description Swap Usage
check_command check_local_swap!20!10
}