Руководство по настройке агента Java для управления производительностью приложений (APM) с контейнерами init в приложениях контейнеров Azure
В этом руководстве описана настройка агента Java для управления производительностью приложений (APM) с контейнерами инициализации в приложениях контейнеров Azure. APM помогает обеспечить возможность наблюдения за питанием для приложений контейнеров. Подключаемый модуль APM можно упаковывать в тот же образ или Dockerfile с приложением, но привязывается к проблемам управления, таким как освобождение и устранение распространенных уязвимостей и уязвимостей (CVE). Вместо привязки проблем можно использовать агент Java и контейнеры init в приложениях контейнеров Azure для внедрения решений APM без изменения образа приложения.
Изучив это руководство, вы:
- Подготовьте образ для настройки агента Java и отправьте его в Реестр контейнеров Azure.
- Создайте среду контейнерных приложений и приложение-контейнер в качестве целевого приложения Java.
- Настройте контейнеры и подключения томов инициализации для настройки интеграции Application Insights.
Необходимые компоненты
- Подписка Azure. Создайте его бесплатно..
- Экземпляр Application Insights.
- Экземпляр Реестр контейнеров Azure или другого реестра образов контейнеров.
- Docker, чтобы создать образ.
- Последняя версия Azure CLI.
Настройка среды
Чтобы определить переменные среды и убедиться, что расширение "Приложения контейнеров" обновлено, выполните следующие действия.
Определите переменные среды с помощью следующих команд:
export SUBSCRIPTION_ID="<SUBSCRIPTION_ID>" # Replace with your own Azure subscription ID export APP_INSIGHTS_RESOURCE_ID="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/my-resource-group/providers/microsoft.insights/components/my-app-insights" export CONTAINER_REGISTRY_NAME="myacr" export RESOURCE_GROUP="my-resource-group" export ENVIRONMENT_NAME="my-environment" export CONTAINER_APP_NAME="my-container-app" export LOCATION="eastus"
Войдите в Azure CLI с помощью следующих команд:
az login az account set --subscription $SUBSCRIPTION_ID
Используйте следующие команды, чтобы убедиться, что у вас есть последняя версия расширений Azure CLI для приложений контейнеров и Application Insights:
az extension add --name containerapp --upgrade az extension add --name application-insights --upgrade
Получите строка подключения для экземпляра Application Insights с помощью следующих команд:
CONNECTION_STRING=$(az monitor app-insights component show \ --ids $APP_INSIGHTS_RESOURCE_ID \ --query connectionString)
Подготовка образа контейнера
Чтобы создать образ установки для агента Java Application Insights, выполните следующие действия в том же каталоге:
Создайте Dockerfile со следующим содержимым:
FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 ARG version="3.5.4" RUN tdnf update -y && tdnf install -y curl ca-certificates RUN curl -L "https://github.com/microsoft/ApplicationInsights-Java/releases/download/${version}/applicationinsights-agent-${version}.jar" > agent.jar ADD setup.sh /setup.sh ENTRYPOINT ["/bin/sh", "setup.sh"]
Создайте файл setup.sh со следующим содержимым:
#!/bin/sh if [[ -z "$CONNECTION_STRING" ]]; then echo "Environment variable CONNECTION_STRING is not found. Exiting..." exit 1 else echo "{\"connectionString\": \"$CONNECTION_STRING\"}" > /java-agent/applicationinsights.json cp agent.jar /java-agent/agent.jar fi
Создайте изображение с помощью следующей команды:
docker build . --tag "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
Отправьте образ в Реестр контейнеров Azure или другой реестр образов контейнеров с помощью следующих команд:
az acr login --name $CONTAINER_REGISTRY_NAME docker push "$CONTAINER_REGISTRY_NAME.azurecr.io/samples/java-agent-setup:1.0.0"
Совет
Вы можете найти код, соответствующий этому шагу, в репозитории GitHub azure-container-apps-java-samples .
Создание среды контейнерных приложений и приложения-контейнера в качестве целевого приложения Java
Чтобы создать среду контейнерных приложений и приложение контейнера в качестве целевого приложения Java, выполните следующие действия.
Создайте среду контейнерных приложений с помощью следующей команды:
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
После успешного создания среды "Приложения контейнеров" командная строка возвращает
Succeeded
сообщение.Создайте приложение-контейнер для дальнейшей настройки с помощью следующей команды:
az containerapp create \ --name $CONTAINER_APP_NAME \ --environment $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --query "properties.provisioningState"
После создания приложения-контейнера командная строка возвращает
Succeeded
сообщение.
Настройка контейнера инициализации, секретов, переменных среды и томов для настройки интеграции Application Insights
Выполните следующие действия, чтобы настроить контейнер init с секретами, переменными среды и томами. Эта конфигурация позволяет использовать хранимую информацию с экземпляром Application Insights.
Напишите текущую конфигурацию запущенного приложения-контейнера в файл app.yaml в текущем каталоге, выполнив следующую команду:
az containerapp show \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_NAME \ --output yaml \ > app.yaml
Чтобы изменить файл app.yaml , выполните следующие действия. Изменения добавляют секреты, эфемерное хранилище и контейнер инициализации в файл и обновляют контейнер приложения.
Добавьте секрет для строка подключения Application Insights, используя следующий пример. Замените
$CONNECTION_STRING
строка подключения Application Insights.properties: configuration: secrets: - name: app-insights-connection-string value: $CONNECTION_STRING
Добавьте временный том хранилища для файлов агента Java, используя следующий пример:
properties: template: volumes: - name: java-agent-volume storageType: EmptyDir
Добавьте контейнер init с подключениями томов и переменными среды, используя следующий пример. Замените
<CONTAINER_REGISTRY_NAME>
Реестр контейнеров Azure именем.properties: template: initContainers: - image: <CONTAINER_REGISTRY_NAME>.azurecr.io/samples/java-agent-setup:1.0.0 name: java-agent-setup resources: cpu: 0.25 memory: 0.5Gi env: - name: CONNECTION_STRING secretRef: app-insights-connection-string volumeMounts: - mountPath: /java-agent volumeName: java-agent-volume
Обновите контейнер приложения с помощью подключений томов и переменных среды с помощью следующего примера:
properties: template: containers: - name: test-java-app image: mcr.microsoft.com/azurespringapps/samples/hello-world:0.0.1 resources: cpu: 0.5 memory: 1Gi env: - name: JAVA_TOOL_OPTIONS value: -javaagent:/java-agent/agent.jar volumeMounts: - mountPath: /java-agent volumeName: java-agent-volume
Обновите приложение-контейнер с измененным файлом app.yaml , выполнив следующую команду:
az containerapp update \ --resource-group $RESOURCE_GROUP \ --name $CONTAINER_APP_NAME \ --yaml app.yaml \ --query "properties.provisioningState"
После обновления приложения контейнера команда возвращает
Succeeded
сообщение. Теперь вы можете убедиться, что приложение-контейнер подключено, просмотрев экземпляр Application Insights в портал Azure.
Очистка ресурсов
Ресурсы, созданные в этом руководстве, вносят свой вклад в счет Azure. Если вам не нужен долгосрочный срок, используйте следующую команду, чтобы удалить группу ресурсов и ее ресурсы:
az group delete --resource-group $RESOURCE_GROUP
Связанный контент
Кроме приложение Azure Insights, существуют другие популярные решения APM в сообществе. Если вы хотите интегрировать приложение контейнера Azure с другими поставщиками APM, просто замените JAR-файл агента Java и связанные файлы конфигурации.