#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 благодарит Мику. обновил ответ новой ссылкой.