ORACLE数据库ASM数据组监控
思路:使用oracle用户执行sql,将sql执行结果存在某个文件中,然后通过脚本筛选该文件,定义键值,创建模板
1、 使用root用户在/etc/zabbix下创建asm-monitor.txt文件
2、 修改该文件的权限为666(使oracle用户有权限写入)
3、 切换至oracle用户下,创建zabbix/asm-monitor目录
4、 在zabbix/asm-monitor下创建asm-monitor.sql
set heading on
set lines 300 pages 999
col usage for 999.00 head 'USAGE(%)'
select group_number,name,state,total_mb,free_mb,trunc((total_mb-free_mb)/total_mb*100,2) usage from v$asm_diskgroup;
5、 在zabbix/asm-monitor下创建asm-monitor.sh
#!/bin/bash
source ~/.bash_profile
function check {
sqlplus -S "/ as sysdba" << EOF
set linesize 200
set pagesize 200
spool /etc/zabbix/asm-monitor/asm-monitor.txt
@/home/oracle/zabbix/asm-monitor/asm-monitor.sql
spool off
quit
EOF
};check &>/dev/null
AIX系统环境变量(export部分把/home/oracle/.profile下粘贴过来就可以)
例:
#!/usr/bin/sh
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.
export PATH
export AIXTHREAD_SCOPE=S
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=xiandb
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/dbhome_1
export GI_HOME=/u01/app/11.2.0.3/grid
export NLS_LANG=American_America.ZHS16GBK
export TMP=/tmp
export TMPDIR=/tmp
export ORACLE_TERM=vt100
export OPATCH_PLATFORM_ID=212
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:/usr/java8_64/jre/bin:/usr/java8_64/bin
sqlplus -S / as sysdba <<EOF >/dev/null 2>&1
set linesize 200
set pagesize 200
spool /etc/zabbix/asm-monitor/asm-monitor.txt
@/home/oracle/zabbix/asm-monitor/asm-monitor.sql
spool off
quit
EOF
6、 在oracle用户下创建计划任务(计划任务根据自己的需求定义)
crontab -e
#ASM monitor
15 * * * * sh /home/oracle/zabbix/asm-monitor/asm-monitor.sh
7、切换至root下,在/etc/zabbix/asm-monitor下创建获取名称的脚本
vi asm-monitor.sh
#!/bin/bash
linenum=`cat /etc/zabbix/asm-monitor/asm-monitor.txt|wc -l`
i=4
printf "{\n"
printf '\t'"\"data\":["
tail -n +4 /etc/zabbix/asm-monitor/asm-monitor.txt | grep -v "^$" | while read line
do
line_4=`echo $line|awk '{print $2}'`
printf '\n\t\t{'
printf "\"{#NAME}\":\"${line_4}\"}"
let "i=$i+1"
if [ "$i" -lt "$linenum" ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
8、切换至root下,在/etc/zabbix/asm-monitor下创建获取数据的脚本
vi asm-check.sh
#!/usr/bin/sh
CEHCK_TYPE=$1
NAME=$2
function_total () {
grep "$NAME" /etc/zabbix/asm-monitor/asm-monitor.txt |awk '{printf $4}'
}
function_usage () {
grep "$NAME" /etc/zabbix/asm-monitor/asm-monitor.txt | awk '{printf $6}'
}
function_free () {
grep "$NAME" /etc/zabbix/asm-monitor/asm-monitor.txt | awk '{printf $5}'
}
case $CEHCK_TYPE in
total)
function_total
;;
usage)
function_usage
;;
free)
function_free
;;
*)
echo -e "Usage: $0 [total|usage|free] [NAME]"
esac
9、 切换至root下,在/etc/Zabbix/Zabbix-agent2.d下创建conf文件
cat userparameter_asm.conf
UserParameter=asm.monitor[*],sh /etc/zabbix/asm-monitor/asm-monitor.sh
UserParameter=asm.check[*],sh /etc/zabbix/asm-monitor/asm-check.sh $1 $2
10、 创建模板
新建一个模板 Template asm monitor
创建自动发现规则
创建监控项原型(ASM磁盘组可使用空间大小、ASM磁盘组使用率、ASM磁盘组总空间大小)
{#NAME}是上边8步脚本中定义的变量,可以引入名称中
监控项原型可定义标记(zabbix6.0版本中是标记,类似于旧版本的应用集,方便在监控项中根据标记快速找到)
创建触发器类型(阈值可根据自己需求调整)