[Java异常的GROK模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java异常的GROK模式相关的知识,希望对你有一定的参考价值。
我有几个问题:
我尝试使用https://discuss.elastic.co/t/logstash-configuration-with-custom-patterns/141352中提到的自定义标签,但没有太多帮助。
我想匹配多种模式,例如一种用于普通日志,一种用于异常日志。
^%TIMESTAMP_ISO8601:timestamp %LOGLEVEL:level\s*%JAVACLASS:class\.%WORD:method\s-\s%GREEDYDATA:log$
我们也有内置的Java模式,但是我无法通过搜索找到它们,因此它们是否已编译和存储?我想将模式添加到同一文件中,这样我就不会出现任何问题。
除了在patterns文件夹中编写以外,还有别的方法可以做到这一点吗?
我正在使用Elastic Stack 7.6.2。
将堆栈跟踪行连接到一个日志条目中
我正在通过Filebeat将日志发送到Logstash。我必须配置Filebeat,以便将整个堆栈跟踪视为一项。我正在使用multiline
中所述的Examples of multiline configuration:
#filebeat.yml
filebeat:
inputs:
- type: log
…
multiline:
pattern: '^[[:space:]]+(at|\.3)[[:space:]]+\b|^Caused by:'
match: after
output:
logstash:
hosts: ["logstash:5044"]
处理两种类型的日志条目
在我的logstash.conf
文件中,有一个与以下项匹配的过滤器:
- 常规的Spring Boot日志条目(此处未覆盖)例如:
2020-05-12 08:31:26.530 INFO 10197 --- [SpringContextShutdownHook] o.s.s.c.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
- Java异常例如:
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
因为我没有在一个match
中列出多个模式,所以正在对照两个匹配项检查每个条目(我认为break_on_match
在这种情况下不起作用)。结果,break_on_match
标签被添加到所有条目。要删除此标签,我必须知道特定条目已通过一种模式成功匹配-在这种情况下将出现_grokparsefailure
或stacktrace
标签。因此,对于具有我的标签的条目,我可以安全地删除spring_boot_log
标签:
_grokparsefailure
下面您可以看到我的ElasticHQ的屏幕截图,其中显示了如何解析示例堆栈跟踪。有两个部分:# 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"]
…
和exception
,以及stacktrace
数组中的自定义标签:tags
有用的链接:
- https://grokdebug.herokuapp.com/patterns
- https://discuss.elastic.co/t/is-there-a-way-to-tag-for-different-grok-matches/52785
- https://stackoverflow.com/a/46589940/7995881
- https://discuss.elastic.co/t/logstash-7-grok-filter-plugin-break-on-match-appears-to-be-broken/176578/6
- https://sematext.com/blog/handling-stack-traces-with-logstash/
以上是关于[Java异常的GROK模式的主要内容,如果未能解决你的问题,请参考以下文章
使用 java grok 模式从 syslog 消息中提取详细信息
Android Java:在 onCreateView() 中返回空视图的片段