查詢磁盤組空間
[grid@monitordb1 scripts]$ cat /etc/zabbix/scripts/lsdg.sh
#!/bin/bash
PATH=$PATH :$HOME /bin
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2 .0 /grid
export ORACLE_TERM=xterm
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
export TNS_ADMIN=$ORACLE_HOME /network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME /bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME /lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME /JRE:$ORACLE_HOME /jlib:$ORACLE_HOME /rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
asmcmd lsdg > /tmp/lsdg.log
查詢結果
[grid@monitordb1 scripts]$ cat /tmp/lsdg.log
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 2332672 2117637 0 2117637 0 N DATA/
MOUNTED EXTERN N 512 4096 1048576 122880 113262 0 113262 0 N FLASH/
MOUNTED EXTERN N 512 4096 1048576 2048 1652 0 1652 0 Y ORC/
將查詢腳本寫入計劃任務,一分鐘執行一次
[grid@monitordb1 ~]$ crontab -l
* * * * * /etc/zabbix/scripts/lsdg.sh
編寫zabbix自動發現腳本
cat /etc/zabbix/scripts/discovery_oracle_dgspace.sh
#!/bin/bash
dg_spaces=(`cat /tmp/lsdg.log | sed -e "1d" -e "/^$/d" | awk '{print $13}' `)
length=${#dg_spaces[@]}
printf "{\n"
printf '\t' "\"data\":["
for ((i=0 ;i<$length ;i++))
do
printf "\n\t\t{"
printf "\"{#DG_NAME}\":\"${dg_spaces[$i]} \"}"
if [ $i -lt $[$length -1 ] ];then
printf ","
fi
done
printf "\n\t]\n"
printf "}\n"
輸出結果
{
"data" :[
{"{#DG_NAME}" :"DATA/" },
{"{#DG_NAME}" :"FLASH/" },
{"{#DG_NAME}" :"ORC/" }
]
}
編寫查詢磁盤組空間腳本
#!/bin/bash
CEHCK_TYPE=$1
DG_NAME=$2
function freeper {
grep "\b$DG_NAME " /tmp/lsdg.log | awk '{printf "%.f\n",($7-$8)/$7*100}'
}
function total {
grep "\b$DG_NAME " /tmp/lsdg.log | awk '{printf $7}'
}
function used {
grep "\b$DG_NAME " /tmp/lsdg.log | awk '{printf "%.f\n",$7-$8}'
}
case $CEHCK_TYPE in
freeper)
freeper ;;
total)
total ;;
used)
used ;;
*)
echo -e "Usage: $0 [freeper|total|used] [DG_NAME]"
esac
編寫zabbix自動發現及磁盤組空間查詢item
[root@monitordb1 ~]
UserParameter=discovery.oracle.dgspace[*],/etc/zabbix/scripts/discovery_oracle_dgspace.sh
UserParameter=dgspace.check[*],/etc/zabbix/scripts/dgspace_check.sh $1 $2
重啓agent
[root@monitordb1 ~]
[root@monitordb1 ~]
server端測試item
[root@localhost ~]
zabbix控制檯添加discovery發現規則及item
創建自動發現規則
主機——自動發現——創建自動發現規則
name: Oracle dgspace discovery
key: discovery.oracle .dgspace
數據類型:char
創建自動發現item
監控項原型(item)
自動發現磁盤組名稱
name: discovery.oracle .dgspace :[{#DG_NAME}]
key: discovery.oracle .dgspace :[{#DG_NAME}]
查看磁盤組總空間
name: dgspace.check [freeper,{#DG_NAME}]
key: dgspace.check [freeper,{#DG_NAME}]
查看磁盤組使用空間
name: dgspace.check [used,{#DG_NAME}]
key: dgspace.check [used,{#DG_NAME}]
查看磁盤組可用百分比
name: dgspace.check [freeper,{#DG_NAME}]
key: dgspace.check [freeper,{#DG_NAME}]