Python中想写一个日志分析工具,有没有好的轮子推荐?
主要内容就是,分析应用重启阶段的日志,判断是否有异常之类的。
要正则匹配关键字处理么? 看了几个都是这样简单的处理的。
大家有什么好想法么, 或者有什么现成的轮子用。
Python中想写一个日志分析工具,有没有好的轮子推荐?
多大的日志,试试 logstash
对于日志分析,Python生态里确实有几个很成熟的轮子。
如果只是基础分析,用内置的re模块做正则匹配就够用了。比如提取特定错误信息:
import re
log_content = "2023-10-01 ERROR: Database connection failed"
pattern = r'ERROR: (.+)'
match = re.search(pattern, log_content)
if match:
print(f"Found error: {match.group(1)}")
需要更复杂的解析时,logparser库能处理各种日志格式:
# 需要先安装:pip install logparser
from logparser import Drain
log_format = '<Date> <Time> <Level> <Component>: <Content>'
parser = Drain.LogParser(log_format, indir='./logs/', outdir='./result/')
parser.parse('your_log_file.log')
要是做实时监控,logging模块配合watchdog可以监听文件变化:
import logging
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class LogHandler(FileSystemEventHandler):
def on_modified(self, event):
if event.src_path.endswith('.log'):
with open(event.src_path) as f:
new_lines = f.readlines()[-10:] # 读取最后10行
for line in new_lines:
if 'ERROR' in line:
logging.error(f"Found error: {line}")
observer = Observer()
observer.schedule(LogHandler(), path='./logs/', recursive=False)
observer.start()
对于大规模日志分析,pandas是必备的:
import pandas as pd
df = pd.read_csv('app.log', sep=' ', names=['timestamp', 'level', 'message'])
error_df = df[df['level'] == 'ERROR']
print(f"Total errors: {len(error_df)}")
简单来说,根据你的需求选合适的工具就行。
一般都是几 M 到几十 M 应用的重启日志,spring bot,weblogic,tomcat,等中间件的日志
我先看下 谢谢
ELK 或者用 EL + Grafana
感觉有些庞大了,现在的工具是远程执行重启命令,打印出来的内容会保存在本地,然后分析这份重启日志判断应用是否正常启动。有没有轻量级的推荐,主要想要的就是,给一个 log 文件,分析是否有报错,谢谢
filebeat+es+kibana logstash 实在是太重了
只是需要分析报错的话,要不试试 sentry ?
轻量的 graylog 了解一下,elk 实在太笨重,数据量不大没必要
senty,elk 都挺好的
elk+1
就这么简单的事情还要轮子。
直接用 python 撸个脚本就可以了,直接 os.popen(‘grep -E “regex” filename’) 或者 os.popen(‘zgrep -e “regex” filename.gz’)
其实这样弄比直接用 python 处理要快得多,grep/zgrep 是 C 写的还支持文件通配。
推荐 open falcon,ELK
我自己是准备这样搞得,就想看看有没有好轮子用
Get-Item ‘你的日志文件’ | Select-String ‘你的正则表达式’ | Out-GridView

