Расширение данных

Материал из Документация Ключ-АСТРОМ

В отличие от автоматического сбора данных с помощью ЕдиногоАгента, данные, отправляемые напрямую в АктивныйШлюз (например, API сбора данных), не дополняются автоматически информацией о хосте. Это может повлечь за собой дополнительные расходы, поскольку не будут учитываться возможные квоты DDU .

Различные варианты развертывания Ключ-АСТРОМ предоставляют несколько свойств в стиле Java и JSON-файлов с наборами атрибутов, которые можно использовать для обогащения запросов к Ключ-АСТРОМ и обеспечения возможности Ключ-АСТРОМ сопоставлять данные с вашей инфраструктурой.

Директория расширения

Ключ-АСТРОМ использует следующие директории для предоставления файлов .json и .properties с данными обогащения:

  • В Unix: /var/lib/astromkey/enrichment
  • В Windows: %ProgramData%\astromkey\enrichment

Ключ-АСТРОМ ЕдиныйАгент

Стандартная настройка ЕдиныйАгент предоставляет следующие файлы с подробностями, специфичными для хоста, в директории расширения:

  • dt_host_metadata.json
  • dt_host_metadata.properties

Оба файла содержат один и тот же набор атрибутов ресурсов уровня хоста, которые ЕдиныйАгент использует для расширения артефактов мониторинга для данного хоста. Сюда также входят теги «ключ-значение» и свойства, заданные через oneagentctl или через удалённое управление конфигурацией.

Если вы предоставляете телеметрические данные через каналы, отличные от ЕдиногоАгента (например, используя OpenTelemetry), важно вручную дополнить ваши телеметрические данные этими атрибутами, чтобы обеспечить правильную ассоциацию с хостом.

Для получения дополнительной информации см. раздел Атрибуты ресурсов уровня хоста.

Пример загрузки JSON-файла см. в примере Python ниже.

Operator Ключ-АСТРОМ Kubernetes

Следующие файлы доступны в директории расширения, если включено расширение метаданных.

  • dt_metadata.json
  • dt_metadata.properties

Оба файла содержат одни и те же данные в разных форматах. Пример загрузки JSON-файла см. в примере Python ниже.

Инструкции по настройке см. в руководстве по настройке каталога обогащения .

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

Виртуальные файлы ЕдиногоАгента

Когда ЕдиногоАгента отслеживает ваше приложение, ваше приложение также может получить доступ к следующим виртуальным файлам:

  • dt_metadata_e617c525669e072eebe3d0f08212e8f2.json
  • dt_metadata_e617c525669e072eebe3d0f08212e8f2.properties

Эти файлы не привязаны к каталогу обогащения и физически не существуют в вашей файловой системе, а предоставляются инструментами ЕдиногоАгента. Оба файла возвращают одни и те же данные, а расширение файла (.json / .properties) определяет только формат выходных данных.

В контексте оператора Kubernetes виртуальный файл также содержит атрибуты файлов dt_metadata.{json,properties}.

Как получить доступ к виртуальным файлам

  1. Используйте стандартную функцию чтения файлов вашей языковой платформы, чтобы открыть и прочитать один из этих файлов:
    • dt_metadata_e617c525669e072eebe3d0f08212e8f2.json
    • dt_metadata_e617c525669e072eebe3d0f08212e8f2.properties Выбранное вами расширение файла имеет значение для шага 4. Используйте только имя файла и не указывайте дополнительный путь.
  2. Содержимое файла представляет собой одну текстовую строку с абсолютным путем к файлу (считайте это временным значением и не сохраняйте, не сохраняйте и не кэшируйте этот путь для использования в будущем).
  3. Откройте файл по пути, полученному на предыдущем шаге, и прочитайте все его содержимое.
  4. Формат содержимого, полученного в результате предыдущего чтения, будет соответствовать расширению файла, выбранному вами на шаге 1 (свойства в стиле Java или JSON).

Если на шаге 1 возвращается ошибка «файл не найден», убедитесь, что ваше приложение инструментируется ЕдинымАгентом.

Ограничения

  • Поддерживается для процессов полного стека и процессов, отслеживаемых только приложениями.
  • stat и другие if (exists) проверки для этих файлов не пройдены. Эти проверки не требуются для работы механизма.
  • syscalls используемые напрямую для доступа к файлам, не поддерживаются. Это также означает, что приложения на Go, используемые для сбора метрик, не поддерживаются, если вы не используете ЕдиныйАгент SDK, как описано в статье Инструментирование вашего приложения Go с помощью OpenTelemetry.

Пример на Python

В следующем примере показано, как загрузить информацию об расширении в формате JSON в Python на Unix.

# Initialize dictionary variable

enrich_attrs = dict()

# Iterate over the potential data files and try reading them

for name in ["dt_metadata_e617c525669e072eebe3d0f08212e8f2.json", "/var/lib/astromkey/enrichment/dt_metadata.json", "/var/lib/astromkey/enrichment/dt_host_metadata.json"]:

  try:

    data = ''

    with open(name) as f:

      data = json.load(f if name.startswith("/var") else open(f.read()))

      enrich_attrs.update(data)

  except:

    pass # An exception indicates the file was not available

# Use enrich_attrs here to enrich your requests to astromkey.

# For example, when instrumenting with OpenTelemetry, add the data as resource attributes.

В примере кода инициализируется пустой словарь для импортированных атрибутов. Затем он перебирает массив .json имён файлов и загружает содержимое каждого файла как JSON-документ, добавляя ключи в словарь. Исключения файлов указывают на недоступность конкретного файла и игнорируются.