processor
Процессор JSON
Процессор json извлекает значения из полей событий, содержащих данные в формате JSON, с помощью выражений GJSON.
Конфигурация
processors:
- module: json
patterns:
- expr: "<GJSON-выражение>"
from: "<поле-источник>"
to: "<целевое-поле>"
value-type: "<тип-значения>"
unquote: true|false
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
expr | string | — | Выражение GJSON для извлечения значения. Специальное значение * включает режим полного разбора JSON (см. ниже) |
from | string | Raw | Поле события, содержащее исходный JSON |
to | string | нормализованное from | Целевое поле, в которое будет записано извлечённое значение. Автоматически нормализуется в PascalCase |
value-type | string | автоопределение | Тип данных извлечённого значения (string, int, int64, uint64, float64, bool, ip, time и др.) |
unquote | bool | false | Снять экранирование строки (обработка \" → ") перед разбором 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.ID | 116307482565223 |
ECS.Source.IP | 192.168.1.10 |
ECS.Source.Port | 32876 |
ECS.Event.Severity | 2 |
Полный разбор JSON-документа
processors:
- module: json
patterns:
- expr: "*"
В этом случае все ключи JSON автоматически преобразуются в поля события. Вложенные объекты раскрываются рекурсивно.