#!/usr/bin/env python
#-*-coding:utf-8-*-
#CreateDate:2017/04/14
#Author:Eivll0m
#ScriptName:monitor-log.py
#Crontab:*/5 * * * * /app/sbin/monitor-log.py &>/dev/null import os
import time
import stat
import socket
import smtplib
from email.mime.text import MIMEText
#from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.utils import parseaddr, formataddr def formatAddr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def sendMail(body,subject):
smtp_server = 'smtp.exmail.qq.com'
from_mail = 'xxx@xxxx.com'
mail_pass = 'password'
to_mail = ['aaa@xxx.com','bbb@xxx.com','ccc@xxx.com']
cc_mail = ['ddd@xxx.com','eee@xxx.com','fff@xxx.com','ggg@xxx.com','hhh@xxx.com']
msg = MIMEText(body,'html','utf-8')
msg['From'] = formatAddr('日志监控 <%s>' % from_mail).encode()
msg['To'] = ','.join(to_mail)
msg['Cc'] = ','.join(cc_mail)
msg['Subject'] = Header(subject, 'utf-8').encode()
try:
s = smtplib.SMTP()
s.connect(smtp_server, "")
s.login(from_mail, mail_pass)
s.sendmail(from_mail, to_mail+cc_mail, msg.as_string())
s.quit()
except smtplib.SMTPException as e:
print "Error: %s" % e def GetText(file):
cmd = "awk -vf='%s' 'BEGIN{while(getline < f){j++;if(/ERROR/)i=j}}NR>=i' %s" %(file,file)
text = os.popen(cmd).readlines()
return ''.join(text) def CheckFileStat(file):
FileStats = os.stat(file)
ModifyTime = time.mktime(time.strptime(time.ctime(FileStats[stat.ST_MTIME]),"%a %b %d %H:%M:%S %Y")) + 300
LocalTime = time.time()
if LocalTime < ModifyTime:
return True
else:
return False if __name__ == "__main__":
logs = ['/app/log/channelmanage/channelerror.log','/app/log/assetmanage/error.log']
LocalIP = socket.gethostbyname(socket.gethostname())
for log in logs:
  if CheckFileStat(log):
  sj = log.split('/')[3] + '日志报错' + '【主机IP:' + LocalIP + '】'
  body = GetText(log)
  sendMail(body,sj)

监控邮件:

tomcat错误日志监控脚本的更多相关文章

  1. 运维开发实践——基于Sentry搭建错误日志监控系统

    错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ...

  2. Sentry错误日志监控你会用了吗?

    无论作为新手还是老手程序员在程序的开发过程中,代码运行时难免会抛出异常,而且项目在部署到测试.生产环境后,我们便不可能像在开发时那样容易的及时发现处理错误了.一般我们都是在错误发生一段时间后,错误信息 ...

  3. tomcat健康检查监控脚本

    #!/bin/sh#自动监控tomcat脚本并且执行重启操作#获取tomcat_IDTomcatID=`ps -ef|grep tomcat|grep -v "grep"|grep ...

  4. MySQL慢日志监控脚本实例剖析

    公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. 1 2 3 ...

  5. sentry_sdk 错误日志监控 Flask配置

    https://www.cnblogs.com/sui776265233/p/11348169.html 开源的平台,为小服务日志监控统一管理 pip install --upgrade sentry ...

  6. 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,

    第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...

  7. zabbix的日志监控

    前提条件是该日志文件对于启动zabbix agent进程的用户开启了可读权限,而且该日志的路径对该用户开方x权限,让能取到这个日志文件 第一个参数可以不用引号,前提是zabbix用户可以进入文件路径, ...

  8. 一种轻量级的微信小程序日志监控的方法

    今天一个活动要写个H5,明天一个功能要用小程序,天天都在写bug.用户反馈小程序用起来有问题还特么还不知道到底出了啥bug,反馈多了,老板要扣工资了!看来挖了太多坑不填也不行,程序异常还是要主动追踪, ...

  9. 前端异常日志监控 - 使用Sentry

    背景 现在的前端项目越来越复杂,在不同的客户端会产生各种在开发人员机器上不会出现的问题.当用户报告一个问题给开发人员的时候,开发人员无法直接定位问题.在此前,听过一次鹅厂的前端人员,他们对QQ里面的网 ...

随机推荐

  1. [2016北京集训试题6]mushroom-[bitset]

    Description Solution bitset是个好东西啊..强行压位什么的真是够orz. 由于所有的蘑菇上房间的长相是一样的,我们针对每个房间,算出它到根节点的bitset和以它为根的子树的 ...

  2. 解读Web应用程序安全性问题的本质

    转自 http://blog.csdn.net/iwebsecurity/article/details/1688304 相信大家都或多或少的听过关于各种Web应用安全漏洞,诸如:跨site脚本攻击( ...

  3. ARP 地址分类 NAT技术

    第1章 OSI回顾 1.1 TCP/IP协议族组成 应用层 主机到主机层   互联网层   网络接入层 1.2 总结应用层掌握的协议与端口号对应关系 http(80) telnet(23) ftp(2 ...

  4. Cisco Packet Tracer中通过集线器组网

    Cisco Packet Tracer中可以通过集线器将多台电脑完成通信. Cisco Packet Tracer 6.2.0 一.添加三台电脑设备 1.按照下图1.2步骤操作,2步骤执行三次,拖拽P ...

  5. renren_fast性能测试平台的安装部署

    1.从GitHub下载源码: https://github.com/zyanycall/stressTestPlatform git clone https://github.com/zyanycal ...

  6. Charles 抓包使用教程

    将 Charles 设置成系统代理 Charles 主界面介绍 过滤网络请求 截取 iPhone 上的网络封包 截取 Https 通讯信息 模拟慢速网络 修改网络请求内容 给服务器做压力测试 修改服务 ...

  7. PKCS#7

    1.名词解释 数字签名:在ISO7498-2标准中定义为:"附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性 ...

  8. hive的优化

    hive.optimize.cp=true:列裁剪hive.optimize.prunner:分区裁剪hive.limit.optimize.enable=true:优化LIMIT n语句hive.l ...

  9. MPVUE多环境定义后台URL

    小程序选定了mpvue作为开发框架,搭建开发环境和构建环境.自从用了Travis和Jenkins之后,再也回不到手工构建的时代了. 目的-自动构建 web项目中,自从前后台分离的结构形成,就形成了一个 ...

  10. Tesseract 4 自行构建支持双引擎的tessdata 文件

    Tesseract 4 版本具备两种识别引擎:新的基于LSTM(神经网络)引擎与传统引擎.通过在初始化时设定不同的EngineMode启动. OCR Engine modes: 0 Legacy en ...