日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)

Posted 北漂悟道之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)相关的知识,希望对你有一定的参考价值。

赞赏账户 随缘

日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)

        每次提取日志信息的重要信息,总是不知道如何下手,现以my cat日志和审计日志为例,整理出的提取关键信息的语句见下文。

1、从mycat日志中提取慢查询IP信息:

日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)

 

2、从mycat日志中提取慢查询的执行时长:

日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)

 

3、从mycat日志中提取慢查询中执行的动作:  

日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)


4、从mycat日志中提取慢查询的用户: 

日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)


5、从mycat日志中提取慢查询的sql: 

日志提取过程中过滤规则的python实现(类似logstash过滤器的功能)


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过滤器的功能)的主要内容,如果未能解决你的问题,请参考以下文章

过滤 CloudWatch Logs 以提取实例 ID

Python中正则表达式的一些匹配规则

Python 实现单笔业务日志完整提取

OpenCV 和 Python - 如何使用卡尔曼滤波器从 OpenCV 检测到的不规则多边形中过滤噪声?

智能运维 | 日志监控实践:监控Agent集成Lua引擎实现多维度日志采集

如何在python中提取随机森林的决策规则