Fluentd: несколько форматов в одном совпадении

#match #fluent #fluentd

#совпадение #свободно #fluentd

Вопрос:

Я новичок в Fluentd. У меня есть одна проблема, связанная с <match> тегом и его форматом. Например

  • Наша система возвращает 2 разных формата: format1 и format2 с одним и тем же тегом: tag
  • Используя fluent.conf, мы можем перехватить предоставленный тег, но не можем разделить эти два формата

Я попробовал fluent-plugin-multi-format-parser, но он не позволяет мне добавлять префиксы.

 <match tag>
    @type parser
    format multi

    <pattern>
         format format1
         add_prefix pattern1
         ... 
    </pattern> 

    <pattern>
         format format2
         add_prefix pattern2
         ... 
    </pattern>
</match>
  

Есть ли какое-либо обходное решение для этого?

Ответ №1:

Я думаю, что ответ в этом разговоре Google Groups имеет решение:

В частности (если ссылка не работает и для экономии времени для тех, кто менее заинтересован):

Для ваших целей вы можете использовать copy плагин. Скопируйте все сообщение, а затем отфильтруйте, как:

 <match tag>
  type copy
  <store>
    type grep
    input_key format_type
    regexp pattern1
    add_tag_prefix pattern1
  </store>
  <store>
    type grep
    input_key format_type
    regexp pattern2
    add_tag_prefix pattern2
  </store>
</match>
<match pattern1.tag>
</match>
<match pattern2.tag>
</match>
  

Ключ input_key должен быть ключом для запуска регулярного выражения.

Ответ №2:

Вы можете использовать ‘rewrite_tag_filter’

https://docs .fluentd.org/output/rewrite_tag_filter#configuration-example