многострочный шаблон ударов файла для соответствия тысячному слову - PullRequest
0 голосов
/ 23 марта 2020

Некоторая путаница здесь, когда я должен использовать многострочный шаблон filebeat для сбора c данных. Вопрос в том, как использовать несколько шаблонов? Вот что я сейчас использую

multiline.pattern : '^Select'

Так что для приведенного выше паттерна мы видим, что все слова в начале слова будут совпадать. Итак, мой вопрос, как насчет INSERT, UPDATE и DELETE word?

Также один вопрос я могу использовать нижеприведенный шаблон, чтобы указать конец многострочного соответствия?

multiline.flush_pattern: ';'

Любая идея или помощь высоко ценится

1 Ответ

0 голосов
/ 25 марта 2020

К первому вопросу:

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

multiline.pattern : '^(Select|INSERT|UPDATE|DELETE)

Символ канала (|) действует как оператор ИЛИ. Обратите внимание, что по умолчанию регулярное выражение учитывает регистр. Так, например, сообщения, начинающиеся с заглавной буквы SELECT, будут игнорироваться в приведенном выше примере.

На ваш второй вопрос:

Помимо multiline.pattern необходимо указать параметры multiline.match и multiline.negate:

  • multiline.match определяет, следует ли поместить строки журнала до или после шаблона в одно событие.

  • multiline.negate определяет, должны ли следующие строки соответствовать шаблону.

Таким образом, вместо указания конкретного конечного символа вы указываете Filebeat, что каждая строка журнала, соответствующая шаблону AND, следует за этой строкой, должна быть агрегирована, ДО следующей строки снова соответствует шаблону.

( См. https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html для полной ссылки и описания.

Пример:

Предполагается, что ваш файл журнала имеет следующую структуру:

Select foo from bar\n where baz = 1\n and id =4711;\n\n DELETE from bar\n where baz = null;\n\n INSERT ...

следующий конфиг должен выполнить эту работу:

multiline.pattern : '^(Select|INSERT|UPDATE|DELETE)' multiline.match: after multiline.negate: true

Я надеюсь, что смогу вам помочь.

...