python监听邮件,python实现监控报警
本文主要介绍python监控日志中错误报告和邮件报警的一个实例。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010前言实施思路实施代码
目录
在测试的过程中,经常要注意功能。功能正常的话,基本上查不到日志,反之会查日志定位问题。但是表面上正常的功能并不能保证日志没有错误,其他功能点也没有问题。这时候就需要监控日志,一旦有错误就会触发报警机制(报警机制可以包括邮件报警、钉钉微信消息报警等。).我的选择是发邮件报警。
前言
1.测试过程中,日志不断被刷,时不时的监控太难了。
2.换个思路,每分钟扫描一次日志,发现错误就报警。
A.获取当前时间前一分钟的日志,将所有日志写入一个文件,每次写入前会清空该文件。b .获取前一分钟的文件时,方法是获取前一分钟日志第一行的行号和最后一行的行号,然后将这两个行号之间的内容全部输出到一个文件中(这样做的好处是与直接按照时间过滤相比会包含错误内容,因为java日志中错误信息的crond中没有时间,按照时间过滤会遗漏错误信息。)c .会在前一分钟的日志中进行java关键字错误过滤,将错误信息的前20行和后20行内容(具体行数视实际情况而定)输出到另一个文件中。d .发送邮件前,判断上一步生成的文件大小。如果大于0(表示错误),则触发邮件;如果等于0,则不会触发电子邮件警报。3.
实现思路
仅供参考
#!/bin/sh
#日志路径
mall _ c _ log _ path=/data/admin/log/mall-c/1 . 0 . 0/QA/base/1/mall-c . log
mall _ mg _ log _ path=/data/admin/log/mall-mg/1 . 0 . 0/QA/base/1/mall-mg . log
#当前时间前一分钟,精确到分钟
curdate=`date -d 1分钟前 %Y-%m-%d %H:%M
echo ${curdate}
#获取Mall _ C要截取的日期日志的开始和结束行号。
c _ start _ line=` cat-n $ mall _ c _ log _ path grep $ { curdate } head-1 cut-f1 ` 1
c _ end _ line=` cat-n $ mall _ c _ log _ path grep $ { curdate } tail-1 cut-f1 ` 1
#获取mall_mg要截取的日期日志的开始和结束行号。
mg _ start _ line=` cat-n $ mall _ mg _ log _ path grep $ { curdate } head-1 cut-f1 ` 1
mg _ end _ line=` cat-n $ mall _ mg _ log _ path grep $ { curdate } tail-1 cut-f1 ` 1
sed -n $c_start_line,$ { c _ end _ line } p $ mall _ c _ log _ path/data/admin/log _ err/mall _ c _ now . log
sed -n $mg_start_line,$ { mg _ end _ line } p $ mall _ mg _ log _ path/data/admin/log _ err/mall _ mg _ now . log
#清空错误日志文件
/data/admin/log _ err/mall-c _ err . txt
/data/admin/log _ err/mall-mg _ err . txt
#将错误信息写入文件
err _ list=(arithmeticeception NullPointerException ClassCastException negative earrayexception arrayindexoutofbounds exception securityexception eof exception tion file not found exception number format exception SQLException io exception NoSuchMethodException SocketTimeoutException)
对于${err_list[*]}中的I;做
cat/data/admin/log _ err/mall _ C _ now . log grep-C 20 $ { I } g
t; /data/admin/log_err/mall-c_err.txt
cat /data/admin/log_err/mall_mg_now.log grep -C 20 "${i}" >> /data/admin/log_err/mall-mg_err.txt
done
# -*- coding: UTF-8 -*-import smtplib,os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
def send_mail_attch():
#发送邮箱
# sender=18706710668@163.com
sender=815618406@qq.com
#接收邮箱
receiver=815618406@qq.com
#发送邮箱服务器
# smtpserver=smtp.163.com
smtpserver=smtp.qq.com
#用户名 口令
# username=18706710668@163.com
username=815618406@qq.com
password=vwrfpqwbwgsybdah
#中文需参数‘utf8,单字节字符不需要
# 发送邮件主题
subject = 互动赢家QA环境日志监控报警
msg = MIMEMultipart(mixed)
msg[Subject] = Header(subject, utf-8)
#邮件正文
text = "Dear all!\n 附件是后端日志报错内容,请查收~"
zw = MIMEText(text,plain,utf-8)
msg.attach(zw)
#邮件附件1
size_mall_c = os.path.getsize(/data/admin/log_err/mall-c_err.txt)
if size_mall_c != 0:
mall_c_log = open(/data/admin/log_err/mall-c_err.txt,"rb")
send_mall_c_log = mall_c_log.read()
mall_c_log.close()
att_1 = MIMEText(send_mall_c_log, base64, utf-8)
att_1["Content-Type"] = "application/octet-stream"
att_1["Content-Disposition"] = "attachment;filename = mall_c_err.txt"
msg.attach(att_1)
#邮件附件2
size_mall_mg = os.path.getsize(/data/admin/log_err/mall-mg_err.txt)
if size_mall_mg != 0:
mall_mg_log = open(/data/admin/log_err/mall-mg_err.txt,"rb")
send_mall_mg_log = mall_mg_log.read()
mall_mg_log.close()
att_2 = MIMEText(send_mall_mg_log, base64, utf-8)
att_2["Content-Type"] = "application/octet-stream"
att_2["Content-Disposition"] = "attachment;filename = mall_mg_err.txt"
msg.attach(att_2)
msg[to]=815618406@qq.com
msg[from]=815618406@qq.com
smtp=smtplib.SMTP_SSL(smtp.qq.com,port=465)
#smtp=smtplib.SMTP()
#smtp.connect(smtp.qq.com)
#smtp.set_debuglevel(1)
smtp.login(username,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
if __name__ == __main__:
size_mall_c = os.path.getsize(/data/admin/log_err/mall-c_err.txt)
size_mall_mg = os.path.getsize(/data/admin/log_err/mall-mg_err.txt)
if (size_mall_c != 0) or (size_mall_mg != 0):
send_mail_attch()
#!/bin/sh#执行收集报错的脚本
sh /data/admin/log_err/monitor_log_err.sh
sleep 10
#执行发送邮件脚本
/usr/bin/python /data/admin/log_err/send_email.py
以上就是python监控日志中的报错并进行邮件报警的详细内容,更多关于python监控日志报错邮件报警的资料请关注盛行IT软件开发工作室其它相关文章!希望能帮到你~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。