не удается правильно использовать grok filter для поиска полезной информации из моего файла журнала, который нужно вставить в elastic search: logstash

#logstash #kibana #logstash-grok #elk

#logstash #kibana #logstash-grok #elk

Вопрос:

Я впервые использую grok filter, для чего я хочу извлечь полезные ключи из своего журнала.Я не могу создать шаблон grok.

У меня есть доступ.файл журнала и я использую logstash для размещения данных журнала в elsticsearch.

Пример журнала

 September 6th 2020, 10:30:37:759 am [f657a07c-8c62-46ee-78a3-e7c2a04328b0] info: authentication successful...
September 6th 2020, 10:30:38:179 am [f657a07c-8c62-46ee-78a3-e7c2a04328b0] info: external apiresponse time: 3 ms
September 6th 2020, 10:30:49:200 am [f657a07c-8c62-46ee-78a3-e7c2a04328b0] info: {"path":"/route1","originalUrl":"/media/auth/route1?id=601amp;userId=9e2681-a188-4978-94b0-04c1d50ad056","timestamp":1599368449200,"uuid":"f657a07c-8c62-46ee-88a3-e7c3a04328b0","responseCode":"200","responseTime":11455,"externalCalls":[{"type":"apis","status":"success","timeTaken":2167},{"type":"pdf-generate-time","status":"success","timeTaken":5302},{"type":"pdf-upload-s3","status":"success","timeTaken":1146}]}
  

Я только хочу обработать {«путь»: ……..} это извлечь в elastic search и извлечь все ключи в виде поля в elastic.

мой файл logstash conf —

 {
 grok {
   match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log-level} [%{DATA:class}]:%{GREEDYDATA:message}" }
  }
}

  

Ответ №1:

если формат журнала всегда одинаков, вы можете использовать этот шаблон: info: %{GREEDYDATA:text}$

В ваших примерах будет создано поле с именем text со следующими значениями:

 authentication successful...
external apiresponse time: 3 ms
{"path":"/route1","originalUrl":"/media/auth/route1?id=601amp;userId=9e2681-a188-4978-94b0-04c1d50ad056","timestamp":1599368449200,"uuid":"f657a07c-8c62-46ee-88a3-e7c3a04328b0","responseCode":"200","responseTime":11455,"externalCalls":[{"type":"apis","status":"success","timeTaken":2167},{"type":"pdf-generate-time","status":"success","timeTaken":5302},{"type":"pdf-upload-s3","status":"success","timeTaken":1146}]}
  

Затем вы можете использовать фильтр json для его анализа.