告警系統郵件引擎、運行告警系統

                告警系統郵件引擎

首先在、創建、/usr/local/sbin/mon/mail

mail.sh內容

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

QQ圖片20180605230442.png

Python腳本內容


#!/usr/bin/env python

#-*- coding: UTF-8 -*-

import os,sys

reload(sys)

sys.setdefaultencoding('utf8')

import getopt

import smtplib

from email.MIMEText import MIMEText

from email.MIMEMultipart import MIMEMultipart

from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):


    gserver = 'smtp.163.com'

    gport = 25

    try:

        msg = MIMEText(unicode(content).encode('utf-8'))

        msg['from'] = mailfrom

        msg['to'] = mailto

        msg['Reply-To'] = mailfrom

        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)

        smtp.set_debuglevel(0)

        smtp.ehlo()

        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())

        smtp.close()

    except Exception,err:

        print "Send mail failed. Error: %s" % err

def main():

    to=sys.argv[1]

    subject=sys.argv[2]

    content=sys.argv[3]


    sendqqmail('[email protected]','740183413abc','[email protected]',to,subject,content)

if __name__ == "__main__":

    main()


2.在/usr/local/sbin/mon/mail/mail.sh 創建郵件腳本

vim /usr/local/sbin/mon/mail/mail.sh

腳本內容:

#!/bin/bash

 log=$1

t_s=`date +%s`

t_s2=`date -d "2 hours ago" +%s`    //獲得一個兩小時前的時間戳

if [ ! -f /tmp/$log ]           //判斷是否有一個日誌

then

    echo $t_s2 > /tmp/$log

fi

t_s2=`tail -1 /tmp/$log|awk '{print $1}'`    //將日誌中最後一行的第一段賦值給t_s2

echo $t_s>>/tmp/$log

v=$[$t_s-$t_s2]       //計時器

echo $v

if [ $v -gt 3600 ]    //判斷時間差值是否超過一個小時,然後發送告警

then

    ./mail.py  $1  $2  $3

    echo "0" > /tmp/$log.txt

else

    if [ ! -f /tmp/$log.txt ]

    then

        echo "0" > /tmp/$log.txt

    fi

    nu=`cat /tmp/$log.txt`

    nu2=$[$nu+1]

    echo $nu2>/tmp/$log.txt

    if [ $nu2 -gt 10 ]

    then

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

         echo "0" > /tmp/$log.txt

    fi

fi  

腳本中最重要的就是第一次告警中的時間戳和之後進行計時每十分鐘進行 問題檢測,如果問題還是在則繼續發郵件


主要邏輯是,當告警從未出現時發送第一次郵件告警。發送了第一次告警後每十分鐘內

查看告警是否恢復,不恢復繼續發送郵件

image.png郵件的內容用$1、$2、$3表示。具體內容在

子腳本監控項中定義

3.執行告警系統:

寫到 執行任務中:每分鐘執行

crontab -e

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



測試腳本的時候先把配置文件的監控502=1改爲0







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章