日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)
Posted 北漂悟道之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)相关的知识,希望对你有一定的参考价值。
每次提取日志信息的重要信息,总是不知道如何下手,现以my cat日志和审计日志为例,整理出的提取关键信息的语句见下文。
1、从mycat日志中提取慢查询IP信息:
2、从mycat日志中提取慢查询的执行时长:
3、从mycat日志中提取慢查询中执行的动作:
4、从mycat日志中提取慢查询的用户:
5、从mycat日志中提取慢查询的sql:
6、从主机审计日志中提起主机名:
因为存在关键字段为空的情况,提取关键字的过程中一定要有异常处理。
import re
import traceback
ine = "2019-06-24 14:36:12,069 slow sql 1050 millis. mycatrw,192.192.219.123. select * from test limit 1;"
try:
ip = re.findall(r'd+.d+.d+.d+', ine)[0]
except Exception, ex:
e_type, e_value, e_tb = sys.exc_info()
logger.error("%s->%s" % (ex, traceback.extract_tb(e_tb)))
try:
slow_time = re.findall(r'slow sql (d*) millis', ine)[0]
except Exception, ex:
e_type, e_value, e_tb = sys.exc_info()
logger.error("%s->%s" % (ex, traceback.extract_tb(e_tb)))
try:
action = re.findall(r'select|insert|update|delete|alter|SELECT|INSERT|UPDATE|DELETE|ALTER', ine)[0]
except Exception, ex:
e_type, e_value, e_tb = sys.exc_info()
logger.error("%s->%s" % (ex, traceback.extract_tb(e_tb)))
try:
user = re.findall(r'select.*|insert.*|update.*|delete.*|SELECT.*|INSERT.*|UPDATE.*|DELETE.*|ALTER.*', ine)[0]
except Exception, ex:
e_type, e_value, e_tb = sys.exc_info()
logger.error("%s->%s" % (ex, traceback.extract_tb(e_tb)))
try:
user = re.findall(r'millis. (w*)',str(message.split(',')[1]))[0]
except Exception, ex:
e_type, e_value, e_tb = sys.exc_info()
logger.error("%s->%s" % (ex, traceback.extract_tb(e_tb)))
ine = "Jun 24 19:31:43 abc-abc-abc-abc-123 op: xxx.xx.xx.xx op pts/0 2019-06-24 19:30 (xxx.xxx.xxx.xxx) [/var/opt] [root] 2019-06-24 19:31:43 tail -f opt.txt"
try:
hostname = re.findall(r'(w*-w*-w*-w*-w*)', ine)[0]
except Exception, ex:
e_type, e_value, e_tb = sys.exc_info()
logger.error("%s->%s" % (ex, traceback.extract_tb(e_tb)))
注:近期连载日志系统的架构,组件,原理和部分组件代码重构,感兴趣的同学可以关注我!!!
以上是关于日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 和 Python - 如何使用卡尔曼滤波器从 OpenCV 检测到的不规则多边形中过滤噪声?