Преобразовать строку в JSON во FluentD

#json #parsing #fluentd

#json #синтаксический анализ #fluentd

Вопрос:

У меня есть эта строка журнала:

 2019-03-18 15:56:57.5522 | HandFarm | ResolveDispatcher | start resolving msg: 8
  

Пожалуйста, скажите мне, как я могу преобразовать эту строку в формат JSON в fluentd.conf? Мне нужен следующий формат:

 {
  "timestamp"  : "2019-03-18 15:56:57.5522",
  "system"  : "HandFarm",
  "module": "ResolveDispatcher",
  "message": "start resolving msg: 8",
}
  

Я пытался использовать стандартные форматы, из этого ничего не вышло..

Ответ №1:

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

 <source>
  @type tail
  path /tailsource/t.log
  pos_file /tailpos/t.log.pos
  read_from_head true
  tag temp
  <parse>
    @type regexp
    expression /^(?<timestamp>.*?)s| (?<system>.*?)s| (?<module>.*?)s| (?<message>.*)$/
  </parse>
</source>

<match>
  @type stdout
</match>
  

Вот пример вывода —

{«временная метка»:»2019-03-18 15:56:57.5522″,» system»:»HandFarm», «module»: «ResolveDispatcher», «message»: «начать разрешать сообщение msg: 8»}

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

1. Для меня это не имеет смысла. Где здесь находится конфигурация JSON?

2. @shadfc Я полагаю, что анализатор по умолчанию форматирует ее в JSON. Я пытаюсь найти документацию, которая может поддержать это, но пока не могу ее найти.

3. Эта ссылка содержит документы. fluentd.org/parser/regexp описывает плагин для синтаксического анализа регулярных выражений

4. @MikaRiekkinen благодарит Мику. обновил ответ новой ссылкой.