python实现实时监控文件的方法
2016-08-26 00:00
1986 查看
在业务稳定性要求比较高的情况下,运维为能及时发现问题,有时需要对应用程序的日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去解决,比如要监控nginx的$request_time和$upstream_response_time时间,分析出最耗时的请求,然后去改进代码,这时就要对日志进行实时分析了,发现时间长的语句就要报警出来,提醒开发人员要关注,当然这是其中一个应用场景,通过这种监控方式还可以应用到任何需要判断或分析文件的地方,所以今天我们就来看看如何用python实现实时监控文件,我给三个方法实例::
第一种:
这个是最简单的和容易理解的,因为大家都知道linux下有tail命令,所以你可以直接用Popen()函数去调用这个命令来执行获取输出,代码如下:
第二种:
采用python对文件的操作来实现,用文件对象的tell(), seek()方法分别得到当前文件位置和要移动到的位置,代码如下:
第三种:
利用python的 yield来实现一个生成器函数,然后调用这个生成器函数,这样当日志文件有变化时就打印新的行,代码如下:
最后解释下seek()函数的用法,这个函数接收2个参数:file.seek(off, whence=0),从文件中移动off个操作标记(文件指针),正数往结束方向移动,负数往开始方向移动。如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
以上就是三个常用方法,具体日志分析的代码大家可以根据自己的业务逻辑去实现,完毕。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
python实现监控windows服务并自动启动服务示例
python动态监控日志内容的示例
写了个监控nginx进程的Python脚本
python操作摄像头截图实现远程监控的例子
Python脚本实现网卡流量监控
Python中使用Inotify监控文件实例
Python写的服务监控程序实例
python监控网卡流量并使用graphite绘图的示例
Python写的一个简单监控系统
第一种:
这个是最简单的和容易理解的,因为大家都知道linux下有tail命令,所以你可以直接用Popen()函数去调用这个命令来执行获取输出,代码如下:
logfile='access.log' command='tail -f ‘+logfile+'|grep “timeout”‘ popen=subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) while True: line=popen.stdout.readline().strip() print line
第二种:
采用python对文件的操作来实现,用文件对象的tell(), seek()方法分别得到当前文件位置和要移动到的位置,代码如下:
import time file = open(‘access.log') while 1: where = file.tell() line = file.readline() if not line: time.sleep(1) file.seek(where) else: print line,
第三种:
利用python的 yield来实现一个生成器函数,然后调用这个生成器函数,这样当日志文件有变化时就打印新的行,代码如下:
import time def follow(thefile): thefile.seek(0,2) while True: line = thefile.readline() if not line: time.sleep(0.1) continue yield line if __name__ == ‘__main__': logfile = open(“access-log”,”r”) loglines = follow(logfile) for line in loglines: print line,
最后解释下seek()函数的用法,这个函数接收2个参数:file.seek(off, whence=0),从文件中移动off个操作标记(文件指针),正数往结束方向移动,负数往开始方向移动。如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
以上就是三个常用方法,具体日志分析的代码大家可以根据自己的业务逻辑去实现,完毕。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
使用Python的Supervisor进行进程监控以及自动启动python实现监控windows服务并自动启动服务示例
python动态监控日志内容的示例
写了个监控nginx进程的Python脚本
python操作摄像头截图实现远程监控的例子
Python脚本实现网卡流量监控
Python中使用Inotify监控文件实例
Python写的服务监控程序实例
python监控网卡流量并使用graphite绘图的示例
Python写的一个简单监控系统
相关文章推荐
- python实现实时监控文件的方法
- 实现对文件的实时监控--使用Inotify方法
- python计算文件的行数和读取某一行内容的实现方法
- 市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加
- Python锁文件实现(其中第二种方法是转载的)
- python实现监控linux性能及进程消耗性能的方法
- python处理文本文件实现生成指定格式文件的方法
- python实现监控linux性能及进程消耗性能的方法
- python实现删除文件与目录的方法
- python处理文本文件实现生成指定格式文件的方法
- Window Linux下实现指定目录内文件变更的监控方法
- python处理文本文件实现生成指定格式文件的方法
- C#实现对文件目录的实时监控
- common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)
- python实现删除文件与目录的方法
- C#实现对文件目录的实时监控
- python实现跨文件全局变量的方法
- Python实现扫描指定目录下的子目录及文件的方法
- python实现跨文件全局变量的方法
- swoole+inotify实现异步实时文件监控