Logstash java异常的GROK模式

Logstash java异常的GROK模式,logstash,logstash-grok,logstash-configuration,Logstash,Logstash Grok,Logstash Configuration,我有几个问题: 我尝试使用中提到的自定义标记,但没有得到太多帮助 我想匹配多个模式,比如一个用于正常日志,一个用于异常日志 ^%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}\s*%{JAVACLASS:class}\.%{WORD:method}\s-\s%{GREEDYDATA:log}$ 我们也有内置的java模式,但我无法通过搜索找到它们,所以它们是编译和存储的吗?我想在同一个文件中添加我的模式,这样我就不会遇到任何问题 除了在patt

我有几个问题:

  • 我尝试使用中提到的自定义标记,但没有得到太多帮助

  • 我想匹配多个模式,比如一个用于正常日志,一个用于异常日志

    ^%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}\s*%{JAVACLASS:class}\.%{WORD:method}\s-\s%{GREEDYDATA:log}$
    
  • 我们也有内置的java模式,但我无法通过搜索找到它们,所以它们是编译和存储的吗?我想在同一个文件中添加我的模式,这样我就不会遇到任何问题


  • 除了在patterns文件夹中写入之外,还有其他方法可以完成此任务吗?

    我正在使用Elastic Stack 7.6.2

    将堆栈跟踪行连接到一个日志条目中 我正在通过Filebeat将日志发送到Logstash。我必须配置Filebeat,以便它将整个堆栈跟踪视为一个条目。我正在使用
    多行
    ,如中所述:

    处理两种类型的日志条目 在我的
    logstash.conf
    文件中,我有一个与以下内容匹配的过滤器:

    • 常规Spring引导日志条目(此处未介绍) e、 g:
    • Java异常 e、 g:
    因为我没有在一个
    匹配中列出多个模式
    ,所以每个条目都会根据两个匹配项进行检查(我认为在这种情况下不起作用)。因此,
    \u grokparsefailure
    标记被添加到所有条目中。要删除此标记,我必须知道一个特定条目成功地与一个模式匹配-在这种情况下,
    stacktrace
    spring\u boot\u log
    标记将出现。因此,我可以安全地删除带有我的标记的条目的
    \u grokparsefailure
    标记:

    # logstash.conf
    …
    filter {
        grok {
            match => { "message" => "%{JAVACLASS:exception}:\s%{GREEDYDATA:stacktrace}" }
            add_tag => [ "stacktrace" ]
            }
        grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp}…" }
            add_tag => [ "spring_boot_log" ]
            }
        if "stacktrace" in [tags] or "spring_boot_log" in [tags] {
                mutate {
                    remove_tag => ["_grokparsefailure"]
                    }
        }
    }
    …
    
    下面您可以看到我的ElasticHQ的屏幕截图,显示如何解析示例堆栈跟踪。有两部分:
    异常
    堆栈跟踪
    ,以及
    标记
    数组中的我的自定义标记:

    有用链接:


    我直接在logstash的配置中配置java日志解析(和异常标记)。看看一篇关于SpringBoot示例的博客文章,看看它是否有用:谢谢你的回复。我想使用
    (^.+异常:.+)|(^\s+at.+)|(^\s+…\d+more)|(^\s*由:.+)
    模式引起),这样我就可以有新的字段,比如Exception和causedBy,这样我以后就可以按类进行分组。那么我可以把这个模式放在内联的某个地方吗?请帮助。可以给grok提供多种模式。自从那篇博客文章发表后,语法似乎发生了变化,新的是
    grok{match=>{“message”=>[…]}}
    (例如,您可以提供一个内联模式列表)。我会试着把你的异常模式放在模式列表中你的常规模式之前。除此之外,正如我所说的,如果可能的话,我想把它分开,请发布这个grokpattern@Raghuveer,你有什么解决办法吗?
        2020-05-12 08:31:26.530  INFO 10197 --- [SpringContextShutdownHook] o.s.s.c.ThreadPoolTaskExecutor           : Shutting down ExecutorService 'applicationTaskExecutor'
    
        java.lang.IllegalArgumentException: Exception message
            at in.keepgrowing.springbootlog4j2scaffolding.SpringBootLog4j2ScaffoldingApplication.main(SpringBootLog4j2ScaffoldingApplication.java:14) [classes/:?]
            at com.example.myproject.Author.getBookIds(Author.java:38)
            at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
        Caused by: java.lang.NullPointerException
            at com.example.myproject.Book.getId(Book.java:22)
            at com.example.myproject.Author.getBookIds(Author.java:35)
            ... 1 more
    
    # logstash.conf
    …
    filter {
        grok {
            match => { "message" => "%{JAVACLASS:exception}:\s%{GREEDYDATA:stacktrace}" }
            add_tag => [ "stacktrace" ]
            }
        grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp}…" }
            add_tag => [ "spring_boot_log" ]
            }
        if "stacktrace" in [tags] or "spring_boot_log" in [tags] {
                mutate {
                    remove_tag => ["_grokparsefailure"]
                    }
        }
    }
    …