1.  在被监控端创建脚本,此脚本用于获取表空间及空间使用信息,此脚本由oracle用户下创建

vim mornitor_tbs.sh


#!/bin/bash
source /home/oracle/.bash_profile
sqlplus -s zabbix/zabbix > /tmp/tablespace.log< 
  

2. 利用脚本(oracle_discovery.sh)对取出数据文件(tablespace.log)进行格式化(因为zabbix自动发现数据类型是jason类型),取出Name那一列,后面配置zabbix自动发现用于自定义宏获取表空间名称

vim ora_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 '{"{#TBSNAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}

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

vim 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. zabbixagent配置文件添加自定义监控key

vim /etc/zabbix/zabbix_agentd.d/userparameter_oracle.conf

    UserParameter=ora.tbs.discovery,/etc/zabbix/zabbix_agentd.d/oracle_discovery.sh

    UserParameter=tablespace[*],/etc/zabbix/zabbix_agentd.d/oracle_check.sh $1 $2


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


*/10 * * * * /app/scripts/monitor_tbs.sh > /app/scripts/monitor_tbs.log


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

Configuration-> Template->Template_Oracle->Discovery Rules-> Create Discovery Rule


创建Item prototypes

Name :{#TBSNAME} Autopercent

Key :tablespace[{#TBSNAME},autopercent]