Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O componente gerenciado Admin for Spring oferece uma interface administrativa para aplicativos Web Spring Boot que expõem pontos de extremidade atuadores. Como um componente gerenciado nos Aplicativos de Contêiner do Azure, você pode vincular facilmente seu aplicativo de contêiner ao Admin for Spring para integração e gerenciamento perfeitos.
Este tutorial mostra como criar um componente Admin for Spring Java e vinculá-lo ao seu aplicativo de contêiner para que você possa monitorar e gerenciar seus aplicativos Spring com facilidade.
Neste tutorial, irá aprender a:
- Crie um componente Admin para Spring Java.
- Associe seu aplicativo de contêiner a um componente Admin for Spring Java.
Se você quiser integrar o Admin for Spring com o Eureka Server for Spring, consulte Integrar o Admin for Spring com o Eureka Server for Spring em aplicativos de contêiner.
Importante
Este tutorial usa serviços que podem afetar sua fatura do Azure. Se você decidir acompanhar, certifique-se de excluir os recursos apresentados neste artigo para evitar cobranças inesperadas.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Se ainda não tiver um, pode criar um gratuitamente.
- CLI do Azure.
Considerações
Ao executar o componente Admin for Spring em Aplicativos de Contêiner, esteja ciente dos seguintes detalhes:
| Item | Explicação |
|---|---|
| Âmbito | Os componentes são executados no mesmo ambiente que o aplicativo de contêiner conectado. |
| Dimensionamento | Os componentes não podem escalar. As propriedades minReplicas de dimensionamento e maxReplicas estão ambas definidas como 1. |
| Recursos | A alocação de recursos de contêiner para componentes é fixa. O número de núcleos de CPU é 0,5 e o tamanho da memória é 1 GB. |
| Preços | A faturação dos componentes enquadra-se nos preços baseados no consumo. Os recursos consumidos pelos componentes geridos são faturados às taxas ativas ou ociosas, dependendo do uso de recursos. Você pode excluir componentes que não estão mais em uso para interromper a cobrança. |
| Enlace | Os aplicativos de contêiner se conectam a um componente por meio de uma ligação. As associações injetam configurações em variáveis de ambiente do aplicativo de contêiner. Depois que uma associação é estabelecida, o aplicativo contêiner pode ler os valores de configuração das variáveis de ambiente e se conectar ao componente. |
Configurar
Antes de começar a trabalhar com o componente Admin for Spring, você precisa criar os recursos necessários.
Os comandos a seguir ajudam você a criar seu grupo de recursos e ambiente de aplicativo de contêiner.
Crie variáveis para dar suporte à configuração do aplicativo. Esses valores são fornecidos para você para os fins desta lição.
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"Variável Description LOCATIONO local da região do Azure onde você cria seu aplicativo de contêiner e o componente Java. ENVIRONMENTO nome do ambiente do aplicativo de contêiner para seu aplicativo de demonstração. RESOURCE_GROUPO nome do grupo de recursos do Azure para seu aplicativo de demonstração. JAVA_COMPONENT_NAMEO nome do componente Java criado para seu aplicativo de contêiner. Nesse caso, você cria um componente Admin para Spring Java. IMAGEA imagem de contêiner usada em seu aplicativo de contêiner. Entre no Azure com a CLI do Azure.
az loginCrie um grupo de recursos.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"Quando você usa o
--queryparâmetro, a resposta filtra até uma simples mensagem de sucesso ou falha.Crie seu ambiente de aplicativo de contêiner.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Use o componente
Agora que você tem um ambiente existente, pode criar seu aplicativo de contêiner e vinculá-lo a uma instância do componente Java de um componente Admin for Spring.
Crie o componente 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 1Atualize o componente 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
Vincular seu aplicativo de contêiner ao componente Admin for Spring Java
Crie o aplicativo de contêiner e associe-o ao componente 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
A operação bind conecta o aplicativo contêiner ao componente Admin for Spring Java. O aplicativo contêiner agora pode ler os valores de configuração de variáveis de ambiente, principalmente a SPRING_BOOT_ADMIN_CLIENT_URL propriedade, e conectar-se ao componente Admin for Spring.
A ligação também injeta a seguinte propriedade:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Essa propriedade indica que o cliente do componente Admin for Spring deve usar o endereço IP da instância do aplicativo contêiner quando você se conectar ao servidor Admin for Spring.
Opcional: Desvincule seu aplicativo contêiner do componente Admin for Spring Java
Para remover uma associação de um aplicativo contêiner, use a --unbind opção.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Ver o dashboard
Importante
Para exibir o painel, sua conta precisa de pelo menos a Microsoft.App/managedEnvironments/write função no recurso de ambiente gerenciado. Você pode atribuir explicitamente a Owner função ou Contributor no recurso. Você também pode seguir as etapas para criar uma definição de função personalizada e atribuí-la à sua conta.
Nota
O painel não está disponível no Azure operado pela 21Vianet.
Crie a definição de função personalizada.
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>"] }'Certifique-se de substituir os espaços reservados entre
<>colchetes pelos seus valores.Atribua a função personalizada à sua conta no recurso de ambiente gerenciado.
Obtenha a ID do recurso do ambiente gerenciado:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)Atribua a função à sua conta.
Antes de executar esse comando, substitua o espaço reservado - conforme indicado pelos
<>colchetes - pelo ID do usuário ou da entidade de serviço ou nome da função.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_IDNota
O
<USER_OR_SERVICE_PRINCIPAL_ID>valor deve ser a identidade que você usa para acessar o portal do Azure. O<ROLE_NAME>valor é o nome que você atribuiu na etapa 1.Obtenha o URL do painel 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 tsvEste comando retorna a URL que você pode usar para acessar o painel Admin for Spring. Com o painel, você também pode ver seu aplicativo de contêiner, conforme mostrado na captura de tela a seguir.
Clean up resources (Limpar recursos)
Os recursos criados neste tutorial afetam sua fatura do Azure. Se você não planeja usar esses serviços a longo prazo, execute o seguinte comando para remover tudo o que você criou neste tutorial.
az group delete --resource-group $RESOURCE_GROUP
Dependency
Quando você usa o componente admin em seu próprio aplicativo de contêiner, adicione a seguinte dependência em seu arquivo pom.xml . Substitua o número da versão pela versão mais recente disponível no repositório Maven.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Nota
Você não precisa adicionar a dependência do cliente inicial admin para o Spring Boot Admin se habilitar o agente Java em seu aplicativo de contêiner executando o seguinte comando na CLI do Azure:
az containerapp update --enable-java-agent \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME
Propriedades configuráveis
A partir do Spring Boot 2, os pontos de extremidade diferentes healthinfo e não são expostos por padrão. Você pode expô-los adicionando a seguinte configuração no arquivo application.properties .
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Lista de configuração permitida para o seu Admin for Spring
A lista a seguir detalha as propriedades do componente admin que você pode configurar para seu aplicativo. Para obter mais informações, consulte Spring Boot Admin.
| Nome da propriedade | Description | Valor predefinido |
|---|---|---|
spring.boot.admin.server.enabled |
Habilita o Spring Boot Admin Server. | true |
spring.boot.admin.context-path |
O prefixo do caminho onde os ativos estáticos e a API do Admin Server são servidos. Em relação ao Dispatcher-Servlet. | |
spring.boot.admin.monitor.status-interval |
Intervalo de tempo em milissegundos para verificar o status das instâncias. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Tempo de vida do status em milissegundos. O status não é atualizado enquanto o último status não tiver expirado. | 10.000 ms |
spring.boot.admin.monitor.info-interval |
Intervalo de tempo em milissegundos para verificar as informações das instâncias. | 1m |
spring.boot.admin.monitor.info-lifetime |
Tempo de vida das informações em minutos. As informações não são atualizadas enquanto as últimas informações não expirarem. | 1m |
spring.boot.admin.monitor.default-timeout |
Tempo limite padrão ao fazer solicitações. Os valores individuais para pontos de extremidade específicos podem ser substituídos usando spring.boot.admin.monitor.timeout.*. |
10,000 |
spring.boot.admin.monitor.timeout.* |
Emparelhamento chave-valor com o tempo limite por endpointId. |
O valor é default-timeout padronizado. |
spring.boot.admin.monitor.default-retries |
Número padrão de novas tentativas para solicitações com falha. As solicitações que modificam dados (PUT, POST, PATCH, DELETE) não são repetidas. Os valores individuais para pontos de extremidade específicos podem ser substituídos usando spring.boot.admin.monitor.retries.*. |
0 |
spring.boot.admin.monitor.retries.* |
Emparelhamento chave-valor com o número de novas tentativas por endpointId. As solicitações que modificam dados (PUT, POST, PATCH, DELETE) não são repetidas. |
O valor é default-retries padronizado. |
spring.boot.admin.metadata-keys-to-sanitize |
Valores de metadados para as chaves que correspondem a esses padrões de regex usados para limpar em todas as saídas JSON. A partir do Spring Boot 3, todos os valores do atuador são mascarados por padrão. Para obter mais informações sobre como configurar o processo de desincanização, consulte Limpar valores confidenciais. | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
Para aplicações cliente do Spring Boot 1.x, o Spring Boot Admin sonda os pontos de extremidade especificados usando uma OPTIONS solicitação. Se o caminho for diferente do ID, você poderá especificar esse valor como id:path - por exemplo, 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 |
Cabeçalhos que não devem ser encaminhados ao realizar pedidos para os clientes. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
O título da página exibida. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Duração da sondagem em milissegundos para buscar novos dados de cache. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Duração da sondagem em milissegundos para buscar novos dados da fonte de dados. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Duração da sondagem em milissegundos para obter novos dados gc. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Duração da sondagem em milissegundos para obter novos dados de processo. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Duração da sondagem em milissegundos para obter novos dados de memória. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Duração da sondagem em milissegundos para buscar novos dados de threads. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Duração da sondagem em milissegundos para obter novos dados do arquivo de log. | 1000 |
spring.boot.admin.ui.enable-toasts |
Habilita ou desabilita notificações do sistema. | false |
spring.boot.admin.ui.title |
Valor do título da janela do navegador. | "" |
spring.boot.admin.ui.brand |
Código HTML renderizado no cabeçalho de navegação e padrão para o rótulo Spring Boot Admin. Por padrão, o logotipo do Spring Boot Admin é seguido por seu nome. | "" |
management.scheme |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade do atuador. | |
management.address |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade do atuador. | |
management.port |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade do atuador. | |
management.context-path |
Valor que é anexado à URL de serviço usada para acessar os pontos de extremidade do atuador. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Valor que é anexado à URL de serviço usada para verificação de integridade. Ignorado EurekaServiceInstanceConverterpelo . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
Habilita o DiscoveryClient suporte para o servidor de administração. |
true |
spring.boot.admin.discovery.converter.management-context-path |
Valor que é anexado service-url ao do serviço descoberto quando o management-url valor é convertido pelo DefaultServiceInstanceConverter. |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Valor que é anexado management-url ao do serviço descoberto quando o health-url valor é convertido pelo DefaultServiceInstanceConverter. |
"health" |
spring.boot.admin.discovery.ignored-services |
Serviços que são ignorados ao usar a descoberta e não registrados como aplicativo. Suporta padrões simples, como "foo*", "*bar"e "foo*bar*". |
|
spring.boot.admin.discovery.services |
Serviços incluídos ao usar a descoberta e registrados como aplicativo. Suporta padrões simples, como "foo*", "*bar"e "foo*bar*". |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
Serviços ignorados se contiverem pelo menos um item de metadados que corresponda aos padrões nesta lista. Suporta padrões como "discoverable=false". |
|
spring.boot.admin.discovery.instances-metadata |
Serviços incluídos se contiverem pelo menos um item de metadados que corresponda aos padrões na lista. Suporta padrões como "discoverable=true". |
Configurações comuns
- Configurações relacionadas ao registro:
- logging.level.*
- logging.group.*
- Quaisquer outras configurações sob o
logging.*namespace. Por exemplo, não uselogging.filepara gravar arquivos de log.
Limitações
- O Painel de Administração do Spring Boot não está disponível no Azure operado pela 21Vianet.
Conteúdos relacionados
Integre o Admin gerenciado para o Spring com o Eureka Server for Spring