Прием логов OpenTelemetry
При приеме логов OpenTelemetry применяются следующие правила преобразования и ограничения приема.
Типы данных
Ключ-АСТРОМ поддерживает тип данных OpenTelemetry по умолчанию Any для приема данных, который может принимать любое из следующих значений:
- Скалярные значения (строки, числа, логические значения)
- Массивы
Any - Байтовые массивы
- Сопоставления со строковыми ключами и значениями
Any
Скалярное значение
Скалярные значения усваиваются в их строковом представлении.
| Тип | Данные | Принимается в виде |
|---|---|---|
| String | "hello world" | "hello world" |
| Number | 1234 | 1234 |
| Boolean | false | "false" |
Массив байтов
Массив байтов принимается как строка, закодированная в формате Base64. Например, следующий массив:
| [0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64] |
преобразуется и принимактся как aGVsbG8gd29yZA==.
Множество
Массив Any принимается как есть, но каждое значение преобразуется следующим образом:
- Скалярные значения усваиваются в их строковом представлении (см. скалярное значение (выше)).
- Массивы байтов обрабатываются как строки Base64 (см. массив байтов (выше)).
- Массивы
Anyи карты обрабатываются как строки, сериализованные в формате JSON (до пяти уровней).
Карта
Карты загружаются путем рекурсивного извлечения их ключей и сохранения значений в виде отдельных атрибутов с именами, отражающими их положение в иерархии карт и имеющими префикс в виде имени карты.
Например, эта карта атрибутов planet:
| {
"name": "earth" "system" : { "name": "solar", "galaxy": { "name": "milky way", "group": { "name": "local" } } } } |
это можно свести к четырем атрибутам:
| "planet.name": "earth"
"planet.system.name": "solar" "planet.system.galaxy.name": "milky way" "planet.system.galaxy.group.name": "local" |
- Скалярные значения усваиваются в их строковом представлении (см. скалярное значение (выше)).
- Массивы байтов обрабатываются как строки Base64 (см. массив байтов (выше)).
- Массивы
Anyобрабатываются как списки, а значения преобразуются в массивы. - Карты выравниваются, как описано выше (до пяти уровней).
Семантические атрибуты
Ключ-АСТРОМ автоматически распознает ряд имен атрибутов и сопоставляет их с соответствующими полями логов Ключ-АСТРОМ.
Например, если вы указываете атрибут Timestamp, его значение автоматически анализируется как дата и время этой записи логов.
Полный список атрибутов и их названий см. в разделе «Поддерживаемые семантические ключи атрибутов» в API мониторинг логов - POST прием логов.
Прием атрибутов
OpenTelemetry поддерживает атрибуты на разных уровнях в запросе логов OpenTelemetry, такие как атрибуты ресурсов, атрибуты области действия и атрибуты записи.
Поскольку на стороне Ключ-АСТРОМ атрибуты сохраняются в сжатом виде, могут возникать конфликты имён, если атрибуты на разных уровнях имеют одно и то же имя. Ключ-АСТРОМ решает эту проблему, добавляя к дублирующимся атрибутам префикс overwritten[COUNTER].. Значение счётчика показывает, сколько раз имя атрибута уже встречалось как дубликат.
Например, если у вас есть три атрибута, все из которых поименованы my.attribute на уровнях ресурса, области действия и логов:
- атрибут ресурса принимается как
my.attribute - атрибут области действия принимается как
overwritten1.my.attribute - атрибут логов принимается как
overwritten2.my.attribute
Ограничения в приеме
Информацию об ограничениях, применяемых к принятым запросам логов, их атрибутам и значениям, см. в разделах Ограничения по умолчанию для управления логов и аналитики и Ограничения по умолчанию для мониторинга логов (Logs Classic).