Чтобы настроить Filebeat для отправки многострочных записей в Logstash, нужно воспользоваться функцией многострочной обработки, которая позволяет группировать строки лога в одно событие на основе заданных паттернов.
Конфигурация зависит от версии Filebeat, но для большинства версий сделать это можно внутри файла `filebeat.yml`. Ниже я представлю пример конфигурационного блока `filebeat.inputs`, который будет правильно обрабатывать многострочные события между "START ---" и "--- END":
```yaml
filebeat.inputs:
- type: log
paths:
- /path/to/your/logs/*.log
multiline.pattern: '^START\ \-\-\-'
multiline.negate: true
multiline.match: after
multiline.flush_pattern: '^\-\-\-\ END'
```
Давайте разберем эту конфигурацию:
- `paths`: содержит пути к файлам логов, которые Filebeat должен собирать.
- `multiline.pattern`: содержит регулярное выражение, которое указывает на начало нового многострочного события. В этом случае мы ищем строки, которые начинаются с "START ---".
- `multiline.negate`: если установлено в `true`, событие начнется при обнаружении строки, которая не соответствует шаблону; `false`, наоборот, если строка совпадает с шаблоном.
- `multiline.match`: указывает, как должны быть объединены последующие строки после обнаружения начала события. Вариант `after` говорит, что строки должны быть добавлены к событию после шаблона `multiline.pattern`.
- `multiline.flush_pattern`: это паттерн, который указывает на окончание события, строки до этого паттерна будут считаться частью текущего многострочного события.
Обратите внимание, что в регулярных выражениях некоторые символы должны быть экранированы, как дефисы. В данном случае перед пробелами ставятся двойные обратные слеши, но это может меняться в зависимости от обрабатываемого текста (обычно одного обратного слеша достаточно для экранировки).
Если вы только конфигурируете Filebeat, не забудьте также настроить выход Logstash в `filebeat.yml`, чтобы данные были отправлены туда:
```yaml
output.logstash:
hosts: ["your-logstash-host:5044"]
```
Убедитесь, что Logstash слушает соответствующий порт и принимает события от Filebeat. Для этого Logstash должен иметь соответствующий input-конфиг.
После изменений конфигурации не забудьте перезапустить Filebeat, чтобы изменения вступили в силу.
В дополнение к указанному выше, обратите внимание, что работа с многострочными событиями может быть сильно зависимой от специфики ваших логов и требовать точной настройки регулярных выражений и параметров Filebeat, поэтому всегда стоит тестировать вашу конфигурацию в контролируемом окружении перед применением в продакшн.