ITPub博客

首页 > Linux操作系统 > Linux操作系统 > zabbix 利用自定义键值监控(自动发现)表空间

zabbix 利用自定义键值监控(自动发现)表空间

Linux操作系统 作者:流浪的野狼 时间:2016-12-27 18:36:30 0 删除 编辑
<p> 之前通过orabbix可以监控oracle很多对象,具体可以参考: </p> <p> http://blog.itpub.net/24486203/viewspace-1788791/ </p> <p> 1.在被监控端创建脚本,此脚本用于获取表空间及空间使用信息,此脚本由oracle用户下创建(这里我将system及sysaux 监控去除掉了).这个zabbix用户为之前orabbix所创建用户 </p> <p> [root@ scripts]# cat oracle_cron.sh </p> <p> #!/bin/bash </p> <p> source /home/oracle/.bash_profile </p> <p> sqlplus -s zabbix/zabbix &gt; /tmp/tablespace.log&lt;&lt;EOF </p> <p> set linesize 140 pagesize 10000 </p> <p> col "Status" for a10 </p> <p> col "Name" for a25 </p> <p> col "Type" for a10 </p> <p> col "Extent" for a15 </p> <p> SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent", </p> <p> NVL(a.bytes, 0) "Size (M)", </p> <p> NVL(a.bytes - NVL(f.bytes, 0), 0) "Used (M)", </p> <p> round(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0),2) "Used %" </p> <p> FROM sys.dba_tablespaces d, </p> <p> (select tablespace_name, sum(bytes) bytes from dba_data_files </p> <p> group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f WHERE </p> <p> d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) AND d.tablespace_name not in ('SYSAUX','SYSTEM') AND NOT </p> <p> (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY') </p> <p> UNION ALL </p> <p> SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent", </p> <p> NVL(a.bytes, 0) "Size (M)", </p> <p> NVL(t.bytes,0) "Used (M)", </p> <p> round(NVL(t.bytes / a.bytes * 100, 0),2) "Used %" FROM sys.dba_tablespaces d, </p> <p> (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select </p> <p> tablespace_name, sum(bytes_cached) bytes from v\$temp_extent_pool group by tablespace_name) t WHERE </p> <p> d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND </p> <p> d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY' </p> <p> ORDER BY 7; </p> <p> EOF </p> <p> sed -i '$d' /tmp/tablespace.log </p> <p> sed -i '$d' /tmp/tablespace.log </p> <p> sed -i 's/,//g' /tmp/tablespace.log </p> <p> 手动运行脚本结果如下 </p> <p> [oracle@ scripts]$ cat /tmp/tablespace.log </p> <p> Status Name Type Extent Size (M) Used (M) Used % </p> <p> ---------- ------------------------- ---------- --------------- ---------- ---------- ---------- </p> <p> ONLINE USERS PERMANENT LOCAL 1073741824 11272192 1.05 </p> <p> ONLINE TEMP TEMPORARY LOCAL 4294967296 97517568 2.27 </p> <p> ONLINE UNDOTBS1 UNDO LOCAL 4294967296 1579155456 </p> <p> 33.46 </p> <p> 2.利用脚本(oracle_discovery.sh)对取出数据文件(tablespace.log)进行格式化(因为zabbix自动发现数据类型是jason类型),取出Name那一列. </p> <p> [root@ ~]# cat /etc/zabbix/scripts/oracle_discovery.sh </p> <p> #!/bin/bash </p> <p> TABLESPACE=`cat /tmp/tablespace.log |awk '{print$2}'|awk 'NR&gt;3{print}'` </p> <p> COUNT=`echo "$TABLESPACE" |wc -l` </p> <p> INDEX=0 </p> <p> echo '{"data":[' </p> <p> echo "$TABLESPACE" | while read LINE; do </p> <p> echo -n '{"{#TABLENAME}":"'$LINE'"}' </p> <p> INDEX=`expr $INDEX + 1` </p> <p> if [ $INDEX -lt $COUNT ]; then </p> <p> echo ',' </p> <p> fi </p> <p> done </p> <p> echo ']}' </p> <p> 3.利用脚本(oracle_check.sh)获取数据文件(tablespace.log)后三列 </p> <p> [root@ scripts]# cat oracle_check.sh </p> <p> #!/bin/bash </p> <p> EQ_DATA="$2" </p> <p> ZBX_REQ_DATA_TAB="$1" </p> <p> SOURCE_DATA=/tmp/tablespace.log </p> <p> case $2 in </p> <p> maxmb) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $5}';; </p> <p> used) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $6}';; </p> <p> autopercent) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $7}';; </p> <p> *) echo $ERROR_WRONG_PARAM; exit 1;; </p> <p> esac </p> <p> exit 0 </p> <p> 4.设置脚本权限(oracle_check.sh,oracle_discovery.sh) </p> <p> chmod o+x oracle_check.sh </p> <p> chmod o+x oracle_discovery.sh </p> <p> 取值测试 </p> <p> cd /etc/zabbix/scripts/ </p> <p> [root@ scripts]# ./oracle_check.sh USERS maxmb </p> <p> 1073741824 </p> <p> [root@ scripts]# ./oracle_check.sh USERS used </p> <p> 11272192 </p> <p> [root@ scripts]# ./oracle_check.sh USERS autopercent </p> <p> 1.05 </p> <p> 5.zabbixagent配置文件添加自定义监控key </p> <p> echo "UserParameter=ora.tab.discovery,/etc/zabbix/scripts/oracle_discovery.sh"&gt;&gt;/etc/zabbix/zabbix_agentd.conf </p> <p> echo 'UserParameter=tablespace[*],/etc/zabbix/scripts/oracle_check.sh $1 $2'&gt;&gt;/etc/zabbix/zabbix_agentd.conf </p> <p> 6.配置计划任务,重启zabbix_agentd服务 </p> <p> */1 * * * * /u01/scripts/oracle_cron.sh &gt; /u01/scripts/oracle_cron.sh.log 2&gt;&amp;1 </p> <p> /etc/init.d/zabbix_agentd restart </p> <p> 7.在zabbix_server端添加discovery模板,之前安装过orabbix,直接在Template_Oracle下添加discovery rule </p> <p> 点击create discovery rule,填写值如下 </p> <p> · Name: <a href="http://192.168.1.25/zabbix/host_discovery.php?form=update&amp;itemid=25638&amp;sid=15f8462c977981cb">tablespacediscovery</a> </p> <p> Type:Zabbix agent </p> <p> Key:ora.tab.discovery (这个自定义键值名称) </p> <p> UserParameter=ora.tab.discovery,/etc/zabbix/scripts/oracle_discovery.sh </p> <p> <img src="/attachment/201509/14/24486203_144221552626zO.jpg" width="700" height="329.20203735144" alt="" /> </p> <p> 在tablespacediscovery创建三个Item prototypes如下 </p> <p> Name:{#TABLENAME}autopercent </p> <p> Type:zabbix agent </p> <p> Key:tablespace[{#TABLESPACENAME},autopercent] </p> <p> <img src="/attachment/201509/14/24486203_1442215565QMMg.jpg" width="700" height="384.36606291706" alt="" /> </p> <p> Name:{#TABLENAME}maxmb </p> <p> Key:tablespace{#TABLENAME,maxmb} </p> <p> <img src="/attachment/201509/14/24486203_144221562011NC.jpg" width="700" height="328.87438825449" alt="" /> </p> <p> Name:{#TABLENAME}used </p> <p> Key: tablespace{#TABLENAME,used} </p> <p> <img src="/attachment/201509/14/24486203_14422155859m3X.jpg" width="700" height="349.70857618651" alt="" style="white-space:normal;" /> </p> <p> 定义Graph prototypes,注意添加的时候选择Add prototype </p> <p> Name: TABLESPACE-{#TABLENAME} </p> <p> <img src="/attachment/201509/14/24486203_1442215758cCxa.jpg" width="700" height="304.32345876701" alt="" /> </p> <p> 建立触发器(表空间使用比例达%95报警) </p> <p> Name: TableSpace {#TABLENAME} alarm </p> <p> Expression: </p> <p> {Template_Oracle:tablespace[{#TABLENAME},autopercent].last()}&gt;95 </p> <p> <img src="/attachment/201509/14/24486203_1442215982Czdv.jpg" width="700" height="289.63562753036" alt="" /> </p> <p> 最后我们看一下效果图 </p> <p> <img src="/attachment/201509/14/24486203_1442216003XSsI.png" width="700" height="276.12275449102" alt="" /> </p>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28612416/viewspace-2131480/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-04-10

  • 博文量
    151
  • 访问量
    1600477