1注:因为这里采用的是监控本机的
oracle服务,所以直接使用
/usr/local/nagios/etc/objects/localhost.cfg 配置文件中定义了的主机
localhost和组
linux-servers。
修改
cgi.cfg配置文件,在该文件内所有以
authorized(认证)开头的行的行尾加上用户
nagios。这里推荐使用
sed来进行操作,命令为:
#sed '/authorized/ s/$/,nagios/g' /usr/local/nagios/etc/cgi.cfg
因为
nagios是利用网页进行监控的,访问
nagios的网页需要进行身份验证,所以要创建
nagios访问网页的用户:
#htpasswd -c /usr/local/nagios/etc/htpasswd.usr nagios
后根据提示输入密码即可,用户和密码被保存到
/usr/local/nagios/etc/htpasswd.usr文件中。如果是在已有用户的基础上添加新的用户,创建用户的命令跟上面的基本相似,但是不要添加
-c参数,不然会被覆盖掉原有的用户。
2 监控脚本
nagios中自带监控oracle的监控脚本,但是由于默认脚本功能较多,如果要使用需要先看懂脚本的内容,而且自定义性不是很强,所以这里使用自定义的监控表空间的脚本:
注:自定义的脚本可以放在任何目录,前提是
nagios用户对该脚本有运行权限。为了方便在
nagios中定义监控命令,所以我把脚本放到了
/usr/local/nagios/libexec/目录中:
#cd /usr/local/nagios/libexec
#cat oracle.sh
1 #!/bin/bash
2 /oracle/app/oracle/product/10.2.0/db_1/bin/sqlplus sys/sys as sysdba <
3 set lines 1000
4 set pages 100
5 spool /tmp/oracle.msg #开启操作记录,并将记录保存到/tmp/oracle.msg文件中
6 SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE, (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" FROM SYS.SM\$TS_AVAIL A,SYS.SM\$TS_USED B,SYS.SM\$TS_FREE C WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME; #在系统表中搜索相应的数据并进行运算
7 spool off #操作记录结束
8 exit #推出oracle
9 EOF
10 userspace=`cat /tmp/oracle.msg | grep USER | awk '{print $6}'` #截取保存文件中的USER表的第六列
11 userspace=${userspace%.*} #去掉该数值后面的%后赋值给userpace
12 if [ $userspace -ge 25 ] #判断userspace的值大小给予不同的返回值
13 then
14 exit 0
15 elif [ $userspace -eq 0 ]
16 then
17 exit 2
18 else
19 exit 1
20 fi
注:
nagios中的返回值是
nagios程序定义的,其中:
0:正常(
OK);
1:警告(
WARNING);
3:紧急(
CRITICAL);
4:未知(
UNKNOWN)
我的
oracle只有一个
USER表空间需要监控,如果有其它的表空间需要监控,只需要仿照第
10到第
20行进行配置即可。
4 定义监控命令
完成了脚本的编写,就需要将脚本编进
nagios调用的监控命令中,
nagios定义监控命令是在
$nagios_home/etc/commands.cfg文件中。
define command{ #定义一个新的命令
command_name check_oracle #定义命令的名称
command_line $USER1$/oracle.sh #定义命令调用脚本的路径
}
5 定义监控服务
监控是
nagios的核心,如果不监控主机和服务那么之前的设置等于无用功。定义监控的主机,主机组和服务都是在
$nagios_home/etc/objects/localhost.cfg文件中。
虽然这里使用的是系统默认的主机和组,但这里还是介绍下添加监控主机和主机组的方法:
5.1 定义监控主机
define host{
host_name oracle #定义被监控的主机名
alias ora #定义被监控的主机别名
address 192.168.4.1 #被监控的主机的IP地址
contact_groups admins #定义被监控主机所属的用户组
check_command check-host-alive #定义主机监控
check_interval 1 #定义检查频率
max_check_attempts 5 #定义检查次数
notification_interval 10
notification_period 24x7
notification_option d,u,r
}
5.2 定义主机组
define hostgroup{
hostgroup_name user #定义主机组名称
alias user
members oracle #定义主机组成员
}
5.3 定义服务
define service{
use local-service
host_name localhost
service_description ORACLE
check_period 24x7
normal_check_interval 2
process_perf_data 1
retry_check_interval 1
max_check_attempts 5
contact_groups admins
notification_period 24x7
notification_options w,u,c,r
check_command check_oracle
}
定义的服务中使用的用户、主机和主机组都是系统默认的。
6 nagios的用户权限
nagios使用的用户是我们之前创建的nagios,而登陆oracle需要oracle用户,所以我们需要先将nagios用户加到oracle的用户组中,并且复制oracle用户的环境变量到nagios用户,这些操作需要在root用户进行:
#usermod -G oinstall nagios
#cp /home/oracle/.bash_profile /home/nagios/.bash_profile
#chown nagios.nagios /home/nagios/.bash_profile
7 语法检查
完成了上面的配置之后就需要对配置进行语法检查,
nagios自带语法检查的命令:
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
8 启动
nagios
如果语法检查没有错误,就可以启动
nagios了。
#/etc/init.d/nagios start
nagios的安装和部署 http://songknight.blog.51cto.com/2599480/655121