案例:檢查文件系統掛載狀態
1.1 自動發現文件系統名稱腳本
注意:將輸出結果轉換成JSON格式
vi Linux_mountfilename_discovery.sh
portarray=(`mount |grep "^/" |grep -E "ext3|reiserfs|ext4|xfs" |awk '{print $3}'`)
#portarray=(`netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#FILENAME}\":\"${portarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
1.1.1 執行結果:
1.2 檢查掛載狀態腳本
vim Linux_mountfilename_status.sh
filename=$1
#判斷是否為空
if [ "$1" == "" ]; then
echo "1"
else
#判斷是否執行命令成功
null1=`df $1 |sed -n 2p |awk '{print $NF}' /dev/null 2>&1;echo $?`
if [ $null1 -eq 0 ]; then
#判斷掛載的文件系統是否異常
mount1=`echo $1`
df1=`df $1 |sed -n 2p |awk '{print $NF}'`
if [ $mount1 = $df1 ]; then
echo "0"
else
echo "2"
fi
else
echo "1"
fi
fi
1.2.1 執行結果:
1.3 配置agent子配置文件
vim Linux_mount.conf
UserParameter=linux.mountfilename.discovery,/etc/zabbix/scripts/Linux_mountfilename_discovery.sh
UserParameter=linux.mountfilename.status[*],/etc/zabbix/scripts/Linux_mountfilename_status.sh $1
1.4 重啟agent服務
略
1.5 配置自動發現規則
1.6 創建監控項原型
1.7 創建觸發器
1.8 注意事項:
- 鍵值:linux.mountfilename.status[{#FILENAME}]。{#FILENAME}的調用
- UserParameter=鍵值[*](腳本參數的調用)