暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

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

IT外包 2021-07-01
1896


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表空间告警邮件截图:

邮件通知表空间告警

图片和内容源自网络分享,若有侵权,请联系删除!

上海艾磊科技有限公司专门为企业提供IT咨询,IT外包,系统集成,以及各类IT增值服务。其中增值服务包括OFFICE 365云服务,鼎捷企业ERP管理软件,云备份,企业邮箱,无线覆盖,上网行为管理,VPN架设,网络安全服务,INTERNET接入,设备租赁, IP电话服务

文章转载自IT外包,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论