Мониторинг управляемого Google Cloud Run
Управляемый Google Cloud Run — это вычислительная платформа для запуска контейнеров в бессерверной среде. Для мониторинга сервисов, работающих на управляемом Google Cloud Run, с помощью Dynatrace необходимо интегрировать OneAgent в ваше контейнеризированное приложение.
Поддержка управляемого Cloud Run в средах выполнения первого и второго поколения в настоящее время ограничена Java и Node.js.
Интеграция Dynatrace в ваши контейнеры¶
Существует несколько способов сборки и развёртывания контейнеров в Cloud Run, например, с помощью Cloud Build.
Хотя инструкции по интеграции Dynatrace могут отличаться в зависимости от используемого технологического стека для сборки и развёртывания, интеграция Dynatrace в целом следует одному и тому же подходу:
- Добавьте необходимые бинарные файлы OneAgent в образ контейнера (например, загрузив их через REST API или скопировав из слоя образа OneAgent).
- Настройте OneAgent с необходимыми параметрами подключения и дополнительными опциями, такими как пользовательские теги.
- Включите внедрение в процесс для автоматической инструментации ваших рабочих нагрузок.
Предварительные требования¶
Перед началом работы необходимо выполнить следующее:
- Получите токен доступа для загрузки Dynatrace OneAgent с областью действия
InstallerDownload. Подробнее о токенах доступа см. Dynatrace API — Токены и аутентификация.
В приведённых ниже процедурах замените <DT_TOKEN> вашим реальным токеном доступа.
* Получите идентификатор среды. Подробнее об идентификаторах сред см. Что такое среда мониторинга?.
В приведённых ниже процедурах замените <DT_ENV_ID> вашим реальным идентификатором среды.
* Получите конечную точку Dynatrace API, определённую вашим URL среды или альтернативно адресом ActiveGate.
В приведённых ниже процедурах замените <DT_ENV_FQDN> реальной конечной точкой Dynatrace API.
* Установите gcloud CLI
После выполнения указанных предварительных требований следуйте одной из приведённых процедур (выберите вкладку) для интеграции Dynatrace в ваши контейнеры.
Cloud build с cloudbuild.yaml
Cloud Build без cloudbuild.yaml
Jib
Интеграция в облачную сборку с cloudbuild.yaml¶
[
Добавление установщика OneAgent](cloudrun.md#add-oneagent-installer-option-1 "Monitor Java application deployed on Google Cloud Run managed.")[
Настройка Cloud Build](cloudrun.md#configure-cloud-build-option-1 "Monitor Java application deployed on Google Cloud Run managed.")[
Сборка и развёртывание](cloudrun.md#build-and-deploy-option-1 "Monitor Java application deployed on Google Cloud Run managed.")
Шаг 1 Добавление установщика OneAgent в Docker-образ¶
Требуется Docker версии 17.05+
Откройте ваш Dockerfile и добавьте следующие строки в образ приложения после последнего FROM и перед точкой входа контейнера.
# FROM ...
ARG DT_API_URL="<DT_ENV_FQDN>/api"
ARG DT_API_TOKEN="<DT_TOKEN>"
ARG DT_ONEAGENT_OPTIONS="flavor=<DT_FLAVOR&include=<DT_TECHNOLOGY>"
ENV DT_HOME="/opt/dynatrace/oneagent"
RUN apt-get update && \
apt-get install -y wget && \
apt-get install unzip && \
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
# Run the web service on container startup.
# ENTRYPOINT ...
Обязательно замените заполнители вашими реальными значениями.
<DT_ENV_FQDN>— ваша реальная конечная точка Dynatrace API, как описано в разделе Предварительные требования.<DT_TOKEN>— ваш реальный токен, как описано в разделе Предварительные требования.<DT_TECHNOLOGY>— артефакт OneAgent, специфичный для технологического стека вашего образа, напримерjavaилиnodejs.<DT_FLAVOR>— для образов на основе Alpine Linux выберитеmusl, в противном случае —default
Команды wget и unzip выше могут завершиться ошибкой, если они не предоставляются базовым образом.
Пример
Пример Dockerfile, предоставленный Google в руководстве по началу работы с Google Cloud Run на Java, адаптированный с учётом приведённых выше инструкций.
# Use the official maven/Java 11 image to create a build artifact.
# https://hub.docker.com/_/maven
FROM maven:3-jdk-11-slim AS build-env
# Set the working directory to /app
WORKDIR /app
# Copy the pom.xml file to download dependencies
COPY pom.xml .
# Copy local code to the container image.
COPY src ./src
# Download dependencies and build a release artifact.
RUN mvn package -DskipTests
# Use OpenJDK for base image.
# https://hub.docker.com/_/openjdk
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
FROM openjdk:11-jre-slim
# Copy the jar to the production image from the builder stage.
COPY --from=build-env /app/target/hello-world-*.jar /hello-world.jar
# Get and enable Dynatrace
ARG DT_API_URL="<DT_ENV_FQDN>/api"
ARG DT_API_TOKEN="<DT_TOKEN>"
ARG DT_ONEAGENT_OPTIONS="flavor=default&include=java"
ENV DT_HOME="/opt/dynatrace/oneagent"
RUN apt-get update && \
apt-get install -y wget && \
apt-get install unzip && \
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
# Run the web service on container startup.
ENTRYPOINT ["java", "-jar", "/hello-world.jar"]
Шаг 2 Настройте файл конфигурации Google Cloud Build¶
Откройте ваш файл cloudbuild.yaml и добавьте следующие переменные окружения и bash-команды в шаг сборки:
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/<GCP_PROJECT_ID>/<YOUR_IMAGE_NAME_AND_TAG>', '.']
# Push the container image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/<GCP_PROJECT_ID>/<YOUR_IMAGE_NAME_AND_TAG>']
Добавьте следующие строки в аргументы вашего шага развёртывания:
# Deploy container image to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args:
- beta
- run
- deploy
- $_SERVICE_NAME
- --allow-unauthenticated
- --image=gcr.io/<GCP_PROJECT_ID>/<YOUR_IMAGE_NAME_AND_TAG>
- --region=$_GCP_REGION
- --execution-environment=<ENVIRONMENT>
- --project=$_PROJECT
- --set-env-vars=
DT_TAGS=$_SERVICE_NAME,
DT_LOGLEVELCON=INFO
Обязательно замените заполнители вашими реальными значениями.
<GCP_PROJECT_ID>— имя вашего проекта Google Cloud<YOUR_IMAGE_NAME_AND_TAG>— имя и тег вашего образа для сборки<ENVIRONMENT>— среда выполнения, которую вы хотите использовать. Допустимые варианты:gen1для первого поколения иgen2для второго поколения.
Вы можете изменить переменную окружения DT_TAGS на другое значение по мере необходимости.
Шаг 3 Сборка и развёртывание вашего сервиса Cloud Run¶
Отредактируйте и выполните эту команду:
gcloud builds submit \
<SAMPLE_NAME> \
--project <GCP_PROJECT_ID> \
--substitutions \
"_API_KEY=<DT_TOKEN>,\
_TENANT_NAME=<DT_ENV_ID>,\
_TENANT_FQDN=<DT_ENV_FQDN>,\
_IMAGE_NAME_AND_TAG=<YOUR_IMAGE_NAME_AND_TAG>,\
_SERVICE_NAME=<YOUR_SERVICE_NAME>,\
_PROJECT=<GCP_PROJECT_ID>,\
_GCP_REGION=<GCP_REGION>,\" \
--config cloudbuild.yaml
Обязательно замените заполнители вашими реальными значениями.
<SAMPLE_NAME>— имя вашего сервиса Cloud Run<GCP_PROJECT_ID>— имя вашего проекта Google Cloud<YOUR_IMAGE_NAME_AND_TAG>— имя и тег вашего образа для сборки
Интеграция в облачную сборку без cloudbuild.yaml¶
[
Добавление установщика OneAgent](cloudrun.md#add-oneagent-installer-option-2 "Monitor Java application deployed on Google Cloud Run managed.")[
Сборка и развёртывание](cloudrun.md#build-and-deploy-option-2 "Monitor Java application deployed on Google Cloud Run managed.")
Шаг 1 Добавление установщика OneAgent в Docker-образ¶
Требуется Docker версии 17.05+
Откройте ваш Dockerfile и добавьте следующий пример в образ приложения после последнего FROM.
ARG DT_API_URL="<DT_ENV_FQDN>/api"
ARG DT_API_TOKEN="<DT_TOKEN>"
ARG DT_ONEAGENT_OPTIONS="flavor=default&include=java"
ENV DT_HOME="/opt/dynatrace/oneagent"
RUN apt-get update && \
apt-get install -y wget && \
apt-get install unzip && \
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
# Run the web service on container startup.
ENTRYPOINT ["java", "-jar", "/hello-world.jar"]
Обязательно замените заполнители вашими реальными значениями.
<DT_ENV_FQDN>— ваша реальная конечная точка Dynatrace API, как описано в разделе Предварительные требования.-
<DT_TOKEN>— ваш реальный токен, как описано в разделе Предварительные требования. -
Поддержка технологий включается через параметры
include. Для сред на основе Alpine Linux используйтеflavor=musl&include=java. - Команды
wgetиunzipвыше могут завершиться ошибкой, если они не предоставляются базовым образом.
Пример
Это пример Dockerfile, предоставленный Google в руководстве по началу работы с Google Cloud Run на Java, адаптированный с учётом приведённых выше инструкций.
# Use the official maven/Java 11 image to create a build artifact.
# https://hub.docker.com/_/maven
FROM maven:3-jdk-11-slim AS build-env
# Set the working directory to /app
WORKDIR /app
# Copy the pom.xml file to download dependencies
COPY pom.xml .
# Copy local code to the container image.
COPY src ./src
# Download dependencies and build a release artifact.
RUN mvn package -DskipTests
# Use OpenJDK for base image.
# https://hub.docker.com/_/openjdk
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
FROM openjdk:11-jre-slim
# Copy the jar to the production image from the builder stage.
COPY --from=build-env /app/target/hello-world-*.jar /hello-world.jar
# Get and enable Dynatrace
ARG DT_API_URL="<DT_ENV_FQDN>/api"
ARG DT_API_TOKEN="<DT_TOKEN>"
ARG DT_ONEAGENT_OPTIONS="flavor=default&include=java"
ENV DT_HOME="/opt/dynatrace/oneagent"
RUN apt-get update && \
apt-get install -y wget && \
apt-get install unzip && \
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
# Run the web service on container startup.
ENTRYPOINT ["java", "-jar", "/hello-world.jar"]
Шаг 2 Сборка и развёртывание вашего сервиса Cloud Run¶
Для сборки вашего сервиса Cloud Run отредактируйте и выполните следующую команду в каталоге вашего проекта:
Для развёртывания вашего сервиса Cloud Run отредактируйте и выполните следующую команду:
Обязательно замените заполнители вашими реальными значениями.
<GCP_REGION>— имя региона Google Cloud, в котором вы развёртываете<GCP_PROJECT_ID>— имя вашего проекта Google Cloud<YOUR_IMAGE_NAME_AND_TAG>— имя и тег вашего образа для сборки<YOUR_SERVICE_NAME>— имя сервиса, которое будет отображаться в Dynatrace
Интеграция с помощью инструмента контейнеризации Jib¶
Jib от Google — это инструмент контейнеризации, который создаёт оптимизированные Docker- и OCI-образы для ваших Java-приложений без Docker-демона и без необходимости глубокого знания лучших практик Docker. Он доступен в виде плагинов для Maven и Gradle, а также как Java-библиотека.
В репозитории GitHub для Jib вы можете найти пример интеграции для Java-агента Google StackDriver, который следует тому же шаблону, что и интеграция Dynatrace (Загрузка, Настройка и Внедрение). Вы можете адаптировать этот шаблон под свои нужды для интеграции Dynatrace с помощью Jib.
Дополнительная настройка¶
Вы можете использовать дополнительные переменные окружения для настройки, например, параметров отладки или расширенных сетевых настроек.
| Имя | Описание |
|---|---|
| Сеть | |
DT_NETWORK_ZONE |
Указывает использование сетевой зоны. Подробнее см. Сетевые зоны. |
DT_PROXY |
При использовании прокси-сервера используйте эту переменную окружения для передачи учётных данных прокси. Подробнее см. Настройка OneAgent на контейнерах для мониторинга только приложений |
| Дополнительные метаданные для группировки процессов / обнаружения сервисов | |
DT_LOCALTOVIRTUALHOSTNAME |
Несколько контейнеров иногда определяются как один экземпляр (localhost), что приводит к различным проблемам, например, в обнаружении сервисов или оповещениях о доступности. Используйте эту переменную окружения для определения уникального имени экземпляра контейнера. Подробнее см. Обнаружение сервисов v1 |
DT_APPLICATIONID |
Некоторые технологии не предоставляют уникальных имён приложений. В таких случаях используйте эту переменную окружения для указания уникального имени. Подробнее см. Обнаружение сервисов v1 |
DT_TAGS |
Применяет пользовательские теги к вашей группе процессов |
DT_CUSTOM_PROP |
Применяет пользовательские метаданные к вашей группе процессов |
DT_CLUSTER_ID |
Если правила обнаружения групп процессов не подходят для вашего случая использования, используйте эту переменную окружения для объединения всех процессов с одинаковым значением. |
DT_NODE_ID |
Если правила обнаружения групп процессов не подходят для вашего случая использования, используйте эту переменную окружения для разделения экземпляров групп процессов |
| Устранение неполадок | |
DT_LOGSTREAM |
Установите эту переменную со значением stdout, чтобы настроить агент на вывод ошибок в консоль. Для просмотра дополнительных логов агента установите уровень логирования с помощью DT_LOGLEVELCON, как описано ниже. |
DT_LOGLEVELCON |
Используйте эту переменную окружения для определения уровня логирования консоли. Допустимые варианты: NONE, INFO, WARNING, SEVERE в порядке увеличения уровня логирования. |
DT_AGENTACTIVE |
true или false для включения или отключения OneAgent. |
Проверка успешности интеграции¶
После сборки и развёртывания вы должны увидеть ваш сервис Cloud Run в Dynatrace.
Проверка через обзор сервисов¶
Проверьте обзор вашего сервиса в Dynatrace для инструментированного приложения.
Сервис появится в Dynatrace после запуска новой собранной версии и хотя бы одного вызова, например, через веб-запрос.
Проверка через обзор хостов¶
Вы можете отфильтровать контейнеры в обзоре хостов по Режиму мониторинга со значением Standalone/PaaS.
Известные ограничения¶
- Отсутствие метрик хоста для Gen1
Первое поколение среды выполнения GCR, также называемое Gen1, имеет намеренно повышенные ограничения безопасности. В результате некоторые функции OneAgent не могут работать в этой среде выполнения и недоступны. Например, метрики на странице Хосты, такие как CPU Usage и Memory Usage, недоступны.
* Экземпляры GCR определяются как хосты
Среды выполнения GCR в настоящее время отображаются на странице Хосты с правильным определением свойств GCP и ограничения памяти каждого из этих экземпляров среды выполнения (контейнера), а не на странице Группы контейнеров. Метрики контейнеров недоступны. * Возможные задержки при запуске
Поскольку каждая ревизия Google Cloud Run автоматически масштабируется до количества экземпляров контейнеров, необходимого для обработки входящих запросов, такие холодные запуски могут происходить чаще, чем в других средах, что увеличивает общие задержки при запуске.
Обновление OneAgent¶
Каждый раз, когда вы хотите использовать новую версию Dynatrace OneAgent, необходимо выполнить повторную сборку и развёртывание.
Если вы указали версию OneAgent по умолчанию для установки на новых хостах и в приложениях с помощью настроек обновления OneAgent, ваше приложение будет автоматически мониториться определённой версией OneAgent по умолчанию.
Удаление OneAgent¶
Для удаления OneAgent из режима мониторинга только приложений удалите ссылки из вашего приложения или Docker-образа и повторно разверните приложение.
Связанные темы¶
- Настройка Dynatrace в Google Cloud
- Матрица поддержки платформ и возможностей OneAgent