告警系统邮件引擎、运行告警系统
告警系統(tǒng)郵件引擎
創(chuàng)建發(fā)郵件的腳本——mail.py
[root@centos7 mon]# cat mail/mail.py
#!/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():br/>to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定義QQ郵箱的賬號(hào)和密碼,你需要修改成你自己的賬號(hào)和密碼(請(qǐng)不要把真實(shí)的用戶(hù)名和密碼放到網(wǎng)上
公開(kāi),否則你會(huì)死的很慘)
sendqqmail('jacker@163.com','12345','jacker@163.com',to,subject,content)
if?name?== "main":
main()
#####腳本使用說(shuō)明######
#1. 首先定義好腳本中的郵箱賬號(hào)和密碼
#2. 腳本執(zhí)行命令為:python mail.py 目標(biāo)郵箱 "郵件主題" "郵件內(nèi)容"
創(chuàng)建郵件引擎的配置文件
[root@centos7 mon]# vi mail/mail.sh
#本腳本用于做告警收斂
#這個(gè)在main.sh主函數(shù)中定義了$log
log=$1
t_s=date +%s
#時(shí)間戳1
t_s2=date -d "2 hours ago" +%s
#時(shí)間戳2(兩個(gè)小時(shí)之前的時(shí)間)
#定義該時(shí)間戳的目的是保證第一次執(zhí)行該腳本時(shí)v大于一小時(shí)
#保證第一次執(zhí)行的時(shí)候能報(bào)警
#因?yàn)橹挥邪l(fā)生故障的時(shí)候才會(huì)執(zhí)行該腳本,所以第一次執(zhí)行必須要報(bào)警
if [ ! -f /tmp/$log ]
then
echo $t_s2 > /tmp/$log
fi
#創(chuàng)建記錄時(shí)間戳的日志文件
t_s2=tail -1 /tmp/$log|awk '{print $1}'
echo $t_s>>/tmp/$log
v=$[$t_s-$t_s2]
#兩個(gè)時(shí)間戳的間隔時(shí)間
echo $v
#計(jì)時(shí)器:
if [ $v -gt 3600 ]
then
#如果時(shí)間間隔大于1小時(shí),則啟動(dòng)報(bào)警系統(tǒng)
./mail.py $1 $2 $3
echo "0" > /tmp/$log.txt
#$log.txt為計(jì)數(shù)器文件:
else
if [ ! -f /tmp/$log.txt ]
then
echo "0" > /tmp/$log.txt
fi
#查看計(jì)數(shù)器文件中的數(shù)字
nu=cat /tmp/$log.txt
nu2=$[$nu+1]
echo $nu2>/tmp/$log.txt
#重置$log.txt數(shù)值
if [ $nu2 -gt 10 ]
then
#告警收斂:該故障持續(xù)十分鐘,開(kāi)始報(bào)警
./mail.py $1 "trouble continue 10 min $2" "$3"
echo "0" > /tmp/$log.txt
#告警結(jié)束后重新開(kāi)始計(jì)數(shù)
fi
fi
運(yùn)行告警系統(tǒng)
[root@centos7 mon]# crontab -e
#每分鐘執(zhí)行一次
- cd /data/shell/sbin/mon/bin; bash main.sh
本文轉(zhuǎn)自方向?qū)α?#xff0c;就不怕路遠(yuǎn)了!51CTO博客,原文鏈接: http://blog.51cto.com/jacksoner/2045979,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的告警系统邮件引擎、运行告警系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SDL历程--课程设计之画图
- 下一篇: php 发送http请求