Как прочитать пользовательский файл журнала с помощью filebeat, а также прочитать и создать визуализацию данных с помощью kibana

#elastic-stack #logstash-grok #filebeat #elk #kibana-7

Вопрос:

У меня есть акции.войдите следующим образом , я хочу прочитать и нарисовать график(визуализация кибаны ) для каждого из акций

 2021/06/13 17:58:42 :     INFO | Stock = TCS.NS,  Date = 2002-08-12
2021/06/13 17:58:42 :     INFO | Volume=212976
2021/06/13 17:58:42 :     INFO | Low=38.724998474121094
2021/06/13 17:58:42 :     INFO | High=40.0
2021/06/13 17:58:42 :     INFO | Open=38.724998474121094
2021/06/13 17:58:42 :     INFO | Close=39.70000076293945
2021/06/13 17:58:42 :     INFO | Stock = TCS.NS,  Date = 2002-08-13
2021/06/13 17:58:42 :     INFO | Volume=153576
2021/06/13 17:58:42 :     INFO | Low=38.875
2021/06/13 17:58:42 :     INFO | High=40.38750076293945
2021/06/13 17:58:42 :     INFO | Open=39.75
2021/06/13 17:58:42 :     INFO | Close=39.162498474121094
2021/06/13 17:58:42 :     INFO | Stock = TCS.NS,  Date = 2002-08-14
2021/06/13 17:58:42 :     INFO | Volume=822776
2021/06/13 17:58:42 :     INFO | Low=35.724998474121094
2021/06/13 17:58:42 :     INFO | High=39.25
2021/06/13 17:58:42 :     INFO | Open=39.25
2021/06/13 17:58:42 :     INFO | Close=36.462501525878906
 

Можно ли использовать filebeat-> Эластичный->> Кибана для этого варианта использования.
Я могу прочитать сообщение на акцию на дату как сообщение в эластичном формате.
Но не в состоянии анализировать данные и визуализировать их в кибане.

Я использовал следующее в конвейере приема, теперь я могу видеть правильно извлеченные поля

 [
  {
    "grok": {
      "field": "message",
      "patterns": [
        "%{GREEDYDATA:irrelevant_data}Stock = %{GREEDYDATA:Stock}n%{GREEDYDATA:irrelevant_data}Date = %{GREEDYDATA:Bdate}n%{GREEDYDATA:irrelevant_data}Volume=%{NUMBER:Volume}n%{GREEDYDATA:irrelevant_data}Low=%{BASE10NUM:Low}n%{GREEDYDATA:irrelevant_data}High=%{BASE10NUM:High}n%{GREEDYDATA:irrelevant_data}Open=%{BASE10NUM:Open}n%{GREEDYDATA:irrelevant_data}Close=%{BASE10NUM:Close}"
      ]
    }
  }
 

Проблема в том, что теперь дата отображается в виде строкового поля, не знаю, как преобразовать его в правильный формат даты.

Комментарии:

1. Спасибо Бар Азулаю , прямо сейчас мне удалось прочитать многострочное сообщение в одно сообщение, Для чтения сообщения в надлежащем индексе я пытаюсь использовать grok, для которого до сих пор не легче найти учебные пособия.

Ответ №1:

Есть несколько процессоров обработки файлов, о которых вы можете прочитать здесь: https://www.elastic.co/guide/en/beats/filebeat/master/filtering-and-enhancing-data.html

Но в целом, разбор журналов не входит в область filebeat, я рекомендую использовать для этого logstash.

Ответ №2:

Я думал , что это можно сделать с помощью Aggregate , но потом я понял, что в ваших журналах нет идентификаторов. Поэтому я думаю, что это очень хороший пример для многострочного модуля filebeat с использованием событий приложения, если я прав, начало ваших журналов должно быть INFO | Stock = и конец должен быть INFO | Close= . У них есть очень подходящий для этого случая. Это, кажется, соответствует вашим требованиям.

Ответ №3:

Да, это возможно. Я бы посоветовал вам отправить данные в Logstash из filebeat, так как в первом есть различные фильтры для обработки ваших данных, для которых вам будет проще создавать визуализации поверх них.

Итак, ваш раздел вывода будет выглядеть следующим образом:

       hosts: ["LOGSTASH_IP:PORT"]
      index: stocks-monitor