设为首页 收藏本站
查看: 993|回复: 0

nagios 监控硬盘RAID

[复制链接]

尚未签到

发表于 2019-1-13 15:04:59 | 显示全部楼层 |阅读模式
背景:由于线上服务器硬盘故障,导致服务,数据失效;

  
目的:保证第一时间发现硬盘信息是否正常;

  
方案:使用Nagios 自定义脚本来监控硬盘状态;

  

注意:下面脚本只提供已经安装hpacucli megacli 软件使用;

#!/bin/bash
#Marc.wang 2014/06/17

export PATH=$PATH:/usr/sbin/:/sbin/:/usr/bin/
Get_localhost_Hostname=`hostname -I |awk '{print $1}'`
Nagios="nagios.org"
SERVER_TYPE=$(/usr/sbin/dmidecode  | grep "Vendor" | awk  -F\: 'NR==1{print $2}'|awk '{print $1}')


#The nagios command run nsca
Send_nsca_ssl_message (){

/usr/local/nagios/bin/send_nsca  -H ${Nagios} -d ";" -c /usr/local/nagios/etc/send_nsca.cfg
}

#hp command run
HP_DISK_STATUS_COMMAND() {
rpm  -qa |grep  hpacucli >> /dev/null 2>&1
echo $?
}
# dell command run
DELL_IBM_DISK_STATUS_COMMAND() {
rpm -qa |grep MegaCli >> /dev/null 2>&1
echo $?
}

bug_test=$(ps ax |grep hpacucli |grep -v grep |wc -l)
if [ "${bug_test}" != "0" ]
then
        echo "$Get_localhost_Hostname;check_raid;2; hpacucli command run not data." | Send_nsca_ssl_message
        exit 2
fi

CHECK_RAID_STATUS_HP () {  
/usr/sbin/hpacucli  ctrl all show config detail |grep physicaldrive  -A 4 |sed 's/ //g'|grep "Status:"  |grep -v  "Status:OK" | wc -l
}


case $SERVER_TYPE in
HP|hp|Hp|Hewlett-Packard)
TEST_HP_COMMAND () {
hpacucli  ctrl all show config detail >> /dev/null 2>&1
echo $?
}
HP_RPM=$(HP_DISK_STATUS_COMMAND)
sleep 3

if  [ ${HP_RPM}  != "0" ]

    then
    echo "$Get_localhost_Hostname;check_raid;2; $SERVER_TYPE  command hpacucli Not Found" | Send_nsca_ssl_message
    exit 2
elif [[ ${HP_RPM}  == "0"  ]];
    then
    HP_RAID_STATUS_NUMBER=$(CHECK_RAID_STATUS_HP)
    sleep 3
    TEST_HP=$(TEST_HP_COMMAND)
    if [ "$HP_RAID_STATUS_NUMBER" == "0" ] && [ "$TEST_HP"   == "0" ];
        then
        echo "$Get_localhost_Hostname;check_raid;0;Check_Raid_status:OK" | Send_nsca_ssl_message
        exit 0
    elif [ "${TEST_HP}" != "0" ]
         then
          echo "$Get_localhost_Hostname;check_raid;2;Check_Raid_status: run command hpacucli Error" | Send_nsca_ssl_message
          exit 2
    elif  [ "$HP_RAID_STATUS_NUMBER" != "0"  ] && [ "$TEST_HP" == "0" ]
          then
           echo "$Get_localhost_Hostname;check_raid;2;Check_Raid_status:Critical" | Send_nsca_ssl_message
           exit 2
    fi
  fi
    ;;
DELL|Dell|DEll|DeLL|dell|IBM|ibm|Ibm|IBm)
if [  -f "/opt/MegaRAID/MegaCli/MegaCli64" ];
        then

CHECK_RAID_STATUS_IBM_DELL () {
/opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -a0  |  grep -E "(Media Error Count:|Other Error Count:)"  |awk -F: '{sum1 += $2} END {print sum1}'
}
TEST_DELL_COMMAND (){
/opt/MegaRAID/MegaCli/MegaCli64 -LdPdInfo -a0  >> /dev/null
  echo $?
}
else
CHECK_RAID_STATUS_IBM_DELL () {
MegaCli -LdPdInfo -a0  |  grep -E "(Media Error Count:|Other Error Count:)"  |awk -F: '{sum1 += $2} END {print sum1}'
}
TEST_DELL_COMMAND (){
MegaCli -LdPdInfo -a0  >> /dev/null
  echo $?
}
fi

IBM_DELL_RPM=$(DELL_IBM_DISK_STATUS_COMMAND)
if  [[ ${IBM_DELL_RPM}  ==  "0" ]]
    then
     TEST_OTHER_COMMAND=$(TEST_DELL_COMMAND)
     DELL_IBM_STATUS_NUMBER=$(CHECK_RAID_STATUS_IBM_DELL)
      if [[  -z "$DELL_IBM_STATUS_NUMBER" ]]
              then
            echo "$Get_localhost_Hostname;check_raid;2;Check_Raid_status:MegaCli Command  Not Found!" | Send_nsca_ssl_message
            exit 2
      elif [[ "$DELL_IBM_STATUS_NUMBER" -gt "2000" ]] ;
              then
            echo "$Get_localhost_Hostname;check_raid;2;Check_Raid_status:Critical" | Send_nsca_ssl_message
            exit 2

        elif  [[  "$DELL_IBM_STATUS_NUMBER"  -lt  "2000" ]] && [[ "$TEST_OTHER_COMMAND" == "0" ]]
              then
              echo "$Get_localhost_Hostname;check_raid;0;Check_Raid_status:OK" | Send_nsca_ssl_message
              exit 0
        fi  
fi
;;
*)
  echo "$Get_localhost_Hostname;check_raid;2;This machine is not IBM DELL or HP!" | Send_nsca_ssl_message
  ;;
esac  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-662839-1-1.html 上篇帖子: Nagios性能分析图表的实现 下篇帖子: Nagios监控(linux)网卡流量
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表