ELK - Logstash - Шаблон GROK: из следующего журнала я хочу извлечь весь журнал, начиная с {@timestamp

13 июля 03:19:38 tciapp bw/[o:01E45HV1D7GGJQZ49AKS4NW7QV:o][a:bkwjui6nb6i3xdp6zjvncbk77ukuoghk:a][c:a188c69b8193:c]: { отметка времени: 1594610381, уровень приложения 7 INFO19, время: 413:019 : HZ3PLAUpdateService, apptype: bw, orgid: 01E45HV1D7GGJQZ49AKS4NW7QV, appid: bkwjui6nb6i3xdp6zjvncbk77ukuoghk, instance: a188c69b8193, message: [bwEngThread:In-Memory Process Worker-7] c.t.b.p.g.L.T.shared.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','значение':'0015011257'}]} }


person Pratik Sajjanwar    schedule 13.07.2020    source источник
comment
Я хочу вывести как {'@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-запрос для 0015011257','error.message':'','techem.pr.number':' 0015/011257','ключи':[{'ключ':'pr.number.key','значение':'0015011257'}]} }   -  person Pratik Sajjanwar    schedule 13.07.2020
comment
Я не могу создать шаблон Grok для того же. Пожалуйста помоги   -  person Pratik Sajjanwar    schedule 13.07.2020
comment
При использовании шаблона Grok (?‹log›{'@.*) я получил json как {log: [ [ {'@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-запрос для 0015011257 ','error.message':'','techem.pr.number':'0015/011257','keys':[{'key':'pr.number.key','value':'0015011257' }]} ] ] }   -  person Pratik Sajjanwar    schedule 13.07.2020
comment
Но я хочу, чтобы мой json начинался с {@timestamp   -  person Pratik Sajjanwar    schedule 13.07.2020


Ответы (1)


Пожалуйста, найдите часть фильтра для вашей конфигурации logstash:

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

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

Я использовал отладчик Grok, чтобы разбить сообщение журнала на две части. Вывод можно здесь. введите здесь описание изображения

Затем я использовал KV Filter, чтобы разделить поля с их значениями.

Вы можете попробовать его и проверить, работает он у вас или нет.

person Sourav Atta    schedule 13.07.2020