FilebeatMultiline: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 37 промежуточных версий этого же участника)
Строка 10: Строка 10:
 
<BR>
 
<BR>
 
Скорее всего так же ведет себя и Logstash
 
Скорее всего так же ведет себя и Logstash
  +
==TL;DR==
  +
Самый ходовой случай - 3, подходит для большей части случаев
  +
<PRE>
  +
multiline.negate: true
  +
multiline.match: after
  +
</PRE>
  +
 
=Параметры=
 
=Параметры=
 
Параметры которые определяют поведение и их возможные значения:
 
Параметры которые определяют поведение и их возможные значения:
Строка 22: Строка 29:
 
==Append / Prepend==
 
==Append / Prepend==
   
Append - добавить в конец
+
* Append - добавить в конец
Prepend - добавить в начало
+
* 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=
Строка 31: Строка 48:
 
==Описание==
 
==Описание==
 
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>
Строка 42: Строка 60:
 
</PRE>
 
</PRE>
 
become <B>"abb"</B> and <B>"cbb"</B>
 
become <B>"abb"</B> and <B>"cbb"</B>
  +
 
==Проверка на реальных данных==
 
==Проверка на реальных данных==
cat tesing.log | jq .application_data.ruby.log_message
 
 
<PRE>
 
<PRE>
  +
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1
"Line 1"
 
  +
E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 2
"Line 2"
 
  +
D, [2021-08-08T13:17:02.484108 #7] DEBUG -- Multiline 1
"Multiline 1\nMultiline 1 1\nMultiline 1 2\nMultiline 1 3"
 
"Multiline 2\nMultiline 2 1\nMultiline 2 2\nMultiline 2 3"
+
Multiline 1 1
  +
Multiline 1 2
"Line 3"
 
  +
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>
  +
Перевод описания: <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"
  +
"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>
  +
Т.е. соответствует ожидаемому.
  +
  +
Строки соответствуют паттерну - и они добавлены к (пустой - начало лога) строке, которая не соответствует паттерну
  +
<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=
 
=Случай 2=
Строка 57: Строка 109:
 
* multiline.match: before
 
* multiline.match: before
   
Consecutive lines that match the pattern are prepended to the next line that doesn’t match.
+
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
Строка 69: Строка 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=
Строка 76: Строка 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>
Строка 87: Строка 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):
  +
<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\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=
 
=Случай 4=
Строка 105: Строка 210:
 
</PRE>
 
</PRE>
 
become <B>"acb"</B> and <B>"deb"</B>
 
become <B>"acb"</B> and <B>"deb"</B>
  +
==Проверка на реальных данных==
 
=Тестовые данные=
 
 
<PRE>
 
<PRE>
 
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1
 
D, [2021-08-08T13:17:02.482811 #7] DEBUG -- Line 1
Строка 119: Строка 223:
 
Multiline 2 3
 
Multiline 2 3
 
E, [2021-08-08T13:17:02.484029 #7] ERROR -- Line 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>
 
</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"

Ссылки