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

之前通过orabbix可以监控oracle很多对象,具体可以参考:

http://blog.itpub.net/24486203/viewspace-1788791/

1.在被监控端创建脚本,此脚本用于获取表空间及空间使用信息,此脚本由oracle用户下创建(这里我将system及sysaux 监控去除掉了).这个zabbix用户为之前orabbix所创建用户

[root@ scripts]# cat oracle_cron.sh

#!/bin/bash

source /home/oracle/.bash_profile

sqlplus -s zabbix/zabbix > /tmp/tablespace.log<<EOF

set linesize 140 pagesize 10000

col "Status" for a10

col "Name" for a25

col "Type" for a10

col "Extent" for a15

SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",

NVL(a.bytes, 0) "Size (M)",

NVL(a.bytes - NVL(f.bytes, 0), 0) "Used (M)",

round(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0),2) "Used %"

FROM sys.dba_tablespaces d,

(select tablespace_name, sum(bytes) bytes from dba_data_files

group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f WHERE

d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) AND d.tablespace_name not in ('SYSAUX','SYSTEM') AND NOT

(d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')

UNION ALL

SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",

NVL(a.bytes, 0) "Size (M)",

NVL(t.bytes,0) "Used (M)",

round(NVL(t.bytes / a.bytes * 100, 0),2) "Used %" FROM sys.dba_tablespaces d,

(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select

tablespace_name, sum(bytes_cached) bytes from v\$temp_extent_pool group by tablespace_name) t WHERE

d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND

d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY'

ORDER BY 7;

EOF

sed -i '$d' /tmp/tablespace.log

sed -i '$d' /tmp/tablespace.log

sed -i 's/,//g' /tmp/tablespace.log

手动运行脚本结果如下

[oracle@ scripts]$ cat /tmp/tablespace.log

Status Name Type Extent Size (M) Used (M) Used %

---------- ------------------------- ---------- --------------- ---------- ---------- ----------

ONLINE USERS PERMANENT LOCAL 1073741824 11272192 1.05

ONLINE TEMP TEMPORARY LOCAL 4294967296 97517568 2.27

ONLINE UNDOTBS1 UNDO LOCAL 4294967296 1579155456

33.46

2.利用脚本(oracle_discovery.sh)对取出数据文件(tablespace.log)进行格式化(因为zabbix自动发现数据类型是jason类型),取出Name那一列.

[root@ ~]# cat /etc/zabbix/scripts/oracle_discovery.sh

#!/bin/bash

TABLESPACE=`cat /tmp/tablespace.log |awk '{print$2}'|awk 'NR>3{print}'`

COUNT=`echo "$TABLESPACE" |wc -l`

INDEX=0

echo '{"data":['

echo "$TABLESPACE" | while read LINE; do

echo -n '{"{#TABLENAME}":"'$LINE'"}'

INDEX=`expr $INDEX + 1`

if [ $INDEX -lt $COUNT ]; then

echo ','

fi

done

echo ']}'

3.利用脚本(oracle_check.sh)获取数据文件(tablespace.log)后三列

[root@ scripts]# cat oracle_check.sh

#!/bin/bash

EQ_DATA="$2"

ZBX_REQ_DATA_TAB="$1"

SOURCE_DATA=/tmp/tablespace.log

case $2 in

maxmb) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $5}';;

used) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $6}';;

autopercent) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $7}';;

*) echo $ERROR_WRONG_PARAM; exit 1;;

esac

exit 0

4.设置脚本权限(oracle_check.sh,oracle_discovery.sh)

chmod o+x oracle_check.sh

chmod o+x oracle_discovery.sh

取值测试

cd /etc/zabbix/scripts/

[root@ scripts]# ./oracle_check.sh USERS maxmb

1073741824

[root@ scripts]# ./oracle_check.sh USERS used

11272192

[root@ scripts]# ./oracle_check.sh USERS autopercent

1.05

5.zabbixagent配置文件添加自定义监控key

echo "UserParameter=ora.tab.discovery,/etc/zabbix/scripts/oracle_discovery.sh">>/etc/zabbix/zabbix_agentd.conf

echo 'UserParameter=tablespace[*],/etc/zabbix/scripts/oracle_check.sh $1 $2'>>/etc/zabbix/zabbix_agentd.conf

6.配置计划任务,重启zabbix_agentd服务

*/1 * * * * /u01/scripts/oracle_cron.sh > /u01/scripts/oracle_cron.sh.log 2>&1

/etc/init.d/zabbix_agentd restart

7.在zabbix_server端添加discovery模板,之前安装过orabbix,直接在Template_Oracle下添加discovery rule

点击create discovery rule,填写值如下

· Name: tablespacediscovery

Type:Zabbix agent

Key:ora.tab.discovery (这个自定义键值名称)

UserParameter=ora.tab.discovery,/etc/zabbix/scripts/oracle_discovery.sh

在tablespacediscovery创建三个Item prototypes如下

Name:{#TABLENAME}autopercent

Type:zabbix agent

Key:tablespace[{#TABLESPACENAME},autopercent]

Name:{#TABLENAME}maxmb

Key:tablespace{#TABLENAME,maxmb}

Name:{#TABLENAME}used

Key: tablespace{#TABLENAME,used}

定义Graph prototypes,注意添加的时候选择Add prototype

Name: TABLESPACE-{#TABLENAME}

建立触发器(表空间使用比例达%95报警)

Name: TableSpace {#TABLENAME} alarm

Expression:

{Template_Oracle:tablespace[{#TABLENAME},autopercent].last()}>95

最后我们看一下效果图

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

转载于:http://blog.itpub.net/24486203/viewspace-1799156/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值