繁体   English   中英

python日志文件的grok模式的良好资源

[英]good resources for grok patterns for python log file

我想使用logtash来解析python日志文件,在哪里可以找到可以帮助我做到这一点的资源。 例如:

20131113T052627.769:myapp.py:240:INFO:用户Niranjan已登录

在此,我需要捕获时间信息以及一些数据信息。

我有完全一样的问题/需求。 我真的找不到解决方案。 没有可用的grok模式真正匹配python日志记录输出,因此我继续写了一个自定义grok模式,将其天真地添加到patterns/grok-patterns

DATESTAMP_PYTHON %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND},%{INT}

我写的logstash配置给了我不错的字段。

  • @时间戳
  • 水平
  • 信息

添加了一些我称为pymodule的额外字段,该字段应显示正在生成日志条目的python模块。

我的logstash配置文件如下所示( 忽略sincedb_path,这是一种强制logstash每次运行时都读取整个日志文件的简单方法 ):

input {                                                                                                                                                                                                
    file {                                                                                                                                                                                             
        path => "/tmp/logging_file"                                                                                                                                                                            
        start_position => "beginning"                                                                                                                                                                  
        sincedb_path => "/dev/null"                                                                                                                                                                    
    }                                                                                                                                                                                                  
}                                                                                                                                                                                                      

filter {                                                                                                                                                                                               
    grok {                                                                                                                                                                                             
        match => [                                                                                                                                                                                     
            "message",                                                                                                                                                                                             "%{DATESTAMP_PYTHON:timestamp} - %{DATA:pymodule} - %{LOGLEVEL:level} - %{GREEDYDATA:logmessage}"                                                                                                  ]                                                                                                                                                                                              
    }                                                                                                                                                                                                  

    mutate {                                                                                                                                                                                           
        rename => [ "logmessage", "message" ]                                                                                                                                                          
    }                                                                                                                                                                                                  

    date {                                                                                                                                                                                             
        timezone => "Europe/Luxembourg"                                                                                                                                                                
        locale => "en"                                                                                                                                                                                 
        match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]                                                                                                                                           
    }                                                                                                                                                                                                  
}                                                                                                                                                                                                      

output {                                                                                                                                                                                               
    stdout {                                                                                                                                                                                           
        codec => json                                                                                                                                                                                  
    }                                                                                                                                                                                                  
}       

请注意

我绝对不能保证这是最好的,甚至是可以接受的解决方案。

我们的Python日志文件格式略有不同:

[2014-10-08 19:05:02,846] (6715) DEBUG:Our debug message here

因此,我能够创建配置文件而无需任何特殊模式:

input {
    file {
        path => "/path/to/python.log"
        start_position => "beginning"
    }
}
filter {
    grok {
        match => [
            "message",                                                                                                                                                                                             "\[%{TIMESTAMP_ISO8601:timestamp}\] \(%{DATA:pyid}\) %{LOGLEVEL:level}\:%{GREEDYDATA:logmessage}"                                                                                                  ]
    }
    mutate {
        rename => [ "logmessage", "message" ]
    }
    date {
        timezone => "Europe/London"
        locale => "en"
        match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
}
output {
  elasticsearch {
    host => localhost
  }
  stdout { 
      codec => rubydebug 
  }
}  

这似乎工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM