python监控tomcat日记文件
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
import os
import signal
import subprocess
import re
import cx_Oracle def monitorLog(logFile,oldDayTime):
logUrl='10.0.22.**'
#连接数据库
connstr='username/password@10.0.22.**:**/**'
db=cx_Oracle.connect(connstr)
cursor = db.cursor()
#结束时间
startTime =''
startMinute=''
#读取日记文件尾部日记
popen = subprocess.Popen('tail -f ' + logFile, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
pid = popen.pid
print('Popen.pid:' + str(pid))
recommDict={}
while True:
line = popen.stdout.readline().strip()
if line:
#正则表达式得到推荐接口名字
matchObj = re.search(r'(?<=recomm=)(.*?)(?=&)', line, re.M | re.I)
if matchObj:
recommName=matchObj.group()
if recommName not in recommDict:
recommDict.setdefault(recommName,1)
else:
value=recommDict[recommName]
value+=1
recommDict[recommName]=value
#正则表达式获取分钟
matchTime = re.search(r'(?<=201[1-9]:)(.*?)(?= +)', line, re.M | re.I)
if matchTime:
thisTime=str(matchTime.group())
thisMinute=thisTime.split(":")[1]
if startMinute is '':
startMinute = thisMinute
startTime = thisTime
if startMinute!= thisMinute:
for key in recommDict.keys():
value=str(recommDict[key])
logTime=str(oldDayTime)+" "+startTime
sql = """INSERT INTO MINITOR_TOMCATLOGS(LOGURL,BEGINTIME,TIMEINTERVAL,PORTNAME,CALLNUM,UPDATETIME)VALUES ('"""+logUrl+"""','"""+logTime+"""','minute','"""+key+"""',"""+value+""",sysdate)"""
cursor.execute(sql)
db.commit()
#清空recommDict
recommDict.clear()
startMinute =''
#获取今天的时间
toDayTime=time.strftime('%Y-%m-%d', time.localtime())
if toDayTime!=oldDayTime:
if len(recommDict)>0:
for key in recommDict.keys():
value=str(recommDict[key])
logTime=str(oldDayTime)+" "+startTime
sql = """INSERT INTO MINITOR_TOMCATLOGS(LOGURL,BEGINTIME,TIMEINTERVAL,PORTNAME,CALLNUM,UPDATETIME)VALUES ('"""+logUrl+"""','"""+logTime+"""','minute','"""+key+"""',"""+value+""",sysdate)"""
cursor.execute(sql)
db.commit()
recommDict.clear()
db.close()
popen.kill()
break
nowDate=time.strftime("%Y-%m-%d", time.localtime())
tomcatLog_dir="/opt/apache-tomcat-7.0.54/logs/"
currLogFile=tomcatLog_dir+"localhost_access_log."+nowDate+".txt"
monitorLog(currLogFile,nowDate) if __name__ == '__main__':
nowDate=time.strftime("%Y-%m-%d", time.localtime())
tomcatLog_dir="/opt/apache-tomcat-7.0.54/logs/"
currLogFile=tomcatLog_dir+"localhost_access_log."+nowDate+".txt"
monitorLog(currLogFile,nowDate)
python监控tomcat日记文件的更多相关文章
- Python监控目录和文件变化
一.os.listdir import os, time path_to_watch = "." before = dict ([(f, None) for f in os.lis ...
- Python监控文件变化:watchdog
Python监控文件变化有两种库:pyinotify和watchdog.pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装.也就是说,watchdog跨平台. ...
- LoadRunner 实现监控Tomcat
LoadRunenr没有监控Tomcat的专用监控器,为了用lr达到监控tomcat的目的可以通过打开Tomcat自带的Status页面之后,利用lr的关联技术得到相关的数据,把数据输出到lr自定义的 ...
- linux上监控tomcat down掉后自动重启tomcat
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...
- 运用JMX监控Tomcat/Java jvisualvm简要说明
公司线上项目出现了java heap space 然后经过查询知晓了下面工具于是开始了尝试. visualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存.cpu分析,线程分析... jvisua ...
- 【转】使用JDK自带jvisualvm监控tomcat
转载地址: http://my.oschina.net/kone/blog/157239 jdk自带有个jvisualvm工具.该工具是用来监控java运行程序的cpu.内存.线程等的使用情况.并且使 ...
- 使用JDK自带jvisualvm监控tomcat
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 性能测试中用LambdaProbe监控Tomcat Tomcat和Probe的配置
转载:http://bbs.51testing.com/thread-90047-1-1.html 性能测试中用LambdaProbe监控TomcatLambdaProbe 是一款强大的免费开源工具, ...
- 如何监控 Tomcat?Zabbix 与 Cloud Insight 对比
JVM 监控工具有很多,像命令 jstat,jmap,jstack,jinfo 可以根据不同需求查看不同的系统信息,还有图像化界面 jconsole,都是很方便的工具.这些可以参考 JAVA自带监控工 ...
随机推荐
- 【转】javap -c命令详解
javap -c命令详解 一直在学习Java,碰到了很多问题,碰到了很多关于i++和++i的难题,以及最经典的String str = "abc" 共创建了几个对象的疑难杂症. 知 ...
- checkbox:click事件触发span元素内容改变
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- pandas中loc-iloc-ix的使用
转自:https://www.jianshu.com/p/d6a9845a0a34 Pandas中loc,iloc,ix的使用 使用 iloc 从DataFrame中筛选数据 iloc 是基于“位置” ...
- TabLayout.Tab(自定义)点击事件
TabLayout是官方design包中的一个布局控件,这里不介绍它的基本使用,只是解决Tab(自定义)点击事件. //获取Tab的数量 Int tabCount = tabLayout.getTab ...
- qt 设置阴影 不显示黑色边框
this->setAttribute(Qt::WA_TranslucentBackground);
- 移动端超级好用的reset.css(只做参考哦具体以你们实际项目需求为准)
html { color: #333; /*规定主色调,依据业务场景(非必须)*/ background: #F6F6F6; /*规定主背景,依据业务场景(非必须)*/ overflow-y: aut ...
- SAP CRM点了附件的超链接后报错的处理方式
SAP CRM系统里,点击了附件的这些超链接后,如果是文本文件,会在浏览器里打开.如果是其他类型的文件,会弹出下载对话框. 然而最近我工作时遇到一个问题,点击超链接后,总是弹出Logon failed ...
- 原创:E325: ATTENTION vim超完整超给力的问题与解决方法
又到了老葵花哥哥开课的时间 这是给大家提供一个企业常见的错误 我相信大家生活还编程中会长期使用接触这个错误 这里我们经常用的两个选项 (E)dit any way 编辑原来的文件,忽略刚刚做的修改 ( ...
- 用户交互和if条件判断、嵌套
#a=input("提示语“)#接受的数据类型是字符串str#提示用户输入姓名 # a=input("请输入姓名") print(a) '''输出结果:请输入姓名小明 姓 ...
- 用Vue的方式实现复选框
var borrVm = new Vue({ el: "#WingApp", data: { returnBookList:[], checked:"", ch ...