您的位置:首页 > 数据库 > Oracle

使用nagios监控oracle服务

2013-06-21 11:46 393 查看
环境: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 插件

#
4000
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

 

下图是我实验的结果:

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Nagios