一、安装 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-serverhost_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{
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
##加入如下内容
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