zabbix自動發現磁盤組空間

查詢磁盤組空間

[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
#自動發現磁盤組空間並保存爲json數據格式,{#TABLESPACE_NAME}爲傳遞給zabbix的json變量,dg_spaces爲表空間數據
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
# oracle dgspace check,定義兩個變量CEHCK_TYPE、DG_NAME,方便在zabbix腳本中調用,不同的CEHCK_TYPE調用不同的函數。zabbix自定義函數中,首先輸入$1通過case匹配不同的檢查類型,其次通過$2進行grep匹配
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 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_oracle_dgspace.conf 
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 ~]# killall zabbix_agentd
[root@monitordb1 ~]# zabbix_agentd 

server端測試item

[root@localhost ~]# zabbix_get -p10050 -k 'dgspace.check[freeper,DATA/]' -s 1.1.1.8

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}]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章