设为首页 收藏本站
查看: 1157|回复: 0

[经验分享] zabbix自动发现oracle表空间并监控其使用率

[复制链接]

尚未签到

发表于 2019-1-25 06:32:27 | 显示全部楼层 |阅读模式
  监控需求
    Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制。Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展。那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者。当检测到表空间没有开启自动扩展时,则触发Information信息。说明一下:oracle表空间是否开启自动扩展以及最大能扩展到多少在最初应该规划好的,有时在创建表空间时指定初始容量和最大能扩展的容量一致的话,那么就会让这个表空间立即拥有最大能扩展的容量,而不是随着表空间的消耗而慢慢增加。所以即使我们检测到该表空间开启了自动扩展功能,实际上也不会继续扩展了。当然在大多数业务场景下一般是不建议开启表空间自动扩展功能的,除非你的业务是非关键的。回到监控这里,当我们同时收到这两个告警信息时,那么就要及时处理oracle表空间使用率大于95%的问题了。
  

  监控方式
    有了zabbix监控系统,我们可以定制任何需要的监控项目,首先通过自动发现脚本发现oracle表空间,然后再制定额外的属于oracle表空间的监控项目,配置告警触发器,最后在zabbix的Web页面端展示oracle表空间的使用率和剩余量。
  
  获取oracle数据库表空间信息的原始脚本和自动发现脚本
    Oracle表空间的信息需要SQL语句查询得到,因此,我们首先创建一个获取表空间信息的原始脚本/home/oracle/bin/check_tablespace.sh,这个脚本由oracle用户去执行,脚本编写如下:
oracle@hmracdb1:~/bin> cat check_tablespace.sh
#!/bin/bash
# tablespace usagep check
source ~/.bash_profile
function check {
sqlplus -S "/ as sysdba" /dev/null  执行这个脚本,并生成两个保存有oracle表空间名称信息的文件:/tmp/ora_tablespace.txt/tmp/ora_autex.txt
oracle@hmracdb1:~/bin> ls -l /tmp/ora_*
-rw-r--r-- 1 oracle oinstall 1030 Mar 23 20:50 /tmp/ora_autex.txt
-rw-r--r-- 1 oracle oinstall  929 Mar 23 20:50 /tmp/ora_tablespace.txt
oracle@hmracdb1:~/bin> cat /tmp/ora_tablespace.txt
TABLESPACE_NAME                                                   TOTAL       FREE      USAGE   
------------------------------------------------------------ ---------- ---------- ----------   
TEST11                                                               50         49          1   
SYSAUX                                                             2048       1197        851   
UNDOTBS1                                                           2048  2036.3125    11.6875   
USERS                                                              1024       1023          1   
SYSTEM                                                             2048   1358.375    689.625   
UDB_SPACE                                                         40960  31673.875   9286.125   
UNDOTBS2                                                           2048  2035.1875    12.8125   
7 rows selected.

oracle@hmracdb1:~/bin> cat /tmp/ora_autex.txt
TABLESPACE_NAME                                              AUTOEX                              
------------------------------------------------------------ ------                              
SYSTEM                                                       YES                                 
SYSAUX                                                       YES                                 
UNDOTBS1                                                     YES                                 
UNDOTBS2                                                     YES                                 
USERS                                                        YES                                 
UDB_SPACE                                                    YES                                 
UDB_SPACE                                                    YES                                 
TEST11                                                       YES                                 
8 rows selected.  

    我们需要把脚本放到oracle用户的crontab计划任务表中,让脚本在后台每5分钟执行一次,一定要保证计划任务能正常按计划执行,否则这可能会被监控欺骗(监控端获取到的数据一直保持不变)。
hmracdb1:~ # crontab -u oracle -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXXj0XHiH installed on Thu Mar 23 11:38:37 2017)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
*/5 * * * * /home/oracle/bin/check_tablespace.sh  手动执行SQL语句获取表空间使用率
SQL> set linesize 200
select ff.s tablespace_name,
ff.b total,
              (ff.b - fr.b)usage,
fr.b free,
              round((ff.b - fr.b) / ff.b * 100) || '% ' usagep
from (select tablespace_name s, sum(bytes) / 1024 / 1024 b
                    from dba_data_files
                  group by tablespace_name) ff,
              (select tablespace_name s, sum(bytes) / 1024 / 1024 b
                    from dba_free_space
                  group by tablespace_name) fr
12  where ff.s = fr.s;
TABLESPACE_NAME                                                   TOTAL      USAGE       FREE USAGEP
------------------------------------------------------------ ---------- ---------- ---------- ------------------------------------------------------------------------------------
TEST11                                                               50          1         49 2%
SYSAUX                                                             2048    851.375   1196.625 42%
UNDOTBS1                                                           2048    12.6875  2035.3125 1%
USERS                                                              1024          1       1023 0%
SYSTEM                                                             2048    689.625   1358.375 34%
UDB_SPACE                                                         40960   9286.125  31673.875 23%
UNDOTBS2                                                           2048    12.8125  2035.1875 1%
7 rows selected.  

  下面编写一个zabbix自动发现oracle表空间的脚本discovery_oracle_tablespace.sh
hmracdb1:~ # cat discovery_oracle_tablespace.sh
#!/bin/bash
#zabbix discovery oracle tablespace
table_spaces=(`cat /tmp/ora_tablespace.txt | sed -e "1,3d" -e "/^$/d" -e "/selected/d" | awk '{print $1}'`)
length=${#table_spaces[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i/dev/null;then
        echo 1
    else
        echo 0
    fi
}
case $CEHCK_TYPE in
    pre)
        usagepre ;;
    fre)
        available ;;
    check)
        check ;;
    *)
        echo -e "Usage: $0 [pre|fre|check] [TABLESPACE_NAME]"
esac  

  确认脚本输出的值为zabbix监控所取的数值
hmracdb1:~ # ./tablespace_check.sh pre SYSTEM
34
hmracdb1:~ # ./tablespace_check.sh fre SYSTEM
1424359424hmracdb1:~ # ./tablespace_check.sh check SYSTEM
1  将脚本都保存到$ZABBIX_HOME/scpirts目录下,然后配置UserParameter参数,增加监控keykey名称分别为discovery.oracle.tablespace、tablespace.check,在以下配置文件末尾增加两行
hmracdb1:/opt/zabbix/scripts # vim ../etc/zabbix_agentd.conf.d/userparameter_script.conf
UserParameter=discovery.oracle.tablespace
  • ,/opt/zabbix/scripts/discovery_oracle_tablespace.sh
    UserParameter=tablespace.check
  • ,/opt/zabbix/scripts/tablespace_check.sh $1 $2  重启zabbix_ahgentd
      在zabbix服务端获取oracle表空间和监控数值
    [root@Zabbix_19F ~]# zabbix_get -p10050 -k 'tablespace.check[pre,SYSTEM]' -s 10.xxx.xxx.xxx
    34
    [root@Zabbix_19F ~]# zabbix_get -p10050 -k 'tablespace.check[fre,SYSTEM]' -s 10.xxx.xxx.xxx
    1424359424
    [root@Zabbix_19F ~]# zabbix_get -p10050 -k 'tablespace.check[check,SYSTEM]' -s 10.xxx.xxx.xxx
    1  

      

      Zabbix Web端配置
        新建oracle表空间模版My_Templates_Linux_Discovery_oracle_tablespace,添加自动发现规则,10分钟更新一次

      

      添加Item prototypes监控项目,第一个表空间使用率

      

      第二个表空间剩余容量


      

      第三个检查表空间是否开启自动扩展

      

      

      创建告警触发器
      首先创建检测表空间使用率是否大于95%的触发器


      

      

      创建检测是否开启自动扩展的触发器

      

      

      查看监控数据
      
      

      到这里,zabbix监控oracle表空间使用率就完成了

      





  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667141-1-1.html 上篇帖子: zabbix3.0.2 实现发送email报警的详细过程 下篇帖子: zabbix-----5-----自动发现的概念
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表