Coletar métricas do disjuntor Resilience4J do Spring Cloud com Micrometer (versão prévia)
Observação
Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.
O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.
Este artigo se aplica a:✅ Básico/Padrão ✅ Enterprise
Este artigo mostra como coletar métricas de disjuntor Resilience4j do Spring Cloud com o agente em processo do Java do Application Insights. Com esse recurso, você pode monitorar as métricas do disjuntor Resilience4j do Application Insights com Micrometer.
A demonstração spring-cloud-circuit-breaker-demo mostra como o monitoramento funciona.
Pré-requisitos
- Instale o Git, o Maven e o Java, se ainda não estiver instalado no computador de desenvolvimento.
Compilar e implantar aplicativos
Use as etapas a seguir para criar e implantar os aplicativos de exemplo.
Use o seguinte comando para clonar e criar o repositório de demonstração:
git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
Use o seguinte comando para criar uma instância de serviço de Aplicativos Spring do Azure:
az spring create \ --resource-group ${resource-group-name} \ --name ${Azure-Spring-Apps-instance-name}
Use os seguintes comandos para criar os aplicativos com pontos de extremidade:
az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --assign-endpoint az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --assign-endpoint
Use os seguintes comando para implantar os aplicativos:
az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-resilience4j/target/spring-cloud-circuitbreaker-demo-resilience4j-0.0.1-SNAPSHOT.jar az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-reactive-resilience4j/target/spring-cloud-circuitbreaker-demo-reactive-resilience4j-0.0.1-SNAPSHOT.jar
Use o seguinte comando para criar uma instância de serviço de Aplicativos Spring do Azure:
Observação
Se sua assinatura nunca foi usada para criar uma instância do plano Enterprise dos Aplicativos Spring do Azure, você deverá executar o seguinte comando:
az term accept \ --publisher vmware-inc --product azure-spring-cloud-vmware-tanzu-2 --plan asa-ent-hr-mtr
az spring create \ --resource-group ${resource-group-name} \ --name ${Azure-Spring-Apps-instance-name} \ --sku Enterprise
Use os seguintes comandos para criar aplicativos com pontos de extremidade:
az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --assign-endpoint az spring app create \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --assign-endpoint
Use os seguintes comando para implantar os aplicativos:
az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-resilience4j/target/spring-cloud-circuitbreaker-demo-resilience4j-0.0.1-SNAPSHOT.jar az spring app deploy \ --resource-group ${resource-group-name} \ --service ${Azure-Spring-Apps-instance-name} \ --name reactive-resilience4j \ --env resilience4j.circuitbreaker.instances.backendA.registerHealthIndicator=true \ --artifact-path ./spring-cloud-circuitbreaker-demo-reactive-resilience4j/target/spring-cloud-circuitbreaker-demo-reactive-resilience4j-0.0.1-SNAPSHOT.jar
Observação
Inclua a dependência necessária para o Resilience4j:
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId> </dependency>
Seu código deve usar a API
CircuitBreakerFactory
, que é implementada como umbean
criado automaticamente quando você inclui um iniciador do disjuntor do Spring Cloud. Para obter mais informações, confira Disjuntor do Spring Cloud.As duas dependências a seguir têm conflitos com os pacotes Resilient4j. Certifique-se de não incluí-los.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
Navegue até a URL fornecida pelos aplicativos do gateway e acesse o ponto de extremidade de spring-cloud-circuit-breaker-demo da seguinte maneira:
/get
/delay/{seconds}
/fluxdelay/{seconds}
Localizar métricas do Resilence4j no portal do Azure
Na instância dos Aplicativos Spring do Azure, selecione Application Insights no painel de navegação e selecione Application Insights na página.
Observação
Se você não habilitar o Application Insights, poderá habilitar o agente em processo do Java. Para obter mais informações, consulte a seção Gerenciar o Application Insights usando o portal do Azure de Usar o agente em processo do Java do Application Insights nos Aplicativos Spring do Azure.
Habilitar a coleção de dimensão para métricas do resilience4j. Para obter mais informações, veja a seção Dimensões de métricas personalizadas e pré-agregação de Métricas baseadas em log e pré-agregadas no Application Insights.
Selecione Métricas no painel de navegação. A página Métricas fornece menus suspensos e opções para definir os gráficos neste procedimento. Para todos os gráficos, defina Namespace de Métrica como azure.applicationinsights.
Defina Métrica como resilience4j_circuitbreaker_buffered_call e, em seguida, defina Agregação como Média.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Adicionar filtro e defina Nome como Atraso.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Aplicar divisão e defina Dividir por como tipo.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Adicionar métrica e defina Métrica como resilience4j_circuitbreaker_buffered_calls e defina Agregação como Média. Selecione Adicionar métrica novamente e defina Métrica como resilience4j_circuitbreaker_slow_calls e, em seguida, defina Agregação como Média.
Na instância dos Aplicativos Spring do Azure, selecione Application Insights no painel de navegação e, em seguida, selecione o Application Insights padrão na página.
Observação
Se não houver nenhum Application Insights padrão disponível, você poderá habilitar o agente em processo do Java. Para obter mais informações, consulte a seção Gerenciar o Application Insights usando o portal do Azure de Usar o agente em processo do Java do Application Insights nos Aplicativos Spring do Azure.
Habilitar a coleção de dimensão para métricas do resilience4j. Para obter mais informações, veja a seção Dimensões de métricas personalizadas e pré-agregação de Métricas baseadas em log e pré-agregadas no Application Insights.
Selecione Métricas no painel de navegação. A página Métricas fornece menus suspensos e opções para definir os gráficos neste procedimento. Para todos os gráficos, defina Namespace de Métrica como azure.applicationinsights.
Defina Métrica como resilience4j_circuitbreaker_buffered_call e, em seguida, defina Agregação como Média.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Adicionar filtro e defina Nome como Atraso.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Aplicar divisão e defina Dividir por como tipo.
Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Adicionar métrica e defina Métrica como resilience4j_circuitbreaker_buffered_calls e defina Agregação como Média. Selecione Adicionar métrica novamente e defina Métrica como resilience4j_circuitbreaker_slow_calls e, em seguida, defina Agregação como Média.