天天看點

利用 msmtp+mutt+shell來實作郵件告警

場景:

需要對redis keys值進行監控,利用crond周期執行監控腳本。如有異常,通過郵件告知。

一、安裝msmtp

下載下傳軟體

wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2

tar -jxvf msmtp-1.4.32.tar.bz2

cd msmtp-1.4.32

./configure --prefix=/usr/local/msmtp

make && make install

修改配置

cd /usr/local/msmtp/ 

mkdir etc #配置檔案目錄和配置檔案都要自己建 

cd etc

vim msmtprc #手動建立配置檔案 

account default 

host smtp.163.com #你的發送郵件伺服器 

port 25 

from [email protected] #要從哪個郵箱發出 

auth login  

tls off 

user [email protected] #郵箱使用者名 

password  123456  #郵箱密碼,這裡可是明文的,如果你覺得不安全可以把檔案改為600屬性 

(chmod  600  /etc/msmtprc)

account default : admin

logfile /data/log/msmtp.log

二、安裝mutt

直接yum install mutt

vim /etc/Muttrc

source /etc/Muttrc.local

set sendmail="/usr/local/msmtp/bin/msmtp"

set use_from=yes

set envelope_from=yes

set realname="redis keys monitor"

set [email protected]

測試:

echo "test" |mutt -s "my_first_mail" [email protected]

附加附件發送郵件

echo "test" |mutt -s "my_first_mail" [email protected] < /tmp/redis.txt 

###############

腳本解釋

通過crond周期查詢redis keys值,當redis的keys不被消費時就會發出告警郵件。

*/5 * * * * /bin/sh /tmp/redismonitor.sh

腳本執行個體:

#!/bin/bash

suffix=$(date +%Y-%m-%d -d "today")

redis-cli -h 192.168.36.1 -p 6379 llen bgm_info > /data/tmp/keys_$suffix.txt

result= cat /data/tmp/keys_$suffix.txt

if [[ 0 -eq $result ]] #當keys值等于0的時候不做任何操作,不等于零則發送告警郵件。

then

echo "nothing to do" >/dev/null 2>&1

else

     subject='redis監控預警!'

     to="[email protected]"

     echo "redis keys monitor" | mutt $to -s $subject -e 'set content_type="text/txt"'  < /tmp/keys_$suffix.txt

fi

exit 0

IF判斷語句小記:

-eq:等于

-ne:不等于

-le:小于等于

-ge:大于等于

-lt:小于

-gt:大于

note:1、郵件告警在生産環境中還是比較常用的,可利用sql進行表格拆分發送郵件。

      2、利用python xlwt子產品生成excel,及python腳本發送郵件告警

      本文轉自衛莊的痛 51CTO部落格,原文連結:http://blog.51cto.com/crfsz/1892394,如需轉載請自行聯系原作者

繼續閱讀