系统环境说明:
    基于Centos 5.8_x86_64最小化安装
    Nagios版本为当前最新:3.4.1
    Nagios-plugins版本为当前最新:1.4.16
    pnp4nagios版本为当前最新:0.6.19
    无特别说明依赖软件包均为yum安装,由于整个文档的都是在安装过程中作为笔记完成的,更倾向于用来在部署时复制粘贴完成繁琐的操作,所以没有附图片说明也没有详细的具体操作步骤说明,但是都是通过本人的多次安装测试整理出来的,有问题欢迎一起讨论。


一、编译安装nagios

1、解决依赖关系
httpd
php
gcc
gd
gd-devel
glibc
glibc-common

2、创建nagios运行需要的组和用户
groupadd nagcmd
useradd -G nagcmd nagios

把apache用户加入nagcmd组,以便于通过web访问时有足够权限
usermod -a -G nagcmd apache

3、编译安装nagios
tar zxf nagios-3.4.1.tar.gz
cd nagios
./configure --prefix=/usr/local/nagios --with-command-group=nagcmd --with-nagios-user=nagios --with-nagios-group=nagios
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf

4、创建用于控制访问nagios的用户
htpasswd -c /usr/loca/nagios/etc/htpasswd.users nagiosadmin

5、重启apache服务
service httpd restart

二、编译安装nagios-plugins

1、依赖关系,新版本的nagios-plugins-1.4.16必须指定--with-openssl
openssl-devel

2、编译安装
tar zxf nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl=/usr/bin/openssl
make
make install

三、配置并启动nagios

1、把nagios加入服务管理,并设置开机自启动
chkconfig --add nagios
chkconfig nagios on

2、配置selinux,如果启用的话默认会拒绝nagios的cgi等运行
setenforce 0
也可通过修改/etc/sysconfig/selinux,使永久生效

3、检查主配置文件语法
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

4、启动nagios
service nagios start

四、配置nrpe


tar xf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure  
make all
make install-plugin

五、被监控端配置:


1、安装前的工作
建立nagios用户
useradd nagios

解决依赖关系
yum install openssl-devel

2、编译安装nagios-plugins
tar zxf nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl=/usr/bin/openssl
make
make install

3、编译安装nrpe

tar xf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure  
make all
make install-plugin
make install-daemon
make install-daemon-config

4、配置nrpe
vim /usr/local/nagios/etc/nrpe.cfg  ==>  修改如下行为监控端IP地址

allowed_hosts=192.168.56.201

启动nrpe服务
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
 
netstat -tnlp   ==>  看到监听5666端口

添加nrpe到服务管理列表并设置开机启动
vim /etc/init.d/nrpe    ==>  添加如下内容

#!/bin/bash
# chkconfig: 2345 88 12
# description: NRPE DAEMON
NRPE=/usr/local/nagios/bin/nrpe
NRPECONF=/usr/local/nagios/etc/nrpe.cfg
case "$1" in
        start)
                echo -n "Starting NRPE daemon..."
                $NRPE -c $NRPECONF -d
                echo " done."
                ;;
        stop)
                echo -n "Stopping NRPE daemon..."
                pkill -u nagios nrpe
                echo " done."
        ;;
        restart)
                $0 stop
                sleep 2
                $0 start
                ;;
        *)
                echo "Usage: $0 start|stop|restart"
                ;;
        esac
exit 0

chmod +x /etc/init.d/nrpe
chkconfig --add nrpe
chkconfig nrpe on

六、配置pnp4nagios支持图表显示

1、解决依赖关系
rrdtool
php-gd

2、编译安装pnp4nagios
tar zxvf pnp4nagios-0.6.19.tar.gz
cd pnp4nagios-0.6.19
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make all
make install
make install-webconf
make install-config
make install-init

3、配置pnp4nagios
cd /usr/local/pnp4nagios/etc/
mv misccommands.cfg-sample misccommands.cfg
mv rra.cfg-sample rra.cfg
mv nagios.cfg-sample nagios.cfg
cd pages/
mv web_traffic.cfg-sample web_traffic.cfg
cd ../check_commands/
mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
mv check_nrpe.cfg-sample check_nrpe.cfg
mv check_nwstat.cfg-sample check_nwstat.cfg
service npcd start
chkconfig npcd on

4、配置nagios数据输出
vim /usr/local/nagios/etc/nagios.cfg    ==>

process_performance_data=1     #默认为0,修改为1
host_perfdata_command=process-host-perfdata     #注释开头#号
service_perfdata_command=process-service-perfdata     #注释开头#号
 
5、修改commands.cfg
vim /usr/local/nagios/etc/objects/commands.cfg    ==>   修改原有的命令定义,为如下

# 'process-host-perfdata' command definition
define command{
        command_name    process-host-perfdata
        command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
        }
# 'process-service-perfdata' command definition
define command{
        command_name    process-service-perfdata
        command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl
        }

6、在模版中添加pnp图表
vim /usr/local/nagios/etc/objects/templates.cfg    ==>   添加如下内容

define host {
name          host-pnp
action_url    /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
register   0
}
define service {
name         service-pnp
action_url   /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
register   0
}

7、在对应的host定义和service定义中使用刚刚定义的两个模版,并重启nagios和httpd。

注意:在通过web访问时点击图表会提示让删除/usr/local/pnp4nagios/share/install.php文件,手动删除即可。

七、对象相关概念解释(部分摘自nagios官网)

关于对象的解释
1、主机:主机是监控逻辑中的核心对象之一,其重要属性有:
    ==>主机通常是网络中的物理设备(如服务器、路由器、交换机、打印机等)
    ==>主机有某种形式的地址(如IP或MAC)
    ==>主机有一个或多个绑定的服务
    ==>主机与其他的主机可以有父/子节点的关系
2、主机组:主机组可以是一台或者多台主机的组合,利用主机组可以把处于不同区域主机分成不同的组以便于查看,也可用利用它来定义运行这相同服务的多台主机
3、服务:服务也是监控逻辑中的核心对象之一,其可以定义的属性有:
    ==>主机的属性(如CPU负载、磁盘利用率、启动时间、内存使用等)
    ==>主机提供的服务(如HTTP、MYSQL、SSH等)
    ==>其他与主机相关的信息(如DNS记录等)
4、服务组:与主机组类似,可以是一个或者多个服务的组合。
5、联系人:联系人是当监控的某个主机或服务发生故障是发送通知的对象,其可以定义的属性有:
    ==>接收通知的时间段(如7x24、工作日等)
    ==>在何中情况下接收通知(如主机状态为down、服务状态为warnning等)
    ==>接收通知的方式(如发送email、发送飞信等)
6、联系人组:一个或多个联系人的集合
7、时间周期:定义主机或服务的被监控的时间段、联系人可接收通知的时间
8、命令:命令定义了Nagios用哪个程序、脚本等,它在执行后必须可完成:
    ==>主机或服务的检测
    ==>对联系人的通知
    ==>事件处理
    ==>其他...