Прием логов 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).