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

processor

Процессор JSON

Процессор json извлекает значения из полей событий, содержащих данные в формате JSON, с помощью выражений GJSON.

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

processors:
- module: json
patterns:
- expr: "<GJSON-выражение>"
from: "<поле-источник>"
to: "<целевое-поле>"
value-type: "<тип-значения>"
unquote: true|false
ПараметрТипПо умолчаниюОписание
exprstringВыражение GJSON для извлечения значения. Специальное значение * включает режим полного разбора JSON (см. ниже)
fromstringRawПоле события, содержащее исходный JSON
tostringнормализованное fromЦелевое поле, в которое будет записано извлечённое значение. Автоматически нормализуется в PascalCase
value-typestringавтоопределениеТип данных извлечённого значения (string, int, int64, uint64, float64, bool, ip, time и др.)
unquoteboolfalseСнять экранирование строки (обработка \"") перед разбором JSON

Можно указать несколько элементов в массиве patterns — они применяются последовательно к одному событию.

Режим полного разбора (*)

Если в expr указать *, процессор разберёт весь JSON-документ и автоматически создаст поля события для каждого ключа. Это аналог конструкции json:all в интерфейсе плагинов.

processors:
- module: json
patterns:
- expr: "*"

В этом режиме параметры to и value-type игнорируются — типы определяются автоматически на основе структуры JSON.

Примеры

Выборочное извлечение полей

Исходное событие (поле Raw):

{"timestamp":"2024-01-15T10:30:00Z","flow_id":116307482565223,"src_ip":"192.168.1.10","src_port":32876,"alert":{"signature":"ET POLICY curl User-Agent","severity":2}}

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

processors:
- module: json
patterns:
- expr: "flow_id"
to: "ECS.Event.ID"
value-type: "string"
- expr: "src_ip"
to: "ECS.Source.IP"
value-type: "ip"
- expr: "src_port"
to: "ECS.Source.Port"
value-type: "uint64"
- expr: "alert.severity"
to: "ECS.Event.Severity"
value-type: "int"

Результат — в событие записаны поля:

ПолеЗначение
ECS.Event.ID116307482565223
ECS.Source.IP192.168.1.10
ECS.Source.Port32876
ECS.Event.Severity2

Полный разбор JSON-документа

processors:
- module: json
patterns:
- expr: "*"

В этом случае все ключи JSON автоматически преобразуются в поля события. Вложенные объекты раскрываются рекурсивно.