我是ELK堆栈的全新用户。我从我的日志中筛选出特定部分时遇到了一些问题。logstash/grok自定义文件
示例日志:
[2017-05-30 13:58:09,336] INFO [com.qwerty.test.core.services.impl.order.OrderEntryService] (OrderEntryService.java:5426) [http-/0.0.0.0:1111-111] {{CT,1496145487308}{IP,111.11.111.11}{JTX,1511059/176275501}{OBJT,goodsMovement.reportsUtils.ConsignmentStocksList}{OPT,SQ}{PID,111111}{SS,SSCPLTMPRODPL}{TRT,SAP_LOGISTIC_REPORT}{UID,StudentSaSo-8}}: Saving order: K1010101
和我的神交过滤器:
grok { match => { "message" => "(?<timestamp>%{YEAR}-%{MONTHNUM2}-%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND},%{NONNEGINT})\] %{LOGLEVEL:loglevel} * \[(?<logger>[A-Za-z0-9$_.]+)\] \(%{JAVAFILE:class}:%{NONNEGINT:line}\) \[%{NOTSPACE:thread}\] %{GREEDYDATA:message_TEST}"} }
,所以我需要筛选出 “ID”, “PID”,IP和“ UID“,我不知道如何配置这个特定的自定义模式。 我尝试使用https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns的模式,但它不适用于我
感谢alexK您的回复,但你说的话后,我收到了另一个问题,我的日志。 他们不经常。有些行只有IP和PID或JTX,PID和UID,还有它们混合在一起,我的意思是IP,UID等字段不总是处于同一位置...:/ 我像你写的那样映射了整个日志 {{CT,%{DATA:克拉}} {IP,%{IPV4:IP}} {JTX,%{NONNEGINT:JTX}} {OBJT,%{GREEDYDATA:objt}} {OPT%{GREEDYDATA:OPT}} {PID,%{POSINT:PID}} {SS,%{GREEDYDATA:SS}} {TRT,%{GREEDYDATA:TRT}} {UID,%{DATA:UID}}}%{GREEDYDATA:log_message} 有没有想过通过自动搜索字段或类似的东西来做到这一点? –