Colete métricas de disjuntor Spring Cloud Resilience4J com micrômetro (visualização)
Nota
Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.
Este artigo aplica-se a: ✔️ Basic/Standard ✔️ Enterprise
Este artigo mostra como coletar métricas de disjuntor do Spring Cloud Resilience4j com o agente em processo Java do Application Insights. Com esse recurso, você pode monitorar as métricas do disjuntor Resilience4j a partir do Application Insights com micrômetro.
A demonstração spring-cloud-circuit-breaker-demo mostra como funciona o monitoramento.
Pré-requisitos
- Instale o Git, Maven e Java, se ainda não estiver instalado no computador de desenvolvimento.
Criar e implementar aplicações
Use as etapas a seguir para criar e implantar os aplicativos de exemplo.
Use o seguinte comando para clonar e construir 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 do Azure Spring Apps:
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 comandos 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 do Azure Spring Apps:
Nota
Se sua assinatura nunca tiver sido usada para criar uma instância do plano Enterprise do Azure Spring Apps, 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 comandos 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
Nota
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, que é implementada
CircuitBreakerFactory
como umabean
criação automática quando você inclui um acionador de partida do Spring Cloud Circuit Breaker. Para obter mais informações, consulte Disjuntor Spring Cloud.As duas dependências a seguir têm conflitos com 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 de gateway e acesse o ponto de extremidade a partir de spring-cloud-circuit-breaker-demo da seguinte maneira:
/get
/delay/{seconds}
/fluxdelay/{seconds}
Localize Resilence4j Metrics no portal do Azure
Na sua instância do Azure Spring Apps, selecione Application Insights no painel de navegação e, em seguida, selecione Application Insights na página.
Nota
Se você não ativar o Application Insights, poderá ativar o agente Java In-Process. Para obter mais informações, consulte a seção Gerenciar insights de aplicativos usando o portal do Azure de Usar o agente Java em processo do Application Insights no Azure Spring Apps.
Habilite a coleta de dimensões para métricas resilience4j. Para obter mais informações, consulte a seção Dimensões de métricas personalizadas e preagregaçã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 Metric Namespace como azure.applicationinsights.
Defina Metric como resilience4j_circuitbreaker_buffered_calls e, em seguida, defina Aggregation como Avg.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar filtro e defina Nome como Atraso.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Aplicar divisão e defina Dividir por tipo.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar métrica e defina Métrica como resilience4j_circuitbreaker_buffered_calls e, em seguida, 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 definida como Média.
Na sua instância do Azure Spring Apps, selecione Application Insights no painel de navegação e, em seguida, selecione o Application Insights padrão na página.
Nota
Se não houver nenhum Application Insights padrão disponível, você poderá ativar o agente Java In-Process. Para obter mais informações, consulte a seção Gerenciar insights de aplicativos usando o portal do Azure de Usar o agente Java em processo do Application Insights no Azure Spring Apps.
Habilite a coleta de dimensões para métricas resilience4j. Para obter mais informações, consulte a seção Dimensões de métricas personalizadas e preagregaçã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 Metric Namespace como azure.applicationinsights.
Defina Metric como resilience4j_circuitbreaker_buffered_calls e, em seguida, defina Aggregation como Avg.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar filtro e defina Nome como Atraso.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Aplicar divisão e defina Dividir por tipo.
Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar métrica e defina Métrica como resilience4j_circuitbreaker_buffered_calls e, em seguida, 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 definida como Média.