Logstash 如何为json编写grok表达式

Logstash 如何为json编写grok表达式,logstash,logstash-grok,Logstash,Logstash Grok,您好,有人能帮我写一篇关于这个json的文章吗 { "loggerFqcn":"org.apache.commons.logging.impl.SLF4JLocationAwareLog", "level":"INFO", "endOfBatch":true, "thread":"[cridtest].HTTP_Listener_Configuration.worker.01", "message":"[[Application = CorrelationID

您好,有人能帮我写一篇关于这个json的文章吗

{  
   "loggerFqcn":"org.apache.commons.logging.impl.SLF4JLocationAwareLog",
   "level":"INFO",
   "endOfBatch":true,
   "thread":"[cridtest].HTTP_Listener_Configuration.worker.01",
   "message":"[[Application = CorrelationID PoC]  [serverTime=2017-10-20T11:43:06.932-04:00] [CorrelationID = 5dec5af0-b5ad-11e7-b80d-f8597191971c] ]",
   "threadPriority":5,
   "threadId":88,
   "@timestamp":"2017-10-20T15:43:07.143Z",
   "port":60797,
   "@version":"1",
   "host":"73.132.64.252",
   "loggerName":"org.mule.api.processor.LoggerMessageProcessor",
   "timeMillis":1508514186945
}

您可以使用此图案生成器:

https://grokdebug.herokuapp.com/
示例
Grok模式

{%{QS}:%{QS}, %{QS}:%{QS}, %{QS}:true, %{QS}:%{QS}, %{QS}:%{QS}, %{QS}:5, %{QS}:88, %{QS}:%{QS}, %{QS}:60797, %{QS}:%{QS}, %{QS}:%{QS}, %{QS}:%{QS}, %{QS}:1508514186945}

如果该JSON实际上是格式良好的,那么使用
JSON{}
过滤器来解析它会更好。假设在
消息
字段中出现该消息:

filter {
  json {
    source => "message"
    target => "json_data"
  }
}
这将把解析后的数据结构作为子字段转储到
json_data
字段下。您可以使用稍后的
mutate{}
filter调用删除不需要的字段,或者将它们定位到事件的不同部分

filter {
  mutate {
    add_field    => { "host" => "%{json_data.host}" }
    remove_field => [ "json_data.host" ]
  }
}

这将把编码的
主机
移到事件的顶部。

按照sysadmin1138的建议,使用json过滤器/编解码器会更好。它将更容易,更不易碎。
filter {
  mutate {
    add_field    => { "host" => "%{json_data.host}" }
    remove_field => [ "json_data.host" ]
  }
}