zabora监控Oracle数据库
它作为一个开源项目,通过shell脚本有效的监控Oracle基础指标。本文档旨在通过实战,在Zabbix 3.0版本之下,监控生产环境下的多台Oracle数据库。
建立oracle账号
CREATE USER monitor IDENTIFIED BY 'xxxxxxx' DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;
GRANT CONNECT TO monitor;
GRANT RESOURCE TO monitor;
ALTER USER monitor DEFAULT ROLE ALL;
GRANT SELECT ANY TABLE TO monitor;
GRANT CREATE SESSION TO monitor;
GRANT SELECT ANY DICTIONARY TO monitor;
GRANT UNLIMITED TABLESPACE TO monitor;
GRANT SELECT ANY DICTIONARY TO monitor;
GRANT SELECT ON V_$SESSION TO monitor;
GRANT SELECT ON V_$SYSTEM_EVENT TO monitor;
GRANT SELECT ON V_$EVENT_NAME TO monitor;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO monitor;
基本原理
它的核心是通过一个zabora.sh
脚本,调用zabora/sql
目录下的多个sql脚本,用于获取json数据。然后在zabbix平台上调用。用于监控。
部署命令:
./zabora/deploy_zabbix.sh "${ORACLE_USER}" "${ORACLE_PASS}"
chmod 755 /etc/zabbix/scripts/agentd/zabora/zabora.sh
如上命令,可以直接部署zabora.sh
脚本。效果如下:
配置了
/etc/zabbix/zabbix_agentd.d/zabora.conf
。放置shell脚本,SQL脚本到
/etc/zabbix/scripts/agentd/zabora
目录下。UserParameter=zabora[*],/etc/zabbix/scripts/agentd/zabora/zabora.sh -o $1 -s $2 -a $3 UserParameter=zabora.discovery[*],/etc/zabbix/scripts/agentd/zabora/zabora.sh -o $1 -s $2 -a $3 -j $4 UserParameter=zabora.version,/etc/zabbix/scripts/agentd/zabora/zabora.sh -v short
这里手工调用
zabora.sh
,查看其机理。-o
代表oracle的sid-s
代表调用sql脚本的简称。-j
是否以json串的结果输出。以下是查看Oracle表空间的信息。
[root@oradb sql]# /etc/zabbix/scripts/agentd/zabora/zabora.sh -o oradb -s tb_list -j 1 { "data":[ { "{#1}":"SYSTEM" }, { "{#1}":"SYSAUX" }, { "{#1}":"USERS" }, { "{#1}":"OD" }, { "{#1}":"OA" }, { "{#1}":"FA" }, { "{#1}":"HR" }, { "{#1}":"IPC_HZ_DB" }, { "{#1}":"PM" }, { "{#1}":"DEF3DB" }, { "{#1}":"HDOA" }, { "{#1}":"ARP" }, { "{#1}":"LMS_MANAGE" }, { "{#1}":"LMS_SERVER" }, { "{#1}":"DEVPLATFORM" }, { "{#1}":"NEWOA" }, { "{#1}":"PAY" }, { "{#1}":"WHIOV_OA" }, { "{#1}":"TBS_OA" }, { "{#1}":"FIN" }, { "{#1}":"EXCHANGE" }, { "{#1}":"PLATFORM" }, { "{#1}":"NNC_DATA02" }, { "{#1}":"NNC_DATA03" }, { "{#1}":"NNC_INDEX01" }, { "{#1}":"NNC_INDEX02" }, { "{#1}":"NNC_INDEX03" }, { "{#1}":"PORTAL" }, { "{#1}":"NNC_DATA01" }, { "{#1}":"FINEDB" }, { "{#1}":"ARP_FLASH_ARC" }, { "{#1}":"FINEDB51" } ] }
在server端,测试脚本的可用性.
[root@localhost ~]# zabbix_get -s 172.31.222.34 -k "zabora[oradb,db_active,1]" 1 [root@localhost ~]# zabbix_get -s 172.31.222.34 -k "zabora[oradb,tb_size,SYSTEM]" 3.43
以上说明,后台server端和agent端,脚本配置无误。现在可以配置前台,用于监控oracle的相关指标。
zabbix前台配置
步骤1,导入模板
选择template_db_oracle-2.2.xml这个模板,【配置】--》【模板】--》【导入】,模板导入成功。
模板的内容,无非就是监控项,触发器,图形等。其实可以自己建立一个监控指标,用于监控。
步骤2,添加主机到模板中。
【配置】--》【主机】。选择你要监控的Oracle主机。
【模板】,添加需要链接的模板,这里的模板名字为【Template_DB_Oracle】。
【主机】--》【宏】。用于配置{$ORACLE_SID}的参数值。效果如下:
{$ORACLE_SID} = oradb。