最近根据公司的需要,开始捣腾Nagios,作为一个开源的监视工具来说,实在是颇为好用的。
那o小白是从官网上下的Nagios3.3.1版本(basic 和 plugin),那自己安装了一下,本来是想把安装和配置的所有过程都写下来的,但是网上已经有了不少这样的教程,而且官方的安装文档也写得十分详尽,那o小白就不再重复一次了,但是作为一名dba,至少要把check_oracle插件的使用给写出来。
那下面的操作是建立在Nagios顺利安装,Nagios用户有Oracle Client,并且环境变量正确的情况下,换句话说就是sqlplus和tnsnames能顺利执行。(注意,环境变量设错可能会出现sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory)
首先,check_oracle -h可以知道这个插件的使用方法:
Usage:
check_oracle --tns <Oracle Sid or Hostname/IP address> check_oracle --db <ORACLE_SID> check_oracle --login <ORACLE_SID> check_oracle --cache <ORACLE_SID> <USER> <PASS> <CRITICAL> <WARNING> check_oracle --tablespace <ORACLE_SID> <USER> <PASS> <TABLESPACE> <CRITICAL> <WARNING> check_oracle --oranames <Hostname> check_oracle --help check_oracle --version根据不同的参数提供的功能比较全的,那o小白这里就拿两个比较复杂的做例子:
--cache:查看library和buffer的命中率,根据CRITICAL和WARNING的阈值进行报警。
--tablespace:查看表空间的使用率,根据CRITICAL和WARNING的阈值进行报警。
首先编辑$NAGIOS_HOME/etc/objects/commands.cfg文件,添加两个条目:
# 'check_tablespace_oracle' command definition
define command{ command_name check_tablespace_oracle command_line $USER1$/check_oracle --tablespace $ARG1$ $ARG2$ $USER4$ $ARG3$ $ARG4$ $ARG5$ } # 'check_rate_oracle' command definition define command{ command_name check_rate_oracle command_line $USER1$/check_oracle --cache $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ } 为libexec下的check_oracle命令定义,用以在之后的应用的配置文件中设定。仔细看可以看到这两个配置的方式有所不同,在第一个tablespace的配置中,原来的密码位置用了一个宏来替代,为什么要用这个宏呢?由于在Nagios的网络浏览中可以看到策略的具体形式,如果用密码原文的话会有安全问题,所以可以在$NAGIOS_HOME/etc/resource.cfg文件中定义用户的宏,可以通过这个方法避免敏感信息的泄露,也可以通过设置宏来设定一些系统的路径,$USERS1$就是这个作用。在命令被最后解析的时候,所有的宏都会被替换,最多可以设置32个宏,resource.cfg中的内容如下:$USER1$=/usr/local/nagios/libexec
# Store some usernames and passwords (hidden from the CGIs) $USER4$=oracle然后是应用的配置文件,这里o小白的是$NAGIOS_HOME/etc/objects/localhost.cfg,添加一个服务组定义,和两个服务:
服务组:#define service group
define servicegroup{ servicegroup_name oracle-service alias Oracle Service } 服务:#define a service to test check_oracle define service{ use local-service ; Name of service template to use servicegroups oracle-service host_name localhost service_description Oracle_System_Space check_command check_tablespace_oracle!ora11g!cy!SYSTEM!90!80 } define service{ use local-service ; Name of service template to use servicegroups oracle-service host_name localhost service_description Oracle_Buff_Rate check_command check_rate_oracle!ora11g!cy!oracle!80!90 }可以看到,服务定义中根据之前的commands.cfg中的命令定义来具体传递参数,方法是用!,之前由于tablespace已经设置了宏,那这里就不需要在输入密码了,当然直接输入密码也是可行的。
然后就可以重启Nagios服务,service nagios restart
打开网络浏览器,输入nagios的网址后(通常是ip/nagios),就可以看到结果了: