python监听邮件,python实现监控报警

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: