一、安装 nagios 


yum install -y epel-release

yum install -y httpd nagios nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe


(其中httpd作为nagios的web端接口)


还可以通过httpd的工具来生成nagios的登录密码:


htpasswd -c /etc/nagios/passwd nagiosadmin


检测配置文件是否有问题:


nagios -v /etc/nagios/nagios.cfg


启动服务:


service httpd start

service nagios start


浏览器访问:


httpd://ip/nagios



二、nagios 监控客户端


需要在客户端机器上安装nagios服务:


yum install -y epel-release

yum install -y  nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe


打开配置文件/etc/nagios/nrpe.cfg


找到“allowed_hosts=127.0.0.1”改为“allowed_hosts=127.0.0.1,192.168.1.11”后面ip为服务端ip


找到“dont_blame_nrpe=0”改为“dont_blame_nrpe=1”


启动服务:


service nrpe start



三、nagios 服务端配置


打开文件/etc/nagios/nagios.cfg,找到“cfg_dir”,这是定义监控文件的存放目录,我们可以定义很多个目录,以后把新增加的主机信息文件全部放到这里。


在我们定义的目录下,创建子配置文件,添加被监控主机信息:


cd /etc/nagios/conf.d/

vim 192.168.1.12.cfg


define host{

       use     linux-server
       host_name       192.168.1.12
       alias                   192.168.1.12
       address             192.168.1.12
}
define service{
       use     generic-service
       host_name       192.168.1.12
       service_description         check_ping
       check_command           check_ping!100.0,20%!200.0,50%
       max_check_attempts 5
       normal_check_interval 1
}
define service{
       use     generic-service
       host_name       192.168.1.12
       service_description         check_ssh
       check_command           check_ssh
       max_check_attempts 5
       normal_check_interval 1
}
define service{
       use     generic-service
       host_name       192.168.1.12
       service_description         check_http
       check_command           check_http
       max_check_attempts 5
       normal_check_interval 1
}


##注 意,这 里的IP是client端的IP,监控的项目有三个ping, ssh, http。其实这三个项目使用的脚本都为本地脚本,也就是说,即使远程主机没有安装nagios和nrpe同样可以监控这些项目。但是如果想监控load,disk,等等就需要通过nrpe服务来搞定了,道理很简单,load和disk都需要登录到远程主机上去获得信息,而ping,ssh,http都不需要的。这个到远程主机获取相关的信息的过程是由nrpe完成的。如果你的client上没有启动nrpe服务那么我们是无法获取远程主机的load和disk等信息的。下面笔者配置一下使用nrpe来监控远程主机的相关项目。


在server端编辑/etc/nagios/objects/commands.cfg


在文件的最后添加一行内容:


define command{

        command_name  check_nrpe

        command_line  $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 

        }



继续修改子配置文件


cd /etc/nagios/conf.d/

vim 192.168.1.12.cfg          #添加如下内容


define service{

       use     generic-service
       host_name       192.168.1.12
       service_description     check_load
       check_command           check_nrpe!check_load
       max_check_attempts 5
       normal_check_interval 1
}

define service{
       use     generic-service
       host_name       192.168.1.12
       service_description     check_disk_hda1
       check_command           check_nrpe!check_hda1
       max_check_attempts 5
       normal_check_interval 1
}

define service{
       use     generic-service
       host_name       192.168.1.12
       service_description     check_disk_hda2
       check_command           check_nrpe!check_hda2
       max_check_attempts 5
       normal_check_interval 1
}



##这里需要解释一下相关的“check_command”, 先看这个“check_nrpe!check_load” 这里的check_nrpe就是上面/usr/local/nagios/etc/objects/commands.cfg中刚刚定义的,后面的check_load是在远程主机上定义的一个命令脚本。具体在哪里定义稍后介绍。为什么中间加个”!”,这个是nagios特有的形式,无需关心。下面需要到远程主机上去定义上面用到的脚本了。


服务端重启服务:

service nagios restart


客户端重启服务:

service nrpe restart



四、在nagios客户端自定义脚本监控


将监控脚本写完之后,拷贝到/usr/lib64/nagios/plugins/目录下,当然此目录在配置文件/etc/nrpe.d/check_log2s3.cfg中已经定义。


vim /etc/nrpe.d/check_log2s3.cfg


command[check_log2S3]=sudo /usr/lib64/nagios/plugins/logmonitoring.sh


##当然,这些内容可以直接写进/etc/nagios/nrpe.cfg中,但是不方便进行管理,因此我们可以在/etc/nrpe.d/目录中将每个监控脚本的服务独立出来。


重启客户端服务:


service nrpe restart


到服务端上添加相应的service:


vim 192.168.1.12.cfg


##加入如下内容


define service{
       use     generic-service
       host_name       192.168.1.12
       service_description     check_logs3
       check_command           check_nrpe!check_logs3
       max_check_attempts 5
       normal_check_interval 1
}


重启服务端服务:


service nagios restart