Python脚本实时处理log文件的方法


Posted in Python onNovember 21, 2016

这个Python脚本是用来对实时文件的内容监控,比如 Error 或者 time out 字段都可以进行自定义;算是我的第一个真正的Python脚本,自己感觉还是比较臃肿,不过打算放到blog上记录一下(还是初学者,大神们勿喷哈),真心希望博友们能够再指点一下(现在记录每次的文件大小值是输出到了一个文件中,并且里面还嵌套了有shell命令,这些我认为都是可以优化掉的吧,只是现在我还不知道怎么做);告警是基于zabbix,自定义的模板是120s执行一次

#!/usr/local/bin/python3.5
###Destription: 实时读取log信息
###Author: Danny Deng
###Datetime: 2016-11-17
import re,time,subprocess,os,linecache
#####定义log文件
file_name = "/usr/local/nginx/logs/error.log"
file_number = "/usr/local/zabbix_agent/number.txt"
j = int(0)
seek = int(0)
##判断过程:文件是否存在---判断存储日志大小的文件是否存在---判断number size 与 filesize的大小
###定义函数按行读取文件内容
def readline():
####if判断 seek是否大于0,大于则赋值,否则初始为0
while True:
######定义文件,根据seek值进行每行读取,每次tell赋值给seek
with open(file_name,'r') as f:
global seek
#seek = seek
f.seek(seek)
data = f.readline()
if data:
seek = f.tell()
yield data
else:
######Python变量转换为shell变量
global file_number
os.environ['seek'] = str(seek)
os.environ['file_number'] = str(file_number)
os.system('echo $seek > $file_number')
os.system('chown zabbix.zabbix $file_number')
return
def func_for():
j = int(0)
for i in readline():
f_find = re.findall(r"check time out", i,flags=re.IGNORECASE)
if "check time out" in f_find:
j += 1
#####没有输出0,有值输出出现error匹配到的次数值
try:
print(j)
except NameError:
print(int("0"))
###判断日志文件是否存在
if os.path.isfile(file_name):
###判断存储文件内容大小的文件是否存在
if os.path.isfile(file_number):
####存在则读取文件size大小,赋值给seek_number
seek_number = int(linecache.getline(file_number, 1))
####然后继续判断存储的文件大小与现在文件大小(确定文件是否是重新生成的)
if os.path.getsize(file_name) >= seek_number and seek_number > 0:
seek = seek_number
func_for()
###若为新文件则,seek 赋值为0
else:
#open(arg1, "a+").write("0")
#seek = int(linecache.getline(file_number, 1))
seek = int(0)
func_for()
####file_number 不存在则新建,并赋值seek变量为0 
else:
#open(file_number, "a+").write("0")
#seek = int(linecache.getline(file_number, 1))
os.environ['file_number'] = str(file_number)
os.system('echo 0 > $file_number')
os.system('chown zabbix.zabbix $file_number')
func_for()
else:
print("Error")
quit()

以上所述是小编给大家介绍的Python脚本实时处理log文件脚本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
python如何在终端里面显示一张图片
Aug 17 Python
Python+微信接口实现运维报警
Aug 27 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
Prometheus开发中间件Exporter过程详解
Nov 30 Python
进行数据处理的6个 Python 代码块分享
Apr 06 Python
深入理解 Python 中的多线程 新手必看
Nov 20 #Python
详解python的数字类型变量与其方法
Nov 20 #Python
python中异常报错处理方法汇总
Nov 20 #Python
详解MySQL数据类型int(M)中M的含义
Nov 20 #Python
python制作websocket服务器实例分享
Nov 20 #Python
Flask框架的学习指南之用户登录管理
Nov 20 #Python
Flask框架的学习指南之制作简单blog系统
Nov 20 #Python
You might like
有关php运算符的知识大全
2011/11/03 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP导入导出Excel代码
2015/07/07 PHP
微信支付开发维权通知实例
2016/07/12 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Python中如何获取类属性的列表
2016/12/26 Python
python框架中flask知识点总结
2018/08/17 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
北大青鸟学生求职信
2013/09/24 职场文书
销售业务员岗位职责
2014/01/29 职场文书
写求职信有什么意义
2014/02/17 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
工地质量标语
2014/06/12 职场文书