Наблюдаемость приложения посредством внедрения во время сборки контейнера: различия между версиями

Материал из Документация Ключ-АСТРОМ
(Новая страница: «Внедрение модуля кода Ключ-АСТРОМ в контейнер во время процесса его сборки. Этот метод и...»)
(нет различий)

Версия 15:31, 11 ноября 2025

Внедрение модуля кода Ключ-АСТРОМ в контейнер во время процесса его сборки.

Этот метод инструментирования приложений имеет ограничения при связывании рабочих нагрузок Kubernetes с отслеживаемыми контейнерами/процессами. Для достижения корректных взаимодействий и связывания рассмотрите возможность использования автоматического внедрения только на уровне приложения.

Предустановка

  • Ознакомьтесь со списком поддерживаемых приложений и версий.
  • Создайте токен доступа с областью действия PaaS Integration - InstallerDownload.
  • Требования к хранению:
    • ~325 МБ для glibc
    • ~290 МБ для musl
    • ~650 МБ для glibc и musl вместе взятых
  • Для архитектуры ARM убедитесь, что установлены wget и unzip.
Внедрение во время сборки контейнера и cgroup v2

Если используется внедрение сборки контейнера с cgroup v2, builtin:containers.* метрики передаются в Ключ-АСТРОМ только в том случае, если модуль запускает один контейнер.

Развертка

Чтобы интегрировать ЕдиныйАгент в образ приложения, выполните следующие действия.

Kubernetes/OpenShift v4.0

1. Войдите в Docker, используя идентификатор среды Ключ-АСТРОМ в качестве имени пользователя и токен доступа в качестве пароля.

docker login -u <environmentID> -p <accessToken> <environmentURL>

2. Добавьте следующие строки кода в образ приложения после последней команды FROM:

COPY --from=<environment>/linux/oneagent-codemodules:<technology> / /

ENV LD_PRELOAD /opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so

  • <technology>— Модуль кода ЕдиногоАгента, необходимый для вашего приложения. Доступные варианты: all, java, apache, nginx, nodejs, dotnet, php, go и sdk. Вы можете указать несколько модулей кода, разделив их дефисом (-), например java-go. Включение поддержки отдельных технологий вместо поддержки всех технологических опций приводит к уменьшению размера пакета ЕдиногоАгента.
Ключ-АСТРОМ ЕдиныйАгент поддерживает среды на базе Alpine Linux.
COPY --from=<ACTIVEGATE-ADDRESS>/linux/oneagent-codemodules-musl:<TECHNOLOGY> / /

ENV LD_PRELOAD /opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so

Допустимые варианты: all, dotnet, php, java, apache, nginx, nodejs и go.

3. Создайте образ своего приложения.

Создайте образ Docker из Dockerfile для использования в среде Kubernetes.

docker build -t yourapp .
Вы можете контролировать контейнеры своих приложений с помощью другой среды Ключ-АСТРОМ.

Для ЕдиногоАгента версии 1.139+ Если у вас есть образ приложения, в который вы уже добавили модули кода ЕдиногоАгента для конкретной среды Ключ-АСТРОМ, вы можете настроить отправку ЕдиногоАгента в другую среду Ключ-АСТРОМ без пересборки образа приложения.

Для этого необходимо выполнить вызов конечной точки REST второй среды Ключ-АСТРОМ. Не забудьте адаптировать соответствующие плейсхолдеры <environmentID> и <token>.

curl "https://<environmentID>.live.dynatrace.com/api/v1/deployment/installer/agent/connectioninfo?Api-Token=<token>"


В ответ вы получаете JSON-объект, содержащий необходимую информацию, которую необходимо передать в качестве переменной среды контейнеру приложения.

Убедитесь, что переменные среды контейнера приложения настроены так, как описано ниже:

  • DT_TENANT: равно tenantUUID
  • DT_TENANTTOKEN: равно tenantToken
  • DT_CONNECTION_POINT: список communicationEndpoints, разделенный точкой с запятой

4. необязательно Настройка сетевых зон

Вы можете настроить сетевые зоны как переменную среды:

  • DT_NETWORK_ZONE: равно your.network.zone

Более подробную информацию смотрите в разделе Сетевые зоны.

5. необязательно Настройка прокси-адреса

Если вы запускаете среду с прокси-сервером, вам необходимо установить переменную среды DT_PROXY в контейнере приложения, чтобы передать учетные данные прокси-сервера в ЕдиномАгенте.

OpenShift v3.11

1. Определите переменные с необязательными значениями по умолчанию, используя инструкции ARG, как показано ниже.

ARG DT_API_URL="https://<environmentID>.live.dynatrace.com/api"

ARG DT_PAAS_TOKEN="<token>"

ARG DT_ONEAGENT_OPTIONS="flavor=default&include=<technology1>&include=<technology2>"

ENV DT_HOME="/opt/dynatrace/oneagent"

  • Вы можете переопределить значения по умолчанию в OpenShift BuildConfig. Замените <environmentID> на идентификатор вашей среды Ключ-АСТРОМ. Если вы используете Ключ-АСТРОМ Managed, необходимо указать URL-адрес вашего сервера Ключ-АСТРОМ (https://<YourDynatraceServerURL>/e/<environmentID>/api). Замените <token> на токен PaaS, указанный выше.
  • Поддержка технологий включается с помощью параметров include. Допустимые параметры flavor=default: all, java, apache, nginx, nodejs, dotnet, php, go и sdk. Включение отдельных вариантов поддержки технологий вместо поддержки всех технологических вариантов приводит к уменьшению размера пакета ЕдиногоАгента.
Ключ-АСТРОМ ЕдиныйАгент поддерживает среды на базе Alpine Linux.
COPY --from=<ACTIVEGATE-ADDRESS>/linux/oneagent-codemodules-musl:<TECHNOLOGY> / /

ENV LD_PRELOAD /opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so

Допустимые варианты: all, dotnet, php, java, apache, nginx, nodejs и go.

2. Добавьте следующие команды в текущий Dockerfile для интеграции ЕдиногоАгента и активации инструментария вашего приложения.

ARG DT_API_URL="https://<environmentID>.live.dynatrace.com/api"

ARG DT_API_TOKEN="<token>"

ARG DT_ONEAGENT_OPTIONS="flavor=default&include=<technology1>&include=<technology2>"

ENV DT_HOME="/opt/dynatrace/oneagent"

RUN mkdir -p "$DT_HOME" && \

    wget -O "$DT_HOME/oneagent.zip" "$DT_API_URL/v1/deployment/installer/agent/unix/paas/latest?Api-Token=$DT_API_TOKEN&$DT_ONEAGENT_OPTIONS" && \

    unzip -d "$DT_HOME" "$DT_HOME/oneagent.zip" && \

    rm "$DT_HOME/oneagent.zip"

ENV LD_PRELOAD="/opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so"

ARGT_ONEAGENT_OPTIONS="flavor=default&include=<technology1>&include=<technology2>"

ENV DT_HOME="/opt/dynatrace/oneagent"

RUN mkdir -p "$DT_HOME" && \

    wget -O "$DT_HOME/oneagent.zip" "$DT_API_URL/v1/deployment/installer/agent/unix/paas/latest?Api-Token=$DT_API_TOKEN&$DT_ONEAGENT_OPTIONS" && \

    unzip -d "$DT_HOME" "$DT_HOME/oneagent.zip" && \

    rm "$DT_HOME/oneagenzip"

ENV LD_PRELOAD="/opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so"

Вышеприведенные команды, которые используют wget и unzip могут не работать, если они не предусмотрены базово.

3. Создайте образ своего приложения.

В контексте OpenShift указанный выше Dockerfile можно использовать для двоичных сборок следующим образом:

oc new-build --binary --strategy=docker --allow-missing-images yourapp

oc patch bc/yourapp --type=json --patch='[{"op":"remove","path":"/spec/strategy/dockerStrategy/from"}]'

oc start-build yourapp --from-dir=. --follow

Вы можете контролировать контейнеры своих приложений с помощью другой среды Ключ-АСТРОМ.

Для ЕдиногоАгента версии 1.139+ Если у вас есть образ приложения, в который вы уже добавили модули кода ЕдиногоАгента для конкретной среды Ключ-АСТРОМ, вы можете настроить отправку ЕдиногоАгента в другую среду Ключ-АСТРОМ без пересборки образа приложения.

Для этого необходимо выполнить вызов конечной точки REST второй среды Ключ-АСТРОМ. Не забудьте адаптировать соответствующие плейсхолдеры <environmentID> и <token>.

curl "https://<environmentID>.live.dynatrace.com/api/v1/deployment/installer/agent/connectioninfo?Api-Token=<token>"


В ответ вы получаете JSON-объект, содержащий необходимую информацию, которую необходимо передать в качестве переменной среды контейнеру приложения.

Убедитесь, что переменные среды контейнера приложения настроены так, как описано ниже:

  • DT_TENANT: равно tenantUUID
  • DT_TENANTTOKEN: равно tenantToken
  • DT_CONNECTION_POINT: список communicationEndpoints, разделенный точкой с запятой

4. необязательно Настройка сетевых зон

Вы можете настроить сетевые зоны как переменную среды:

  • DT_NETWORK_ZONE: равно your.network.zone

Более подробную информацию смотрите в разделе Сетевые зоны.

5. необязательно Настройка прокси-адреса

Если вы запускаете среду с прокси-сервером, вам необходимо установить переменную среды DT_PROXY в контейнере приложения, чтобы передать учетные данные прокси-сервера в ЕдиномАгенте.

ARM

  1. Установите следующие переменные времени сборки:
    • $DT_API_URL (URL-адрес API вашей среды Ключ-АСТРОМ)
    • $DT_PAAS_TOKEN (PaaS-токен для загрузки модулей кода)
    • $DT_ONEAGENT_TECHNOLOGY (Модуль, который загружается, например php)
  2. Добавьте следующие команды в Dockerfile:
RUN mkdir -p /opt/dynatrace/oneagent && ARCHIVE=$(mktemp) && wget -O $ARCHIVE "$DT_API_URL/v1/deployment/installer/agent/unix/paas/latest?Api-Token=$DT_PAAS_TOKEN&flavor=default&arch=arm&include=$DT_ONEAGENT_TECHNOLOGY" && unzip -o -d /opt/dynatrace/oneagent $ARCHIVE && rm -f $ARCHIVE

ENV LD_PRELOAD /opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so

Обновление

Вам необходимо вручную обновлять ЕдиныйАгент, перестраивая образ контейнера каждый раз, когда требуется новая версия модуля кода.

Удаление

Чтобы удалить ЕдиныйАгент из мониторинга приложений

Многоэтапные сборки образов Docker

1. Удалите две строки кода из образа приложения.

COPY --from=<ACTIVEGATE-ADDRESS>/linux/oneagent-codemodules:<TECHNOLOGY> / /

ENV LD_PRELOAD /opt/dynatrace/oneagent/agent/lib64/liboneagentproc.so

2. Перестройте образ приложения.

docker build -t yourapp .

Классическая интеграция

1. Удалите следующие команды из вашего Dockerfile.

ARG DT_API_URL="https://<environmentID>.live.dynatrace.com/api"

ARG DT_API_TOKEN="<token>"

ARG DT_ONEAGENT_OPTIONS="flavor=default&include=<technology1>&include=<technology2>"

ENV DT_HOME="/opt/dynatrace/oneagent"

RUN mkdir -p "$DT_HOME" && \

    wget -O "$DT_HOME/oneagent.zip" "$DT_API_URL/v1/deployment/installer/agent/unix/paas/latest?Api-Token=$DT_API_TOKEN&$DT_ONEAGENT_OPTIONS" && \

    unzip -d "$DT_HOME" "$DT_HOME/oneagent.zip" && \

    rm "$DT_HOME/oneagent.zip"

ENTRYPOINT [ "/opt/dynatrace/oneagent/dynatrace-agent64.sh" ]

CMD [ "executable", "param1", "param2" ] # the command of your application, for example, Java

2. Перестройте образ приложения.

docker build -t yourapp .