Zabbix监控Oracle数据库表空间,并配置邮件告警

数据库 Oracle
核心数据库10.100.0.20和21表空间已经修改完成,可以正常监控使用率和大小,并邮件告警通知。

 Oracle表空间监控

核心数据库10.100.0.20和21表空间已经修改完成,可以正常监控使用率和大小,并邮件告警通知。

修改Oracle数据库表空间监控

创建表空间信息收集脚本:

  1. vim /home/oracle/scripts/check_tablespace.sh 

脚本内容如下:

  1. #!/bin/bash 
  2. # tablespace usagep check 
  3. source ~/.bash_profile 
  4. function check { 
  5. sqlplus -S "/ as sysdba" <<  EOF 
  6. set numwidth 20 
  7. set linesize 200 
  8. set pagesize 200 
  9. spool /tmp/ora_tablespace.txt 
  10.  select aa.tablespace_name, 
  11.         round(bb.maxs, 2) "MAX(G)"
  12.         round(aa.usd, 2) "USED(G)"
  13.         round((bb.maxs - aa.usd) , 2) "FREE(G)"
  14.         round(aa.usd / bb.maxs * 100, 2) "USED%" 
  15.    from (Select b.Tablespace_Name, (b.Bytes - Nvl(a.Bytes, 0)) "USD" 
  16.            From (select tablespace_name, sum(bytes) bytes 
  17.                    from Dba_Free_Space 
  18.                   group by tablespace_name) a, 
  19.                 (select tablespace_name, sum(bytes) bytes 
  20.                    from Dba_Data_Files 
  21.                   group by tablespace_name) b 
  22.           Where b.tablespace_name = a.tablespace_name(+) 
  23.          -- and b.tablespace_name='MAXIMO_DATA' 
  24.          ) aa, 
  25.         (select tablespace_name, 
  26.                 sum(case 
  27.                       when maxbytes = 0 then 
  28.                        user_bytes 
  29.                       else 
  30.                        maxbytes 
  31.                     end"MAXS" 
  32.            from dba_data_files 
  33.          -- where tablespace_name='MAXIMO_DATA' 
  34.           group by tablespace_name 
  35.           order by tablespace_name) bb 
  36.   where aa.tablespace_name = bb.tablespace_name and aa.tablespace_name not like '%UNDO%' 
  37.   order by 5 desc, 1; 
  38. spool off 
  39. set linesize 100 
  40. set pagesize 100 
  41. spool /tmp/ora_autex.txt 
  42. select tablespace_name,autoextensible from dba_data_files; 
  43. spool off 
  44. quit 
  45. EOF 
  46. };check &>/dev/null 

 赋予执行权限

  1. chmod +x /home/oracle/scripts/check_tablespace.sh 

配置计划任务(oracle用户)

  1. */5 * * * * /home/oracle/scripts/check_tablespace.sh 

手动执行脚本并查看结果


表空间脚本执行结果

自动发现脚本内容如下:

  1. # cat discovery_oracle_tablespace.sh 
  2. #!/bin/bash 
  3. #zabbix discovery oracle tablespace 
  4. table_spaces=(`cat /tmp/ora_tablespace.txt | sed -e "1,3d" -e "/^$/d" -e "/selected/d" | awk '{print $1}'`) 
  5. length=${#table_spaces[@]} 
  6.   
  7. printf "{\n" 
  8. printf '\t'"\"data\":[" 
  9. for ((i=0;i<$length;i++)) 
  10. do 
  11.     printf "\n\t\t{" 
  12.     printf "\"{#TABLESPACE_NAME}\":\"${table_spaces[$i]}\"}" 
  13.     if [ $i -lt $[$length-1] ];then 
  14.         printf "," 
  15.     fi 
  16. done 
  17.     printf "\n\t]\n" 
  18. printf "}\n" 
  19.   
  20.   
  21. 执行结果 
  22. # ./discovery_oracle_tablespace.sh 
  23.         "data":[ 
  24.                 {"{#TABLESPACE_NAME}":"EMA"}, 
  25.                 {"{#TABLESPACE_NAME}":"SYSAUX"}, 
  26.                 {"{#TABLESPACE_NAME}":"MHWEB"}, 
  27.                 {"{#TABLESPACE_NAME}":"SYSTEM"}, 
  28.                 {"{#TABLESPACE_NAME}":"OGG"}, 
  29.                 {"{#TABLESPACE_NAME}":"USERS"}, 
  30.                 {"{#TABLESPACE_NAME}":"QDPTTBS"}, 
  31.                 {"{#TABLESPACE_NAME}":"UYUN"}, 
  32.                 {"{#TABLESPACE_NAME}":"LINKSCAPEH5DB"}, 
  33.               {"{#TABLESPACE_NAME}":"WX_HUANGHE_TBS"
  34.         ] 

 监控项脚本内容如下:

  1. # cat tablespace_check.sh 
  2. #!/bin/bash 
  3. # oracle tablespace check 
  4. CEHCK_TYPE=$1 
  5. TABLESPACE_NAME=$2 
  6.   
  7. function usagepre { 
  8.     grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf "%.f\n",$5}' 
  9. #    grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf "%.f\n",$3/$2*100}' 
  10.   
  11. function available { 
  12.     grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf $4}' 
  13. #    grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf ($2-$3)*1024*1024}' 
  14.   
  15. function check { 
  16.     if grep "\b$TABLESPACE_NAME\b" /tmp/ora_autex.txt | awk '{print $2}' | uniq | grep "YES" &>/dev/null;then 
  17.         echo 1 
  18.     else 
  19.         echo 0 
  20.     fi 
  21.   
  22. case $CEHCK_TYPE in 
  23.     pre) 
  24.         usagepre ;; 
  25.     fre) 
  26.         available ;; 
  27.     check
  28.         check ;; 
  29.     *) 
  30.         echo -e "Usage: $0 [pre|fre|check] [TABLESPACE_NAME]" 
  31. esac 

 Agent参数配置:

  1. # cat /etc/zabbix/zabbix_agentd.d/oracle_tablespace.conf 
  2. UserParameter=discovery.oracle.tablespace,/etc/zabbix/scripts/discovery_oracle_tablespace.sh 
  3. UserParameter=tablespace.check[*],/etc/zabbix/scripts/tablespace_check.sh $1 $2 
  4.   
  5. 重启zabbix-agent 

 主机添加模板


添加自动发现模板

等待一会后查看监控结果:

表空间监控的数据

监控指标图形展示:

 这个的告警我就不去模拟了,因为都是生产环境的,下图为4月份的TEMP表空间告警邮件截图:

邮件通知表空间告警

 

责任编辑:姜华 来源: 今日头条
相关推荐

2014-04-09 11:43:54

Zabbix监控Mysql数据库

2011-03-25 10:26:34

Oracle数据库管理表空间

2009-05-14 13:36:11

Oracle表空间优化

2009-07-02 00:26:00

临时表空间Oracle数据库性能

2010-03-24 09:42:12

Oracle数据库

2011-08-05 12:44:57

Oracle数据库表空间

2011-08-23 11:09:36

Oraclerman恢复system表空间恢复

2010-04-19 16:01:54

2019-10-11 08:19:01

Oracle数据库表空间设计

2011-08-29 17:00:47

Oracle数据库RM表空间数据块介质

2009-10-23 15:30:17

Oracle表空间恢复

2011-08-02 16:44:00

Oracle数据库角色权限默认表空间

2022-04-11 07:47:45

zabbix邮件告警项目

2010-04-21 11:43:33

Oracle数据库

2019-11-26 08:31:50

Oracle数据库SYSAUX表空间

2011-08-15 23:14:34

Oraclerman环境配置

2011-08-09 18:40:21

Oracle控制文件重做日志文件

2011-07-18 15:59:17

MySQL数据库

2011-05-24 14:55:01

Oracle数据库

2010-04-14 13:14:46

Oracle数据库
点赞
收藏

51CTO技术栈公众号