首页 > 解决方案 > ELK - Logstash - GROK 模式:从给定的以下日志中,我想提取从 {@timestamp 开始的所有日志

问题描述

7 月 13 日 03:19:38 tciapp bw/[o:01E45HV1D7GGJQZ49AKS4NW7QV:o][a:bkwjui6nb6i3xdp6zjvncbk77ukuoghk:a][c:a188c69b8193:c]: { "timestamp": 1594610381, "time": "03:40. ,“级别”:“INFO”,“appname”:“HZ3PLAUpdateService”,“apptype”:“bw”,“orgid”:“01E45HV1D7GGJQZ49AKS4NW7QV”,“appid”:“bkwjui6nb6i3xdp6zjvncbk77ukuoghk”,“instance”:“a188c69b8193”,“ message": "[bwEngThread:In-Memory Process Worker-7] ctbpgLTshared.LogInfo - {'@timestamp':'2020-07-13T03:19:41.012Z','client.domain':'E','techem .propertynumber':'0015011257','country':'DE','module':'HZ3_PLAUpdateService','log.level':'info','message':'Finished HZ3PLAUpdateService SOAP Request for 0015011257','error.message':'','techem.pr.number':'0015/011257','keys':[{'key':'pr.number .key','value':'0015011257'}]} " }

标签: logstashelastic-stackgrok

解决方案


请为您的 logstash 配置找到过滤器部分:

filter {
    grok {
      match => { "message" => "%{GREEDYDATA:logs} \- \{%{GREEDYDATA:KV}\} \"" }
      overwrite => [ "message" ]
          }

      kv {
           source => "KV"
           value_split => ":"
           field_split => ","
           target => "msg"
         }
  }

  我使用Grok Debugger将您的日志消息过滤成两部分。你可以在这里输出。 在此处输入图像描述

然后,我使用KV 过滤器将字段与它们的值分开。

你可以试试看它是否对你有用。


推荐阅读