Перейти к основному содержимому
Версия: 4.6.X

dissect

Процессор dissect

Процессор dissect разбирает текстовые поля событий по шаблону-токенизатору. В отличие от регулярных выражений, dissect использует позиционный подход с разделителями, что делает его быстрым и простым для структурированных строк с фиксированным форматом.

Синтаксис токенизатора совместим с Elasticsearch dissect.

Конфигурация

processors:
- module: dissect
tokenizer: "<шаблон>"
field: "<поле-источник>"
target_prefix: "<префикс>"
trim_chars: "<символы>"
trim_values: "<режим>"
ignore_failure: true|false
overwrite_keys: true|false
ПараметрТипПо умолчаниюОписание
tokenizerstringШаблон разбора с токенами %{имя_поля}
fieldstringRawПоле события для разбора
target_prefixstring""Префикс, добавляемый к именам извлечённых полей
trim_charsstring" " (пробел)Символы, которые нужно удалить при обрезке значений
trim_valuesstringnoneРежим обрезки значений: none, left, right, all
ignore_failureboolfalseИгнорировать ошибки разбора (событие продолжит обработку без извлечённых полей)
overwrite_keysboolfalseПерезаписывать существующие поля события

Синтаксис токенизатора

Шаблон состоит из литеральных строк-разделителей и токенов %{имя_поля}:

%{field1} %{field2} - %{field3}

Для строки "hello world - test" будет извлечено:

ПолеЗначение
field1hello
field2world
field3test

Пример

Разбор структурированной записи лога:

processors:
- module: dissect
tokenizer: "%{timestamp} %{level} [%{module}] %{message}"
field: Raw
target_prefix: "Log"
trim_values: all

Исходное событие:

2024-01-15T10:30:45Z INFO [auth] User login successful

Результат:

ПолеЗначение
Log.timestamp2024-01-15T10:30:45Z
Log.levelINFO
Log.moduleauth
Log.messageUser login successful