Многострочные шаблоны Filebeat не работают с filebeat.тип ввода: filestream

#filestream #filebeat

Вопрос:

Я столкнулся с проблемой многострочной обработки в Filebeat, когда filebeat.inputs: параметры указывают тип: поток файлов — журналы потока файлов не анализируются в соответствии с требованиями многострочного. узор: ‘^[[0-9]{4}-[0-9]{2}-[0-9]{2}’, в выводе я вижу, что строки не добавляются к строкам, создаются новые однострочные сообщения с отдельными строками из файла журнала.

Если вы укажете тип: вход в файл bat.входы: параметры, то все работает корректно, в соответствии с требованиями многострочности. узор: ‘^[[0-9]{4}-[0-9]{2}-[0-9]{2}’ — создается многострочное сообщение.

Что неправильно указано в моей конфигурации?

 filebeat.inputs:
 
     - type: filestream
 
       enabled: true
 
       paths:
         - C:logsGTTTL**.log
       fields_under_root: true
       fields:
         instance: xml
         system: ttl
         subsystem: GT
         account: abc
       multiline.type: pattern
       multiline.pattern: '^[[0-9]{4}-[0-9]{2}-[0-9]{2}'
       multiline.negate: true
       multiline.match: after
 

Ответ №1:

Чтобы заставить его работать, у вас должно быть что-то вроде этого:

 filebeat.inputs:
 
     - type: filestream
 
       enabled: true
 
       paths:
         - C:logsGTTTL**.log
       fields_under_root: true
       fields:
         instance: xml
         system: ttl
         subsystem: GT
         account: abc
       parsers:
         - multiline:
             type: pattern
             pattern: '^[[0-9]{4}-[0-9]{2}-[0-9]{2}'
             negate: true
             match: after
 

Есть 2 причины, по которым это работает:

  1. Общая документация на момент написания этой статьи, касающаяся многострочной обработки, не обновляется, чтобы отразить изменения, внесенные для типа fileinputstream. Вы можете найти информацию о настройке многострочного потока ввода файлов в разделе синтаксические анализаторы на этой странице: https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-filestream.html
  2. Документация, о которой я только что упомянул выше, также неверна (по крайней мере, на момент написания этой статьи). В примере показана настройка многострочных анализаторов без отступов его дочерних элементов, что не будет работать, так как анализатор не инициализирует ни одно из значений под ним. Этот вопрос также обсуждается здесь: https://discuss.elastic.co/t/filebeat-filestream-input-parsers-multiline-fails/290543/13 и я ожидаю, что это будет исправлено когда-нибудь в будущем.