<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 > /tmp/tablespace.log<<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>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">>/etc/zabbix/zabbix_agentd.conf
</p>
<p>
echo 'UserParameter=tablespace[*],/etc/zabbix/scripts/oracle_check.sh $1
$2'>>/etc/zabbix/zabbix_agentd.conf
</p>
<p>
6.配置计划任务,重启zabbix_agentd服务
</p>
<p>
*/1 * * * * /u01/scripts/oracle_cron.sh > /u01/scripts/oracle_cron.sh.log
2>&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&itemid=25638&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()}>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/
,如需转载,请注明出处,否则将追究法律责任。