Logstash - многострочные группы файлов FileBeat слишком много сообщений

Я настроил FileBeat для отправки многострочных журналов, используя следующую конфигурацию:

-
  paths:
    - /opt/wls/domains/filename.log
  input_type: log
  document_type: log_doc
  multiline:
    pattern: ^%{TIMESTAMP_ISO8601}
    negate: true
    match: after

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

В моем случае с этим параметром filebeat отправляет несколько сообщений журнала, сгруппированных по одному. Мои сообщения журнала начинаются следующим образом:

2016-10-14 20:31:07,447 INFO [ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)' ...

Он должен соответствовать ^%{TIMESTAMP_ISO8601}, так что может быть проблемой? Почему они отправляются как одно сообщение?

Спасибо.

PS Я тоже пробовал ^%{YYYY}и ^%{YEAR}шаблоны, но результат был тот же ...

elasticsearch,logstash,multiline,filebeat,

0

Ответов: 2


0 "> принят

Как написано в комментариях, FileBeat не поддерживает шаблоны grok. Я написал regexp вместо шаблона grok, и он работал хорошо. Поддерживаемые регулярные выражения можно найти здесь: https://www.elastic.co/guide/en/beats/filebeat/1.2/regexp-support.html и несколько многострочных примеров и советов в случае FileBeat можно найти здесь: https: //www.elastic.co/guide/en/beats/filebeat/1.2/multiline-examples.html


0

Очевидно, GROK не поможет и придется использовать Regex. То, что я сделал, было ниже, и это работает для меня,

filebeat.prospectors:

    - type: log

      enabled: true

      paths:
          - /xxx/server.log*

      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after

Здесь я просто ищу отметку времени в начале строки.

elasticsearch, logstash, многострочный, filebeat,
Похожие вопросы