1. 程式人生 > >Zabbix 3.4.8 通過Discovery批量監控Oracle表空間

Zabbix 3.4.8 通過Discovery批量監控Oracle表空間

 通過指令碼取得表空間的名字,並轉換成json格式的(因為zabbix的自動發現功能獲取的資料型別是JSON格式的)。

    下面編寫一個zabbix自動發現oracle表空間的指令碼,我這裡的指令碼路徑是/etc/zabbix/scripts/discovery_oracle_tablespace.sh。

#!/bin/bash
#zabbix discovery oracle tablespace
table_spaces=(`cat /tmp/ora_tablespace.txt | sed -e "1,3d" -e "/^$/d" -e "/selected/d" | awk '{print $1}'`)
length=${#table_spaces[@]}
   
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
    printf "\n\t\t{"
    printf "\"{#TABLESPACE_NAME}\":\"${table_spaces[$i]}\"}"
    if [ $i -lt $[$length-1] ];then
        printf ","
    fi
done
    printf "\n\t]\n"
printf "}\n"

3、建立監控專案檢測指令碼tablespace_check.sh

用於zabbix獲取oracle表空間使用率、剩餘量和檢查是否開啟自動擴充套件。指令碼為/etc/zabbix/scripts/tablespace_check.sh,指令碼內容如下:
#!/bin/bash
# oracle tablespace check
CEHCK_TYPE=$1
TABLESPACE_NAME=$2
   
function usagepre {
    grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf "%.f\n",($2-$3)/$2*100}'
}
   
function available {
    grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf $3*1024*1024}'
}
   
function check {
    if grep "\b$TABLESPACE_NAME\b" /tmp/ora_autex.txt | awk '{print $2}' | uniq | grep "YES" &>/dev/null;then
        echo 1
    else
        echo 0
    fi
}
   
case $CEHCK_TYPE in
    pre)
        usagepre ;;
    fre)
        available ;;
    check)
        check ;;
    *)
        echo -e "Usage: $0 [pre|fre|check] [TABLESPACE_NAME]"
esac
給建立的指令碼新增執行許可權。
cd /etc/zabbix/scripts
chmod +x tablespace_check.sh 
chmod +x discovery_oracle_tablespace.sh

4、為Zabbix增加監控Key

在Zabbix客戶端配置檔案/etc/zabbix/zabbix_agentd.conf增加如下引數:
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
建立檔案/etc/zabbix/zabbix_agentd.conf.d/oracle_tablespace.conf,內容如下: