一,安装apache和php

# yum -y install httpd httpd-devel php php-common php-pdo php-gd
1)编辑apache配置文件
vim /etc/httpd/conf/httpd.conf
391 DirectoryIndex index.html index.php
392 AddType application/x-httpd-php .php
2)写php测试页面
# cat /var/www/html/index.php
<?php
        phpinfo();
?>
二、安装nagios
1)建立nagios用户
useradd -s /sbin/nologin nagios
mkdir /usr/local/nagios                 
chown -R nagios.nagios /usr/local/nagios
2)编译安装nagios
  tar -zxvf nagios-3.2.3.tar.gz
  cd nagios-3.2.3
  ./configure --prefix=/usr/local/nagios/
  make all
  make install
  make install-init
  make install-commandmode
  make install-config
  chkconfig --add nagios
  chkconfig nagios on
  chkconfig --list nagios
3)安装nagios-plugins
tar -zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
 ./configure --prefix=/usr/local/nagios/
 make && make install
4)安装汉化包
tar -jxvf nagios-cn-3.2.3.tar.bz2
cd nagios-cn-3.2.3
./configure && make all && make install
三,配置
1)配置httpd添加授权
vim /etc/httpd/conf/httpd.conf 最后加入
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
        AuthType Basic
        Options ExecCGI
        AllowOverride None
    Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthUserFile /usr/local/nagios/etc/htpasswd
        Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
        AuthType Basic
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Nagios Access"
        AuthUserFile /usr/local/nagios/etc/htpasswd
        Require valid-user
</Directory>
2)生成密码
# htpasswd -c /usr/local/nagios/etc/htpasswd nagiosadmin
New password: (输入密码)
Re-type new password: (再输入一次密码)
Adding password for user nagiosadmin
#这里为方便就用了nagiosadmin这个用户,如果用其他用户访问时要在/usr/local/nagios/etc/cgi.cfg里将nagiosadmin后面加上相应的用户即可
# service  nagios start 启动
3)配置nagios
# vim /usr/local/nagios/etc/objects/hosts.cfg /添加要监控的主机,默认这个文件没有的。
define host{
        use     linux-server
        host_name       peace-nagios
        alias   nagios
        address 192.168.10.246
}
define host{
        use     linux-server
        host_name       client-173
        alias   peace-client
        address 192.168.10.173
}
define host{
        use     linux-server
        host_name       client-206
        alias   client
        address 192.168.10.206
}  
# vim /usr/local/nagios/etc/objects/services.cfg /定义监控主机的服务,默认也是没有的
############################ peace-nagios ##############################
define service {
        use     local-service
        host_name       peace-nagios
        service_description     PING
        check_command   check_ping!100.0,20%!500.0,60%
}
define service {
        use     local-service
        host_name       peace-nagios
        service_description     SSH
        check_command   check_tcp!12321
}
define service {
        use     local-service
        host_name       peace-nagios
        service_description     http
        check_command   check_http
}
############################ client-173 ##############################
define service {
        use     local-service
        host_name       client-173
        service_description     PING
        check_command   check_ping!100.0,20%!500.0,60%
}
define service {
        use     local-service
        host_name       client-173
        service_description     SSH
        check_command   check_ssh
}
define service {
        use     local-service
        host_name       client-173
        service_description     http
        check_command   check_http
}
############################ client-206 ##############################
define service {
        use     local-service
        host_name       client-206
        service_description     PING
        check_command   check_ping!100.0,20%!500.0,60%
}
define service {
        use     local-service
        host_name       client-206
        service_description     SSH
        check_command   check_ssh
}
define service {
        use     local-service
        host_name       client-206
        service_description     http
        check_command   check_http
}
# chown nagios.nagios hosts.cfg services.cfg /添加用户组
# vim /usr/local/nagios/etc/nagios.cfg /添加刚定义的两个文件
cfg_file=/usr/local/nagios//etc/objects/hosts.cfg
cfg_file=/usr/local/nagios//etc/objects/services.cfg
自带的检测一下
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 3.2.3
Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 10-03-2010
License: GPL
Website: http://www.nagios.org
Reading configuration data...
   Read main config file okay...
Processing object config file '/usr/local/nagios//etc/objects/commands.cfg'...
Processing object config file '/usr/local/nagios//etc/objects/contacts.cfg'...
Processing object config file '/usr/local/nagios//etc/objects/timeperiods.cfg'...
Processing object config file '/usr/local/nagios//etc/objects/templates.cfg'...
Processing object config file '/usr/local/nagios//etc/objects/hosts.cfg'...
Processing object config file '/usr/local/nagios//etc/objects/services.cfg'...
   Read object config files okay...
Running pre-flight check on configuration data...
Checking services...
        Checked 9 services.
Checking hosts...
        Checked 3 hosts.
Checking host groups...
        Checked 0 host groups.
Checking service groups...
        Checked 0 service groups.
Checking contacts...
        Checked 1 contacts.
Checking contact groups...
        Checked 1 contact groups.
Checking service escalations...
        Checked 0 service escalations.
Checking service dependencies...
        Checked 0 service dependencies.
Checking host escalations...
        Checked 0 host escalations.
Checking host dependencies...
        Checked 0 host dependencies.
Checking commands...
        Checked 24 commands.
Checking time periods...
        Checked 5 time periods.
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors:   0
Things look okay - No serious problems were detected during the pre-flight check
# service  nagios restart
四、PNP(小太阳)
1)安装rrdtool需要的环境
#yum -y install cairo-devel libxml2-devel pango pango-devel
2)安装rrdtool
#tar zxvf rrdtool-1.4.4.tar.gz
#cd rrdtool-1.4.4
#./configure --prefix=/usr/local/rrdtool
#make && make install
3)安装pnp
tar -zxvf pnp-0.4.14.tar.gz
cd pnp-0.4.14
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata
 make all
 make install
 make install-config
 make install-init
4)配置pnp
 cd /usr/local/nagios/etc/pnp/
 cp process_perfdata.cfg-sample process_perfdata.cfg
 cp npcd.cfg-sample npcd.cfg
 cp rra.cfg-sample rra.cfg
 chown -R nagios.nagios /usr/local/nagios/etc/pnp/
5)修改process_perfdata.cfg文件
# vim /usr/local/nagios/etc/pnp/process_perfdata.cfg
 40 LOG_FILE = /usr/local/nagios/var/perfdata.log
 41 #
 42 # Loglevel 0=silent 1=normal 2=debug
 43 #
 44 LOG_LEVEL = 2    /改成2 也就是debug模式
6)修改nagios,增加图标
# vim /usr/local/nagios/etc/objects/templates.cfg  /添加
define host{
        name    hosts-pnp
        register        0
        action_url /nagios/pnp/index.php?host=$HOSTNAME$
        process_perf_data
}
define service{
        name    services-pnp
        register        0
        action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
        process_perf_data
}
# vim /usr/local/nagios/etc/nagios.cfg /找到下面几行,去# 修改后如下:
833 process_performance_data=1
845 host_perfdata_command=process-host-perfdata
846 service_perfdata_command=process-service-perfdata
# vim /usr/local/nagios/etc/objects/commands.cfg  /找到下面的内容,修改如下
# 'process-host-perfdata' command definition
define command{
        command_name    process-host-perfdata
        command_line    /usr/local/nagios/libexec/process_perfdata.pl
        }
# 'process-service-perfdata' command definition
define command{
        command_name    process-service-perfdata
        command_line    /usr/local/nagios/libexec/process_perfdata.pl
        }
# vim /usr/local/nagios/etc/objects/hosts.cfg   /在每个use 后都添加添加services-pnp,如下
define host{
        use     linux-server,hosts-pnp
        host_name       peace-nagios
        alias   nagios
        address 192.168.10.246
}
……
# vim /usr/local/nagios/etc/objects/services.cfg  /在每个use 后都添加添加services-pnp,如下
define service {
        use     local-service,services-pnp
        host_name       peace-nagios
        service_description     PING
        check_command   check_ping!100.0,20%!500.0,60%
}
……
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg /检测没有问题重新启动nagios
# service  nagios restart
五、nrpe
1)被监控端
useradd -s /sbin/nologin nagios
tar -zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure
make && make install
chown nagios.nagios /usr/local/nagios/
chown -R nagios.nagios /usr/local/nagios/libexec/
tar -zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure && make all && make install-plugin && make instal-daemon && make install-daemon-config
make install-daemon
make install-daemon-config
# vim /usr/local/nagios/etc/nrpe.cfg    /编辑nrpe,定义命令
allowed_hosts=192.168.10.246,127.0.0.1
# 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_sda]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda
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
#usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg  -d  /启动
#/usr/local/nagios/libexec/check_nrpe  -H 127.0.0.1    /检测是否开启
2)监控端
tar -zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure && make all && make install-plugin
#/usr/local/nagios/libexec/check_nrpe -H 192.168.10.206   /测试与客户端的连接是否成功
NRPE v2.8.1  /表示OK了
# vim /usr/local/nagios/etc/objects/commands.cfg
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
# vim /usr/local/nagios/etc/objects/services.cfg
define service {
        use     local-service,services-pnp
        host_name       client-206
        service_description     users
        check_command   check_nrpe!check_users
}
define service {
        use     local-service,services-pnp
        host_name       client-206
        service_description     disk
        check_command   check_nrpe!check_sda
}
define service {
        use     local-service,services-pnp
        host_name       client-206
        service_description     swap
        check_command   check_nrpe!check_swap
}
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#service nagios restart
3)nrpe常见故障
错误一:/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
CHECK_NRPE: Error - Could not complete SSL handshake
解析办法:配置allowed_hosts=192.168.1.100,127.0.0.1,然后kill进程再重启就OK了
错误二:/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
Connection refused by host
解析办法:Nrpe进程没有启动
六、飞信报警
mkdir /usr/local/fetion
cd /usr/local/fetion/
cp /tools/fetion  .
cp /tools/linuxso_20101113.rar .
unrar x linuxso_20101113.rar
 chmod +x fetion
./fetion
#/usr/local/fetion/fetion --mobile=15801093291 --pwd=l147258 --to=15801093291 --msg-utf8=测试 /测试飞信,只要输入验证码,下载下来在输入。
SIP-C/4.0 280 Send SMS OK
T: sip:338658633@fetion.com.cn;p=6911
I: 2
Q: 1 M
L: 114
D: Thu, 09 Feb 2012 00:07:48 GMT
XI: E63BC47E056E2D8149F3D435F4F18F6
这样就OK了
# vim /usr/local/nagios/etc/objects/commands.cfg   /定义服务和主机的内容
define command{
        command_name    notify-service-by-sms
        command_line    /usr/local/fetion/fetion --mobile=15801093291 --pwd=l147258 --to=$CONTACTPAGER$ --msg-utf8="service $HOSTADDRESS$ error "
}
define command{
        command_name    notify-host-by-sms
        command_line    /usr/local/fetion/fetion --mobile=15801093291 --pwd=l147258 --to=$CONTACTPAGER$ --msg-utf8="HOST error "
}
# vim /usr/local/nagios/etc/objects/templates.cfg /修改联系人的定义
define contact{
        name                            generic-contact
    ……
    service_notification_commands   notify-service-by-email,notify-service-by-sms  
        host_notification_commands      notify-host-by-email,notify-service-by-sms
    ……
# vim /usr/local/nagios/etc/objects/contacts.cfg /定义接收的手机,多个以,分割
define contact{
        contact_name                    nagiosadmin            
        use                             generic-contact        
        alias                           Nagios Admin           
        email                           nagios@localhost      
        pager                           15801093291
}