[shell]監控Fastdfs的storage更新延遲報警

     最近線上遇到了悲催的事情:fastdfs的存儲服務器其中一塊磁盤壞了(存儲分區變成read only),但是zabbix監控沒有對此進行監控,結果致使客戶端上傳失敗。最後發如今2天前就變成只讀了。雖然數據存儲有冗餘的,影響不大,不過仍是很不爽,沒有及時發現問題。針對這個狀況,寫了個小腳本以實現storage更新延遲高於特定值(如2分鐘)就報警。
    經過fdfs_monitor來查看全部fastdfs的storage狀態信息,更新時間延遲等,思路是經過執行結果last_synced_timestamp的uptime時間值。對Active狀態及延遲時間進行監控。腳本以下:php

#!/bin/bash
#storage synchronous delay alarm scripts
# Richard shen 2012/07/11
# BLOG: http://lxsym.blog.51cto.com
Basedir=`dirname $0`
Now_time=`date +%s`
Active=$Basedir/active.txt
IP=$Basedir/ip.txt
Syn_time=$Basedir/syn_time.txt
COMMAND="/usr/local/webserver/fdfs/bin/fdfs_monitor /usr/local/webserver/fdfs/etc/client.conf"
$COMMAND | grep "(" | awk '/ip_addr/{print $5}' >$Active
$COMMAND | grep "(" | awk '/ip_addr/{print $3}' >$IP
$COMMAND | grep last_synced_timestamp | awk '{ print $3,$4}' >$Syn_time
paste $Syn_time $IP $Active > main.log
cat main.log | while read day time ip active
do
   sys_time=`date -d "$day $time" +%s`
   num=`expr $Now_time - $sys_time`
   #Stuts alarm
   if [ $active != "ACTIVE" ];then
        #郵件報警API,
       # echo "$ip State is $active,please check."
   fi
   #Set alarm time (eg 2m(120s))
   if [ $num -gt 120 ];then
         #郵件報警API, 如wget -q -O - "http://api.abc.com/sendMail.php?type=abcdG&to=郵件地址&subject=【Storage同步延遲報警:$ip延遲$num秒,請檢查~】&body=RT,請檢查,謝謝" > /dev/null
        # echo "$ip Update time delay $num (s)"
   fi 
done
rm -rf $Active $IP $Syn_time main.log

QQ交流羣:24967504 有問題/建議能夠聯繫我~web

相關文章
相關標籤/搜索