Zabbix 3.4.8 通過Discovery批量監控Oracle表空間
阿新 • • 發佈:2019-02-10
通過指令碼取得表空間的名字,並轉換成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,內容如下: