1. 程式人生 > >七十二、告警系統郵件引擎、運行告警系統

七十二、告警系統郵件引擎、運行告警系統

span sbin 項目 bold 目的 一個 Coding smt mtp

七十二、告警系統郵件引擎、運行告警系統

一、告警系統郵件引擎

mail.sh內容 //其中mail.py內容到這裏下載https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

郵件要有一個mail.py,之前用到過:

[root@MRX shares]# cp /usr/lib/zabbix/alertscripts/mail.py ../mail/mail.py

mail.py的內容不需關註,

gserver = 'smtp.163.com' //發郵件的服務器域名

mail.sh內容 路徑:/usr/local/sbin/mon/mail/mail.sh

log=$1

t_s=`date +%s`

t_s2=`date -d "2 hours ago" +%s` #這兩個t_s是時間戳,時間戳和兩小時前的時間戳

if [ ! -f /tmp/$log ] #運行監控腳本時就會生成監控日誌,日誌名字是ip地址下劃線+監控項目

then

echo $t_s2 > /tmp/$log #判斷日誌是否存在,不存在就記錄兩小時前的時間戳的日誌

fi

t_s2=`tail -1 /tmp/$log|awk '{print $1}'`

echo $t_s>>/tmp/$log

v=$[$t_s-$t_s2] #兩個時間戳的比值差,通過上一次告警和這一次告警的時間戳比值來計算, 然後決定是否告警。

echo $v

if [ $v -gt 3600 ] #如果大於3600秒了,就告警。

then

./mail.py $1 $2 $3 #大於3600,直接執行mail.py告警。

echo "0" > /tmp/$log.txt #在前面日誌名字的基礎上加一個.txt,叫計數器的文件。

else

if [ ! -f /tmp/$log.txt ] #反之,如果小於3600,判斷,如果這個計數器文件不存在。

then

echo "0" > /tmp/$log.txt #然後echo 0到計數器文件。

fi

nu=`cat /tmp/$log.txt` #定義新變量,查看計數器裏的數字,如果計數器文件不存在,nu就等於0了

nu2=$[$nu+1] #原變量基礎上+1。

echo $nu2>/tmp/$log.txt

if [ $nu2 -gt 10 ] #當變量大於10以後,才告警。就是告警到第10分鐘了,這個變量+1=11,就開始告警了,發完郵件,文件又清空了,又從頭再來。持續十分鐘,十分鐘後繼續發郵件。

then

./mail.py $1 "trouble continue 10 min $2" "$3"

echo "0" > /tmp/$log.txt #告警完後,重新計數,又變為0

fi

fi


場景:監控502,告警了兩分鐘,第三分鐘好了,業務恢復時間持續了一個小時(3600s),超過一個小時以後又發現了異常,這時候就會直接發一封郵件,因為大於3600了,然後清空計數器。10分鐘以內連續發告警,然後就去收斂,哪怕10分鐘以內不連續告警,每隔一兩分鐘都需要去收斂。

核心:周期,十分鐘。

3600秒為一個周期;計數器,10分鐘計數,連續十分鐘,就告警,十分鐘以內,就不告警。

mail.sh的目的是為了做告警收斂

歸納:

場景一:沒有超過一小時,不告警。

場景二:超過一小時,告警。

場景三:連續告警十分鐘,就發郵件,要麽就是不到十分鐘正常了一小時又不正常了,就直接告警發郵件。


二、運行告警系統

總結:

執行告警系統:每分鐘一次

# crontab -e

* * * * * cd /usr/local/sbin/mon/bin; bash main.sh

加入這一條,不然沒有辦法正常的執行成功。

# sh -x main.sh 可以執行這條看過程。

502的腳本如果不能執行的話,可以不監控,在mon.conf裏面講502開關關閉:to_mon_502=1,改為0。

在調試時,將main.sh中的這一步先註釋掉:

exec 1>>../log/mon.log 2>>../log/err.log

先不將日誌寫進去。

mail.py發送文件的內容:

/bin/bash ../mail/mail.sh [email protected] "$addr\_load:$load" `cat ../log/load.tmp`

把文件的內容作為第三個參數。


七十二、告警系統郵件引擎、運行告警系統