Java 如何定义grok筛选?

Java 如何定义grok筛选?,java,logstash,microservices,kibana,elastic-stack,Java,Logstash,Microservices,Kibana,Elastic Stack,如何为Kibana中显示的以下示例日志消息定义grok过滤模式?我已经定义了更多的模式,但是得到了\u grokparsefailure 2018-12-10 14:50:01,497 [traceID : 46072cedb98568e3 spanID: 46072cedb98568e3 parent: ] service : networkService [XNIO-2 task-1] org.mongodb.driver.connection - Opened connection

如何为Kibana中显示的以下示例日志消息定义grok过滤模式?我已经定义了更多的模式,但是得到了
\u grokparsefailure

2018-12-10  14:50:01,497  [traceID : 46072cedb98568e3  spanID: 46072cedb98568e3 parent: ] service : networkService  [XNIO-2 task-1] org.mongodb.driver.connection - Opened connection [connectionId{localValue:2, serverValue:3209}] to 192.168.0.207:27017
这是我尝试的(WGSSAMINTHA)解决方案

filter { 
  grok { 
    match => { 
      "message" => "%{IP:client} %{WORD:method} %{WORD:service} 
                    %{URIPATHPARAM:request} %{NUMBER:duration}" 
    } 
    remove_field => [ "_type:doc", 
                      "_index:archisoft-log-all", 
                      "_score: dev" ] 
  } 
} 
这个grok模式
“%%{IP:client}%{WORD:method}%{WORD:service}%{URIPATHPARAM:request}%{NUMBER:duration}”
在分析提供的日志行时出错。grok模式将在正则表达式中转换,日志行将与正则表达式匹配;如果正则表达式与日志行不匹配,您将得到
\u grokparsefailure
。这意味着基本模式的顺序很重要

因为你没有说你想从日志行中获得什么信息,所以我提取了一些看起来很重要的部分:

  grok { 
    match => { 
      "message" => "^%{TIMESTAMP_ISO8601:date}  \[traceID \: %{DATA:traceID}  spanID\: %{DATA:spanID} parent\: %{DATA:parent}\] service \: %{WORD:service}  \[%{DATA:thread}\] %{DATA:message}$"
    }
  }
这将提取这些值:

parent  
spanID      46072cedb98568e3
service     networkService
thread      XNIO-2·task-1
date        2018-12-10·14:50:01,497
message     org.mongodb.driver.connection - Opened connection [connectionId{localValue:2, serverValue:3209}] to 192.168.0.207:27017
traceID     46072cedb98568e3 

WGSSAMINTHA,您想从日志中提取什么作为信息?同时,为了帮助您,您可以使用,这是编写模式的一个很好的资源。@StephenC从哪里获得的?我在原来的问题中没有看到。(我很惊讶看到一个高代表性的用户做了这样的事情,我认为这是一个错误。)这是在评论中。@StephenC Ok。很公平。谢谢你的帮助,但还是有同样的问题。实际上,我想通过格式化日志消息来快速搜索kibana中的日志。@WGSSAMINTHA要格式化日志消息,必须将该部分放入字段(例如grok),然后在输出中使用。