Поделиться через


Подключение к управляемому администратору для Spring в приложениях контейнеров Azure

Управляемый компонент Admin for Spring предоставляет административный интерфейс для веб-приложений Spring Boot, предоставляющих конечные точки актатора. В качестве управляемого компонента в приложениях контейнеров Azure вы можете легко привязать приложение контейнера к admin for Spring для простой интеграции и управления.

В этом руководстве показано, как создать компонент Admin for Spring Java и привязать его к приложению-контейнеру, чтобы отслеживать приложения Spring и управлять ими с легкостью.

Снимок экрана: обзор панели мониторинга Admin for Spring Insights.

В этом руководстве описано следующее:

  • Создайте компонент Admin for Spring Java.
  • Привязка приложения-контейнера к компоненту Admin for Spring Java.

Если вы хотите интегрировать admin for Spring с Eureka Server for Spring, см . статью "Интеграция администратора для Spring с Eureka Server для Spring в контейнерных приложениях ".

Внимание

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

Необходимые компоненты

Рекомендации

При запуске компонента Admin for Spring в контейнерных приложениях помните о следующих сведениях:

Товар Описание
Область Компоненты выполняются в той же среде, что и подключенное приложение контейнера.
Масштабирование Компоненты не могут масштабироваться. Свойства minReplicas масштабирования и maxReplicas имеют значение . 1.
Ресурсы Исправлено выделение ресурсов контейнера для компонентов. Число ядер ЦП равно 0,5, а размер памяти составляет 1 ГБ.
Цены Выставление счетов на основе компонентов зависит от цен на основе потребления. Счета за ресурсы, используемые управляемыми компонентами, выставляются по активным или бездействуемым тарифам в зависимости от использования ресурсов. Вы можете удалить компоненты, которые больше не используются для остановки выставления счетов.
Привязка Приложения-контейнеры подключаются к компоненту через привязку. Привязки внедряют конфигурации в переменные среды приложения-контейнера. После установки привязки приложение-контейнер может считывать значения конфигурации из переменных среды и подключаться к компоненту.

Настройка

Прежде чем приступить к работе с компонентом Admin for Spring, необходимо создать необходимые ресурсы.

Следующие команды помогут вам создать группу ресурсов и среду приложения контейнера.

  1. Создайте переменные для поддержки конфигурации приложения. Эти значения предоставляются для вас в целях этого урока.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=admin
    export APP_NAME=sample-admin-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
    
    «Переменная» Description
    LOCATION Расположение региона Azure, в котором создается приложение контейнера и компонент Java.
    ENVIRONMENT Имя среды приложения контейнера для демонстрационного приложения.
    RESOURCE_GROUP Имя группы ресурсов Azure для демонстрационного приложения.
    JAVA_COMPONENT_NAME Имя компонента Java, созданного для приложения контейнера. В этом случае вы создадите компонент Admin for Spring Java.
    IMAGE Образ контейнера, используемый в приложении контейнера.
  2. Войдите в Azure с помощью Azure CLI.

    az login
    
  3. Создать группу ресурсов.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    При использовании --query параметра ответ фильтруется до простого сообщения об успешном выполнении или сбое.

  4. Создайте среду приложения-контейнера.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Использование компонентов

Теперь, когда у вас есть существующая среда, вы можете создать приложение-контейнер и привязать его к экземпляру компонента Java компонента Admin for Spring.

  1. Создайте компонент Admin for Spring Java.

    az containerapp env java-component admin-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 1 \
        --max-replicas 1
    
  2. Обновите компонент Admin for Spring Java.

    az containerapp env java-component admin-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 2 \
        --max-replicas 2
    

Привязка приложения-контейнера к компоненту Admin for Spring Java

  1. Создайте приложение-контейнер и привязите его к компоненту Admin for Spring.

    az containerapp create \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --environment $ENVIRONMENT \
        --image $IMAGE \
        --min-replicas 1 \
        --max-replicas 1 \
        --ingress external \
        --target-port 8080 \
        --bind $JAVA_COMPONENT_NAME
    

Операция привязки подключает приложение-контейнер к компоненту Admin for Spring Java. Теперь приложение-контейнер может считывать значения конфигурации из переменных среды, в первую очередь SPRING_BOOT_ADMIN_CLIENT_URL свойство и подключаться к компоненту Admin for Spring.

Привязка также внедряет следующее свойство:

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

Это свойство указывает, что клиент компонента Admin for Spring должен использовать IP-адрес экземпляра приложения контейнера при подключении к серверу Admin for Spring server.

Необязательно. Отмена привязки приложения-контейнера с помощью компонента Admin for Spring Java

Чтобы удалить привязку из приложения-контейнера, используйте --unbind этот параметр.

az containerapp update \
    --name $APP_NAME \
    --unbind $JAVA_COMPONENT_NAME \
    --resource-group $RESOURCE_GROUP

Просмотр панели мониторинга

Внимание

Чтобы просмотреть панель мониторинга, учетная запись должна иметь по крайней мере Microsoft.App/managedEnvironments/write роль в ресурсе управляемой среды. Вы можете явно назначить OwnerContributor или роль в ресурсе. Вы также можете выполнить действия, чтобы создать определение пользовательской роли и назначить его учетной записи.

Примечание.

Панель мониторинга недоступна в Azure под управлением 21Vianet.

  1. Создайте определение настраиваемой роли.

    az role definition create --role-definition '{
        "Name": "<ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Обязательно замените заполнители между <> квадратными скобками своими значениями.

  2. Назначьте настраиваемую роль учетной записи в ресурсе управляемой среды.

    Получите идентификатор ресурса управляемой среды:

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. Назначьте роль учетной записи.

    Перед выполнением этой команды замените заполнитель ( как указано <> в скобках) идентификатором пользователя или субъекта-службы или именем роли.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "<ROLE_NAME>" \
        --scope $ENVIRONMENT_ID
    

    Примечание.

    Значение <USER_OR_SERVICE_PRINCIPAL_ID> должно быть идентификатором, используемым для доступа к портал Azure. Значением <ROLE_NAME> является имя, назначенное на шаге 1.

  4. Получите URL-адрес панели мониторинга admin for Spring.

    az containerapp env java-component admin-for-spring show \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --query properties.ingress.fqdn \
        --output tsv
    

    Эта команда возвращает URL-адрес, который можно использовать для доступа к панели мониторинга Admin for Spring. С помощью панели мониторинга вы также можете увидеть приложение контейнера, как показано на следующем снимке экрана.

    Снимок экрана: обзор панели мониторинга Admin for Spring.

Очистка ресурсов

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

az group delete --resource-group $RESOURCE_GROUP

Dependency

При использовании компонента администратора в собственном приложении контейнера добавьте в файл pom.xml следующую зависимость. Замените номер версии последней версией, доступной в репозитории Maven.

<dependency>
    <groupId>de.codecentric</groupId>
    <version>3.3.2</version>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

Примечание.

Если вы включите агент Java в приложении-контейнере, запустив следующую команду в Azure CLI, то вам не нужно добавлять зависимость клиента начального клиента администратора Spring Boot.

az containerapp update --enable-java-agent \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME

Настраиваемые свойства

Начиная с Spring Boot 2 конечные точки, отличные health от и info не предоставляются по умолчанию. Их можно предоставить, добавив следующую конфигурацию в файл application.properties .

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

Список разрешенных конфигураций для администратора для Spring

В следующем списке описаны свойства компонента администратора, которые можно настроить для приложения. Дополнительные сведения см. в разделе Spring Boot Admin.

Имя свойства Description Значение по умолчанию
spring.boot.admin.server.enabled Включает сервер администрирования Spring Boot. true
spring.boot.admin.context-path Префикс пути, в котором обслуживаются статические ресурсы и API сервера администрирования. Относительно диспетчера-сервлета.
spring.boot.admin.monitor.status-interval Интервал времени в миллисекундах для проверки состояния экземпляров. 10,000ms
spring.boot.admin.monitor.status-lifetime Время существования состояния в миллисекундах. Состояние не обновляется до истечения срока действия последнего состояния. 10 000 мс
spring.boot.admin.monitor.info-interval Интервал времени в миллисекундах для проверки сведений о экземплярах. 1m
spring.boot.admin.monitor.info-lifetime Время существования информации в минутах. Сведения не обновляются до тех пор, пока последние сведения не истекли. 1m
spring.boot.admin.monitor.default-timeout Время ожидания по умолчанию при выполнении запросов. С помощью отдельных значений для определенных конечных точек можно переопределить.spring.boot.admin.monitor.timeout.* 10,000
spring.boot.admin.monitor.timeout.* Пары "ключ-значение" с тайм-аутом.endpointId Значение по умолчанию default-timeout .
spring.boot.admin.monitor.default-retries Число повторных попыток по умолчанию для неудачных запросов. Запросы на изменение данных (PUT, POST, PATCH, DELETE) не повторяются. С помощью отдельных значений для определенных конечных точек можно переопределить.spring.boot.admin.monitor.retries.* 0
spring.boot.admin.monitor.retries.* Пары "ключ-значение" с числом повторных попыток на endpointId. Запросы на изменение данных (PUT, POST, PATCH, DELETE) не повторяются. Значение по умолчанию default-retries .
spring.boot.admin.metadata-keys-to-sanitize Значения метаданных для ключей, соответствующих этим шаблонам regex, используемым для очистки во всех выходных данных JSON. Начиная с Spring Boot 3 все значения актатора маскируются по умолчанию. Дополнительные сведения о настройке процесса несанитизации см. в разделе "Санитизация конфиденциальных значений". ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$"
spring.boot.admin.probed-endpoints Для клиентских приложений Spring Boot 1.x Spring Boot Admin осуществляет проверку указанных конечных точек с помощью OPTIONS запроса. Если путь отличается от идентификатора, можно указать это значение, id:path например health:ping. "health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents"
spring.boot.admin.instance-proxy.ignored-headers Заголовки, которые не следует пересылать при выполнении запросов клиентам. "Cookie", "Set-Cookie", "Authorization"
spring.boot.admin.ui.title Отображаемое название страницы. "Spring Boot Admin"
spring.boot.admin.ui.poll-timer.cache Длительность опроса в миллисекундах для получения новых данных кэша. 2500
spring.boot.admin.ui.poll-timer.datasource Длительность опроса в миллисекундах для получения новых данных источника данных. 2500
spring.boot.admin.ui.poll-timer.gc Длительность опроса в миллисекундах для получения новых данных GC. 2500
spring.boot.admin.ui.poll-timer.process Длительность опроса в миллисекундах для получения новых данных процесса. 2500
spring.boot.admin.ui.poll-timer.memory Длительность опроса в миллисекундах для получения новых данных памяти. 2500
spring.boot.admin.ui.poll-timer.threads Длительность опроса в миллисекундах для получения новых потоков. 2500
spring.boot.admin.ui.poll-timer.logfile Длительность опроса в миллисекундах для получения новых данных журнала. 1000
spring.boot.admin.ui.enable-toasts Включает или отключает всплывающие уведомления. false
spring.boot.admin.ui.title Значение заголовка окна браузера. ""
spring.boot.admin.ui.brand HTML-код, отображаемый в заголовке навигации и по умолчанию использует метку администратора Spring Boot. По умолчанию за логотипом администратора Spring Boot следует его имя. ""
management.scheme Значение, заменяемое в URL-адресе службы, используемом для доступа к конечным точкам актатора.
management.address Значение, заменяемое в URL-адресе службы, используемом для доступа к конечным точкам актатора.
management.port Значение, заменяемое в URL-адресе службы, используемом для доступа к конечным точкам актатора.
management.context-path Значение, добавляемое к URL-адресу службы, используемому для доступа к конечным точкам актатора. ${spring.boot.admin.discovery.converter.management-context-path}
health.path Значение, добавляемое к URL-адресу службы, используемому для проверки работоспособности. Игнорируется параметром EurekaServiceInstanceConverter. ${spring.boot.admin.discovery.converter.health-endpoint}
spring.boot.admin.discovery.enabled DiscoveryClient Включает поддержку сервера администрирования. true
spring.boot.admin.discovery.converter.management-context-path Значение, которое добавляется в service-url обнаруженную службу при management-url преобразовании DefaultServiceInstanceConverterзначения. /actuator
spring.boot.admin.discovery.converter.health-endpoint-path Значение, которое добавляется в management-url обнаруженную службу при health-url преобразовании DefaultServiceInstanceConverterзначения. "health"
spring.boot.admin.discovery.ignored-services Службы, которые игнорируются при использовании обнаружения и не зарегистрированы в качестве приложения. Поддерживает простые шаблоны, такие как "foo*", "*bar"и "foo*bar*".
spring.boot.admin.discovery.services Службы, включенные при использовании обнаружения и регистрации в качестве приложения. Поддерживает простые шаблоны, такие как "foo*", "*bar"и "foo*bar*". "*"
spring.boot.admin.discovery.ignored-instances-metadata Службы игнорируются, если они содержат по крайней мере один элемент метаданных, соответствующий шаблонам в этом списке. Поддерживает такие шаблоны, как "discoverable=false".
spring.boot.admin.discovery.instances-metadata Службы включаются, если они содержат по крайней мере один элемент метаданных, соответствующий шаблонам в списке. Поддерживает такие шаблоны, как "discoverable=true".

Распространенные способы конфигурирования

  • Связанные с ведением журнала конфигурации:
    • logging.level.*
    • logging.group.*
    • Любые другие конфигурации в logging.* пространстве имен. Например, не используйте logging.file для записи файлов журналов.

Ограничения

  • Панель мониторинга администрирования Spring Boot недоступна в Azure под управлением 21Vianet.

Интеграция управляемого администратора для Spring с Eureka Server для Spring