一:因業務需要部署openstack,需要大量的物理機,每臺物理機磁盤數量不一,級別不一,另外對RAID狀態進行監控,當有磁盤故障導致RAID狀態異常的時候,可以通過zabbix監控第一時間通知運維人員進行磁盤更換,將數據損失降低到最少,使用shell編寫,只監控了幾個常見的內容,其他可以根據自己的需求進行添加:
1.1:腳本內容如下:
<code>[root@IDC-D-5856 ~]# cd /apps/zabbix_agent/etc/zabbix_agentd.conf.d/
[root@IDC-D-5856 zabbix_agentd.conf.d]# cat raid_check.sh
#!/bin/bash
#Date:20170125
#正常狀態的磁盤數量
normal_disk_num(){
NUM=`sudo /usr/bin/MegaCli64 -cfgdsply -aALL | grep "Online" | wc -l`
echo ${NUM}
}
#故障的磁盤數量
faild_disk_num(){
NUM=`sudo /usr/bin/MegaCli64 -AdpAllInfo -aALL | grep "Failed Disks" | awk '{print $4}'`
echo ${NUM}
}
#Riad 狀態是否正常
check_raid_status(){
NUM=`sudo /usr/bin/MegaCli64 -LDInfo -Lall -aALL | grep 'State' | awk -F':' '{print $2}'| sed -e "s/^[ ]*//"`
if test $NUM == "Optimal";then
echo 50
else
echo 100
fi
}
#獲取Riad 級別
raid_level(){
R1=`sudo /usr/bin/MegaCli64 -cfgdsply -aALL | grep "RAID Level" |awk -F: '{print $2}' | sed -e"s/^[ ]*//" | grep -c "Primary-1, Secondary-0, RAID Level Qualifier-0"`
R0=`sudo /usr/bin/MegaCli64 -cfgdsply -aALL | grep "RAID Level" |awk -F: '{print $2}' | sed -e"s/^[ ]*//" | grep -c "Primary-0, Secondary-0, RAID Level Qualifier-0"`
R5=`sudo /usr/bin/MegaCli64 -cfgdsply -aALL | grep "RAID Level" |awk -F: '{print $2}' | sed -e"s/^[ ]*//" | grep -c "Primary-5, Secondary-0, RAID Level Qualifier-3"`
R10=`sudo /usr/bin/MegaCli64 -cfgdsply -aALL | grep "RAID Level" |awk -F: '{print $2}' | sed -e"s/^[ ]*//" | grep -c "Primary-1, Secondary-3, RAID Level Qualifier-0"`
if [ $R1 -ge 2 ];then
echo 10
elif [ $R1 -eq 1 ];then
echo 1
fi
if [ $R0 -ne 0 ];then
echo 0
fi
if [ $R5 -ne 0 ];then
echo 5
fi
if [ $R10 -ne 0 ];then
echo 10
fi
}
main(){
case $1 in
raid_level)
raid_level;
;;
faild_disk_num)
faild_disk_num;
;;
check_raid_status)
check_raid_status;
;;
normal_disk_num)
normal_disk_num;
;;
esac
}
main $1/<code>
1.2:在zabbix添加腳本後的raid卡監控截圖:
1.3:在zabbix添加後的raid級別、正常以及故障磁盤數量的監控截圖;