一:因业务需要部署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级别、正常以及故障磁盘数量的监控截图;
閱讀更多 愛踢人生 的文章