Обработка JSON-логов с неэкранированными вложенными JSON-строками: различия между версиями

Материал из Документация Ключ-АСТРОМ
Новая страница: « = Обработка JSON-логов с неэкранированными вложенными JSON-строками = '''Версия Ключ-АСТРОМ''' 1.331+ Предварительная обработка '''JSON'''-логов обнаруживает escape-символы в строках '''JSON''' и преобразует их в структурированные объекты '''JSON''' для дальнейшей обработки и...»
 
 
Строка 3: Строка 3:
'''Версия Ключ-АСТРОМ''' 1.331+
'''Версия Ключ-АСТРОМ''' 1.331+


Предварительная обработка '''JSON'''-логов обнаруживает escape-символы в строках '''JSON''' и преобразует их в структурированные объекты '''JSON''' для дальнейшей обработки и более глубокого анализа. После этого неэкранированное поле '''JSON''' можно запрашивать с помощью функций '''DQL''' <code>jsonField</code> и <code>jsonPath</code> для точного извлечения и фильтрации атрибутов логов.
Предварительная обработка '''JSON'''-логов обнаруживает escape-символы в строках '''JSON''' и преобразует их в структурированные объекты '''JSON''' для дальнейшей обработки и более глубокого анализа.  


== Преимущества ==
== Преимущества ==
Строка 47: Строка 47:
   "host.name": "app-server-01"
   "host.name": "app-server-01"
}</pre>
}</pre>
== Запрос неэкранированного JSON с помощью DQL ==
Вы можете запрашивать неэкранированное поле '''JSON''' для точного извлечения и фильтрации атрибутов логов с помощью следующих функций '''DQL''':
* Функция <code>jsonField</code> для извлечения значения по его фактическому имени. Вот пример извлечения <code>loglevel</code> с помощью <code>jsonField</code>:
<pre>fetch logs
| fieldsAdd logLevel = jsonField(content, "loglevel")
| filter logLevel == "ERROR"</pre>
* Функция <code>jsonPath</code> для извлечения значения по выражению '''JSONPath'''. Вот пример извлечения <code>eventType</code> с помощью <code>jsonPath</code>:
<pre>fetch logs
| fieldsAdd eventType = jsonPath(content, "$.event.type")
| filter eventType == "db_error"</pre>


== Некорректный JSON ==
== Некорректный JSON ==
Раскрытие — например, удаление обратного слэша — пропускается, если '''JSON''' некорректен. Исходное содержимое сохраняется.
Раскрытие — например, удаление обратного слэша — пропускается, если '''JSON''' некорректен. Исходное содержимое сохраняется.

Текущая версия от 17:44, 22 октября 2026

Обработка JSON-логов с неэкранированными вложенными JSON-строками

Версия Ключ-АСТРОМ 1.331+

Предварительная обработка JSON-логов обнаруживает escape-символы в строках JSON и преобразует их в структурированные объекты JSON для дальнейшей обработки и более глубокого анализа.

Преимущества

Предварительная обработка JSON-логов даёт следующие преимущества:

  • Упрощённые запросы и визуализации вложенных JSON-логов.
  • Автоматическая обработка экранированных строк JSON.
  • Отсутствие необходимости в разборе экранированных строк JSON.

Примечания по конфигурации

  • Версия Ключ-АСТРОМ 1.331+: предварительная обработка JSON-логов включена по умолчанию для сред, созданных в версии 1.331+. Отключить или настроить эту функцию невозможно.
  • Версия Ключ-АСТРОМ 1.330 и более ранние: предварительная обработка JSON-логов недоступна.

Раскрытие вложенных JSON-строк

Многие средства пересылки логов оборачивают исходное сообщение лога в строки JSON внутри поля content с escape-символами. Предварительная обработка JSON-логов выполняет следующие шаги:

  • Обнаруживает и раскрывает escape-символы в строке JSON.
  • Преобразует строки JSON в структурированные объекты JSON.

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

Пример до предварительной обработки

{
  "content": {
    "loglevel": "ERROR",
    "event": "{\"type\":\"db_error\",\"code\":\"CONN_FAIL\"}"
  },
  "source": "fluentbit",
  "host.name": "app-server-01"
}

Пример после предварительной обработки

{
  "content": {
    "loglevel": "ERROR",
    "event": {
      "type": "db_error",
      "code": "CONN_FAIL"
    }
  },
  "source": "fluentbit",
  "host.name": "app-server-01"
}

Некорректный JSON

Раскрытие — например, удаление обратного слэша — пропускается, если JSON некорректен. Исходное содержимое сохраняется.