zabbix是一款极其强大的开源监控工具,下面我分享下zabbix如何监控表空间,跟着这个思路,监控其他项都是类似操作。
前提条件是你已经有了zabbix server和zabbix agent,且zabbix agent与oracle数据库运行在一台机器上面。
a.定义查表空间使用率的脚本
/home/oracle/get_tablespace_usage.sh
#!/bin/bash # get tablespace usage source ~/.bash_profile function check { sqlplus -S "/ as sysdba" << EOF set linesize 200 pagesize 200 set feedback off heading off spool /tmp/tablespace.log select tablespace_name,round(used_percent) used_percent from dba_tablespace_usage_metrics; spool off quit EOF }; check &> /dev/null errors=`grep ERROR /tmp/tablespace.log | wc -l` if [ "$errors" -gt 0 ]; then echo "" > /tmp/tablespace.log fi
chown oracle: get_tablespace_usage.sh
chmod 755 get_tablespace_usage.sh
b.定义表空间自动发现的脚本
/etc/zabbix/scripts/discovery_tablespace.sh
#!/bin/bash # zabbix auto discovery oracle tablespace tablespaces=(`cat /tmp/tablespace.log | awk "{print $1}" | grep -v "^$"`) length=${#tablespaces[@]} printf "{\n" printf "\t""\"data\":[" for ((i=0;i<$length;i++)) do printf "\n\t\t{" printf "\"{#TABLESPACE_NAME}\":\"${tablespaces[$i]}\"}" if [ $i -lt $[$length-1] ];then printf "," fi done printf "\n\t]\n" printf "}\n"
chmod 755/etc/zabbix/scripts/discovery_tablespace.sh
c.定义表空间监控项脚本
/etc/zabbix/scripts/tablespace_check.sh
#!/bin/bash # oracle tablespace check TABLESPACE_NAME=$1 grep "\b$TABLESPACE_NAME\b" /tmp/tablespace.log | awk "{print $2}"
chmod 755/etc/zabbix/scripts/tablespace_check.sh
su - oracle
crontab -e
*/5 * * * * /home/oracle/get_tablespace_usage.sh
执行的结果查看/tmp/tablespace.log,第一列是表空间的名字,第二列是对应的表空间使用率
EXAMPLE 2 SYSAUX 3 SYSTEM 5 TBS01 85 TEMP 0 UNDOTBS1 0 USERS 1
vi /etc/zabbix/zabbix_agentd.d/userparameter_oracle.conf
# tablespace usage
UserParameter=discovery.tablespace,/etc/zabbix/scripts/discovery_tablespace.sh
UserParameter=tablespace.check.[*],/etc/zabbix/scripts/tablespace_check.sh $1
a.创建模板,模板名字随便起,这里我定义了一个宏
b.创建自动发现规则
c.创建监控项原型
d.创建触发器类型
e.创建图形原型
我将一个表空间创建表,并插入数据,使其超过80%,看其是否报警
测试通过!
到此这篇关于使用zabbix监控oracle表空间的操作流程的文章就介绍到这了,更多相关zabbix监控oracle表空间内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关文章: