FilebeatMultiline: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показано 45 промежуточных версий этого же участника) | |||
Строка 10: | Строка 10: | ||
<BR> |
<BR> |
||
Скорее всего так же ведет себя и Logstash |
Скорее всего так же ведет себя и Logstash |
||
+ | ==TL;DR== |
||
+ | Самый ходовой случай - 3, подходит для большей части случаев |
||
+ | <PRE> |
||
+ | multiline.negate: true |
||
+ | multiline.match: after |
||
+ | </PRE> |
||
+ | |||
=Параметры= |
=Параметры= |
||
Параметры которые определяют поведение и их возможные значения: |
Параметры которые определяют поведение и их возможные значения: |
||
Строка 19: | Строка 26: | ||
** before |
** before |
||
** after |
** after |
||
+ | |||
+ | ==Append / Prepend== |
||
+ | |||
+ | * Append - добавить в конец |
||
+ | * Prepend - добавить в начало |
||
+ | |||
+ | =Тестовое окружение= |
||
+ | Для тестирования отправляю в Logstash а там сохраняю в файл, имя поля и фильтры по сути значения не имеют |
||
+ | <BR> |
||
+ | О тестовом окружении тут: https://noname.com.ua/mediawiki/index.php/Logstash |
||
+ | |||
+ | Отправка теста - добавляю в лог данные: |
||
+ | <PRE> |
||
+ | cat test-data.log >> /path/to/file/configured/in/filebeat.log |
||
+ | </PRE> |
||
=Случай 1= |
=Случай 1= |
||
Строка 24: | Строка 46: | ||
* multiline.negate = false |
* multiline.negate = false |
||
* multiline.match = after |
* multiline.match = after |
||
+ | ==Описание== |
||
− | |||
Consecutive lines that match the pattern are appended to the previous line that doesn’t match. <BR> |
Consecutive lines that match the pattern are appended to the previous line that doesn’t match. <BR> |
||
− | Последующие строки |
+ | Последующие строки соответствуют паттерну добавляются в конец к предыдущей строке которая не соответствует паттерну |
+ | <BR> |
||
Lines |
Lines |
||
<PRE> |
<PRE> |
||
Строка 38: | Строка 61: | ||
become <B>"abb"</B> and <B>"cbb"</B> |
become <B>"abb"</B> and <B>"cbb"</B> |
||
+ | ==Проверка на реальных данных== |
||
− | =Случай 2= |
||
+ | <PRE> |
||
− | * multiline.negate: false |
||
+ | D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 |
||
+ | D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 |
||
+ | Multiline 1 1 |
||
+ | Multiline 1 2 |
||
+ | Multiline 1 3 |
||
+ | D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 |
||
+ | Multiline 2 1 |
||
+ | Multiline 2 2 |
||
+ | Multiline 2 3 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3 |
||
+ | </PRE> |
||
+ | Перевод описания: <B>Последующие строки которые соответствуют паттерну добавляются к строки которая не соответствует паттерну.</B> |
||
+ | Результат теста (каждая строка это отдельное сообщение в logstash): |
||
− | before |
||
+ | <PRE> |
||
+ | "D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2\nD, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1" |
||
+ | "Multiline 1 1" |
||
+ | "Multiline 1 2" |
||
+ | "Multiline 1 3\nD, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2" |
||
+ | "Multiline 2 1" |
||
+ | "Multiline 2 2" |
||
+ | "Multiline 2 3\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3" |
||
+ | </PRE> |
||
+ | Т.е. соответствует ожидаемому. |
||
+ | Строки соответствуют паттерну - и они добавлены к (пустой - начало лога) строке, которая не соответствует паттерну |
||
− | Consecutive lines that match the pattern are prepended to the next line that doesn’t match. |
||
+ | <PRE>D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 |
||
+ | D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 |
||
+ | </PRE> |
||
+ | Строки не соответствующие паттерну - остаются как есть <BR> |
||
+ | Далее каждая строка соответствующая паттерну добавляется к следующей перед ней строке не соответствующей паттерну, как например |
||
+ | <PRE> |
||
+ | "Multiline 1 3\nD, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2" |
||
+ | </PRE> |
||
+ | где часть <B>"Multiline 1 3\n</B> это та строка К КОТОРОЙ добавляется, а строка <B>D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2"</B> это так которая добавляется. |
||
+ | <BR> |
||
+ | Где применить такую конфигурацию я не знаю. |
||
+ | |||
+ | =Случай 2= |
||
+ | * pattern = ^b |
||
+ | * multiline.negate: false |
||
+ | * multiline.match: before |
||
+ | |||
+ | Consecutive lines that match the pattern are prepended to the next line that doesn’t match. <BR> |
||
+ | <BR> |
||
Lines |
Lines |
||
<PRE> |
<PRE> |
||
+ | |||
b |
b |
||
b |
b |
||
Строка 55: | Строка 122: | ||
</PRE> |
</PRE> |
||
become <B>"bba"</B> and <B>"bbc"</B> |
become <B>"bba"</B> and <B>"bbc"</B> |
||
+ | ==Проверка на реальных данных== |
||
+ | <PRE> |
||
+ | D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 |
||
+ | D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 |
||
+ | Multiline 1 1 |
||
+ | Multiline 1 2 |
||
+ | Multiline 1 3 |
||
+ | D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 |
||
+ | Multiline 2 1 |
||
+ | Multiline 2 2 |
||
+ | Multiline 2 3 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3 |
||
+ | </PRE> |
||
+ | Перевод описания: <B>Последующие строки которые соответствуют паттерну добавляются к строке которая не соответствует паттерну.</B> |
||
+ | |||
+ | Результат теста (каждая строка это отдельное сообщение в logstash): |
||
+ | <PRE> |
||
+ | "D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2\nD, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1\nMultiline 1 1" |
||
+ | "Multiline 1 2" |
||
+ | "Multiline 1 3" |
||
+ | "D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2\nMultiline 2 1" |
||
+ | "Multiline 2 2" |
||
+ | </PRE> |
||
+ | По сравнению с предыдущим вариантом - разница только в том что сработает ли на текущей строке или следующей |
||
+ | <BR> |
||
+ | Этот вариант я тоже не знаю как применить. |
||
=Случай 3= |
=Случай 3= |
||
Строка 62: | Строка 156: | ||
Consecutive lines that don’t match the pattern are appended to the previous line that does match.<BR> |
Consecutive lines that don’t match the pattern are appended to the previous line that does match.<BR> |
||
− | Последующие строки которые НЕ соответствуют паттерну присоединяются к предыдущей строке которая НЕ соответствует паттерну |
||
Lines |
Lines |
||
<PRE> |
<PRE> |
||
Строка 73: | Строка 166: | ||
</PRE> |
</PRE> |
||
become <B>"bac"</B> and <B>"bde"</B> |
become <B>"bac"</B> and <B>"bde"</B> |
||
+ | ==Проверка на реальных данных== |
||
+ | <PRE> |
||
+ | D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 |
||
+ | D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 |
||
+ | Multiline 1 1 |
||
+ | Multiline 1 2 |
||
+ | Multiline 1 3 |
||
+ | D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 |
||
+ | Multiline 2 1 |
||
+ | Multiline 2 2 |
||
+ | Multiline 2 3 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3 |
||
+ | </PRE> |
||
+ | Перевод описания: <B>Последующие строки которые НЕ соответствуют паттерну присоединяются к предыдущей строке которая НЕ соответствует паттерну</B> |
||
+ | Результат теста (каждая строка это отдельное сообщение в logstash): |
||
− | =Случай 4= |
||
+ | <PRE> |
||
− | * multiline.negate: true |
||
+ | "D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1" |
||
+ | "E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2" |
||
+ | "D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1\nMultiline 1 1\nMultiline 1 2\nMultiline 1 3" |
||
+ | "D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2\nMultiline 2 1\nMultiline 2 2\nMultiline 2 3" |
||
+ | "E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3\n" |
||
+ | </PRE> |
||
+ | Самый ходовой случай |
||
+ | =Случай 4= |
||
− | before |
||
+ | * pattern = ^b |
||
+ | * multiline.negate: true |
||
+ | * multiline.match: before |
||
Consecutive lines that don’t match the pattern are prepended to the next line that does match.<BR> |
Consecutive lines that don’t match the pattern are prepended to the next line that does match.<BR> |
||
Строка 92: | Строка 210: | ||
</PRE> |
</PRE> |
||
become <B>"acb"</B> and <B>"deb"</B> |
become <B>"acb"</B> and <B>"deb"</B> |
||
+ | ==Проверка на реальных данных== |
||
+ | <PRE> |
||
+ | D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 |
||
+ | D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 |
||
+ | Multiline 1 1 |
||
+ | Multiline 1 2 |
||
+ | Multiline 1 3 |
||
+ | D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 |
||
+ | Multiline 2 1 |
||
+ | Multiline 2 2 |
||
+ | Multiline 2 3 |
||
+ | E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3 |
||
+ | </PRE> |
||
+ | <PRE> |
||
− | =Тестовые данные= |
||
+ | "D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1" |
||
+ | "D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1" |
||
+ | "Multiline 2 1\nMultiline 2 2\nMultiline 2 3\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3" |
||
+ | "E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2" |
||
+ | "Multiline 1 1\nMultiline 1 2\nMultiline 1 3\nD, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2" |
||
+ | </PRE> |
||
=Ссылки= |
=Ссылки= |
Текущая версия на 17:22, 10 августа 2021
Filebeat multiline
С этой темой вечная проблема - разобрался, настроил и забыл. Через пол года нужно разбираться заново, и что б сэкономить время решил сделать заметку.
Скорее всего так же ведет себя и Logstash
TL;DR
Самый ходовой случай - 3, подходит для большей части случаев
multiline.negate: true multiline.match: after
Параметры
Параметры которые определяют поведение и их возможные значения:
- multiline.negate
- true
- false
- multiline.match
- before
- after
Append / Prepend
- Append - добавить в конец
- Prepend - добавить в начало
Тестовое окружение
Для тестирования отправляю в Logstash а там сохраняю в файл, имя поля и фильтры по сути значения не имеют
О тестовом окружении тут: https://noname.com.ua/mediawiki/index.php/Logstash
Отправка теста - добавляю в лог данные:
cat test-data.log >> /path/to/file/configured/in/filebeat.log
Случай 1
- pattern = ^b
- multiline.negate = false
- multiline.match = after
Описание
Consecutive lines that match the pattern are appended to the previous line that doesn’t match.
Последующие строки соответствуют паттерну добавляются в конец к предыдущей строке которая не соответствует паттерну
Lines
a b b c b b
become "abb" and "cbb"
Проверка на реальных данных
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 Multiline 1 1 Multiline 1 2 Multiline 1 3 D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 Multiline 2 1 Multiline 2 2 Multiline 2 3 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3
Перевод описания: Последующие строки которые соответствуют паттерну добавляются к строки которая не соответствует паттерну.
Результат теста (каждая строка это отдельное сообщение в logstash):
"D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2\nD, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1" "Multiline 1 1" "Multiline 1 2" "Multiline 1 3\nD, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2" "Multiline 2 1" "Multiline 2 2" "Multiline 2 3\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3"
Т.е. соответствует ожидаемому.
Строки соответствуют паттерну - и они добавлены к (пустой - начало лога) строке, которая не соответствует паттерну
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1
Строки не соответствующие паттерну - остаются как есть
Далее каждая строка соответствующая паттерну добавляется к следующей перед ней строке не соответствующей паттерну, как например
"Multiline 1 3\nD, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2"
где часть "Multiline 1 3\n это та строка К КОТОРОЙ добавляется, а строка D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2" это так которая добавляется.
Где применить такую конфигурацию я не знаю.
Случай 2
- pattern = ^b
- multiline.negate: false
- multiline.match: before
Consecutive lines that match the pattern are prepended to the next line that doesn’t match.
Lines
b b a b b c
become "bba" and "bbc"
Проверка на реальных данных
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 Multiline 1 1 Multiline 1 2 Multiline 1 3 D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 Multiline 2 1 Multiline 2 2 Multiline 2 3 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3
Перевод описания: Последующие строки которые соответствуют паттерну добавляются к строке которая не соответствует паттерну.
Результат теста (каждая строка это отдельное сообщение в logstash):
"D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2\nD, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1\nMultiline 1 1" "Multiline 1 2" "Multiline 1 3" "D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2\nMultiline 2 1" "Multiline 2 2"
По сравнению с предыдущим вариантом - разница только в том что сработает ли на текущей строке или следующей
Этот вариант я тоже не знаю как применить.
Случай 3
- pattern = ^b
- multiline.negate = true
- multiline.match = after
Consecutive lines that don’t match the pattern are appended to the previous line that does match.
Lines
b a c b d e
become "bac" and "bde"
Проверка на реальных данных
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 Multiline 1 1 Multiline 1 2 Multiline 1 3 D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 Multiline 2 1 Multiline 2 2 Multiline 2 3 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3
Перевод описания: Последующие строки которые НЕ соответствуют паттерну присоединяются к предыдущей строке которая НЕ соответствует паттерну
Результат теста (каждая строка это отдельное сообщение в logstash):
"D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1" "E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2" "D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1\nMultiline 1 1\nMultiline 1 2\nMultiline 1 3" "D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2\nMultiline 2 1\nMultiline 2 2\nMultiline 2 3" "E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3\n"
Самый ходовой случай
Случай 4
- pattern = ^b
- multiline.negate: true
- multiline.match: before
Consecutive lines that don’t match the pattern are prepended to the next line that does match.
Lines
a c b d e b
become "acb" and "deb"
Проверка на реальных данных
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2 D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1 Multiline 1 1 Multiline 1 2 Multiline 1 3 D, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2 Multiline 2 1 Multiline 2 2 Multiline 2 3 E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3
"D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1" "D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1" "Multiline 2 1\nMultiline 2 2\nMultiline 2 3\nE, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 3" "E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2" "Multiline 1 1\nMultiline 1 2\nMultiline 1 3\nD, [2021-08-08T13:17:02.486820 #7] DEBUG -- Multiline 2"