环境:Oracle 10g
CentOS CentOS release 5.5 (Final)
Nagios 3.4.3
一、在 Oracle 所在服务器上安装 Nagios plus 和 NRPE
a. 增加用户&设定密码
# useradd nagios
# passwd nagios
b. 安装Nagios 插件
在configure时出现checking for redhat spopen problem...的问题,需要加上--enable-redhat-pthread-workaround开关来解决。
# tar zxvf nagios-plugins-1.4.16.tar.gz
# cd nagios-plugins-1.4.16
# ./configure --enable-redhat-pthread-workaround --prefix=/usr/local/nagios
# make && make install
这一步完成后会在/usr/local/nagios/下生成三个目录include、libexec和share。
修改目录权限
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec
c. 安装NRPE
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
# tar zxvf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
# make all
接下来安装NPRE插件,daemon和示例配置文件。
c.1 安装check_nrpe 这个插件
# make install-plugin
监控机需要安装check_nrpe 这个插件,被监控机并不需要,我们在这里安装它只是为了测试目的。
c.2 安装deamon
# make install-daemon
c.3 安装配置文件
# make install-daemon-config
现在再查看nagios 目录就会发现有5个目录了
按照安装文档的说明,是将NRPE deamon作为xinetd下的一个服务运行的。在这样的情况下xinetd就必须要先安装好,不过一般系统已经默认安装了。
d. 安装xinted 脚本
# make install-xinetd
可以看到创建了这个文件/etc/xinetd.d/nrpe。
编辑这个脚本:
在only_from 后增加监控主机的IP地址。
编辑/etc/services 文件,增加NRPE服务
重启xinted 服务
# service xinetd restart
查看NRPE 是否已经启动
可以看到5666端口已经在监听了。
e. 测试NRPE是否则正常工作
使用上面在被监控机上安装的check_nrpe 这个插件测试NRPE 是否工作正常。
# /usr/local/nagios/libexec/check_nrpe -H localhost
会返回当前NRPE的版本
也就是在本地用check_nrpe连接nrpe daemon是正常的。
注:为了后面工作的顺利进行,注意本地防火墙要打开5666能让外部的监控机访问。
f. check_nrpe 命令用法
查看check_nrpe 命令用法
# /usr/local/nagios/libexec/check_nrpe –h
可以看到用法是:
check_nrpe –H 被监控的主机 -c 要执行的监控命令
注意:-c 后面接的监控命令必须是nrpe.cfg 文件中定义的。也就是NRPE daemon只运行nrpe.cfg中所定义的命令。
g. 查看NRPE的监控命令
# cd /usr/local/nagios/etc
# cat nrpe.cfg |grep -v "^#"|grep -v "^$"
[root@Nagiso-Linux etc]# cat nrpe.cfg |grep -v "^#"|grep -v "^$"
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=127.0.0.1
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
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_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
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
[root@Nagiso-Linux etc]#
红色部分是命令名,也就是check_nrpe 的-c 参数可以接的内容,等号 “=” 后面是实际执行的插件程序(这与commands.cfg 中定义命令的形式十分相似,只不过是写在了一行)。也就是说check_users 就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10 的简称。
我们可以很容易知道上面这5行定义的命令分别是检测登陆用户数,cpu负载,sda1的容量,僵尸进程,总进程数。各条命令具体的含义见插件用法(执行“插件程序名 –h”)。
由于-c 后面只能接nrpe.cfg 中定义的命令,也就是说现在我们只能用上面定义的这五条命令。我们可以在本机实验一下。
为了监控数据库表空间的内容,在/usr/local/nagios/etc/nrpe.cfg文件添加以下内容:
#Check Oracle
command[check_oracle_tns]=/usr/local/nagios/libexec/check_oracle --tns orcl l5m l5m
command[check_oracle_db]=/usr/local/nagios/libexec/check_oracle --db orcl l5m l5m
command[check_oracle_login]=/usr/local/nagios/libexec/check_oracle --login orcl l5m l5m
command[check_oracle_cache]=/usr/local/nagios/libexec/check_oracle --cache orcl l5m l5m 80 90
command[check_oracle_TS_L5MSPACE]=/usr/local/nagios/libexec/check_oracle --tablespace orcl l5m l5m L5MSPACE 90 80
command[check_oracle_TS_SYSTEM]=/usr/local/nagios/libexec/check_oracle --tablespace orcl l5m l5m SYSTEM 90 80
command[check_oracle_TS_SYSAUX]=/usr/local/nagios/libexec/check_oracle --tablespace orcl l5m l5m SYSAUX 90 80
command[check_oracle_TS_CSPSPACE]=/usr/local/nagios/libexec/check_oracle --tablespace orcl l5m l5m CSPSPACE 90 80
command[check_oracle_TS_MAGSPACE]=/usr/local/nagios/libexec/check_oracle --tablespace orcl l5m l5m MAGSPACE 90 80
command[check_oracle_TS_MTRX]=/usr/local/nagios/libexec/check_oracle --tablespace orcl l5m l5m MTRX 90 80
command[check_oracle_TS_QHTDATA]=/usr/local/nagios/libexec/check_oracle --tablespace orcl l5m l5m QHTDATA 90 80
二、配置 Nagios 服务端
之前已经将Nagios运行起来了,现在要做的事情是:
- 安装check_nrpe 插件;
- 在commands.cfg 中创建check_nrpe 的命令定义,因为只有在commands.cfg 中定义过的命令才能在services.cfg 中使用;
- 创建对被监控主机的监控项目;
a)安装check_nrpe 插件
# tar zxvf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
# make all
# make install-plugin
只运行这一步就行了,因为只需要check_nrpe插件。
在Nagios-Linux 上我们已经装好了nrpe,现在我们测试一下监控机使用check_nrpe 与被监控机运行的nrpe daemon之间的通信。
看到已经正确返回了NRPE的版本信息,说明一切正常。
b) 在commands.cfg中增加对check_nrpe的定义
# vi /usr/local/nagios/etc/objects/commands.cfg
在最后面增加如下内容:
c)定义对Nagios-Linux 主机的监控
在hosts.cfg中定义被监控的主机
define host{
use linux-server
host_name DB106
alias QHT-106
address 172.17.61.106
}
下面就可以在services.cfg 中定义对Nagios-Linux 主机的监控了。
##############DB106###############
define service{
use generic-service
host_name DB106
service_description check-host-alive
check_command check-host-alive
}
define service{
use generic-service ; Name of service template to use
host_name DB106
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use generic-service ; Name of service template to use
host_name DB106
service_description SSH
check_command check_ssh
notifications_enabled 0
}
define service{
use generic-service ; Name of service template to use
host_name DB106
service_description HTTP
check_command check_http
notifications_enabled 0
}
define service {
use generic-service
host_name DB106
service_description TNS Check
check_command check_nrpe!check_oracle_tns
}
define service {
use generic-service
host_name DB106
service_description DB Check
check_command check_nrpe!check_oracle_db
}
define service {
use generic-service
host_name DB106
service_description Login Check
check_command check_nrpe!check_oracle_login
}
define service {
use generic-service
host_name DB106
service_description Cache Check
check_command check_nrpe!check_oracle_cache
}
define service {
use generic-service
host_name DB106
service_description check_oracle_TS_L5MSPACE
check_command check_nrpe!check_oracle_TS_L5MSPACE
}
define service {
use generic-service
host_name DB106
service_description check_oracle_TS_SYSTEM
check_command check_nrpe!check_oracle_TS_SYSTEM
}
define service {
use generic-service
host_name DB106
service_description check_oracle_TS_SYSAUX
check_command check_nrpe!check_oracle_TS_SYSAUX
}
define service {
use generic-service
host_name DB106
service_description check_oracle_TS_CSPSPACE
check_command check_nrpe!check_oracle_TS_CSPSPACE
}
define service {
use generic-service
host_name DB106
service_description check_oracle_TS_MAGSPACE
check_command check_nrpe!check_oracle_TS_MAGSPACE
}
define service {
use generic-service
host_name DB106
service_description check_oracle_TS_MTRX
check_command check_nrpe!check_oracle_TS_MTRX
}
define service {
use generic-service
host_name DB106
service_description check_oracle_TS_QHTDATA
check_command check_nrpe!check_oracle_TS_QHTDATA
}
验证Nagios 配置文件的正确性
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如没有问题,则重启nagios服务:
# /etc/init.d/nagios restart
下图是我实验的结果: