Raccogliere le metriche dell'interruttore Spring Cloud Resilience4J con micrometri (anteprima)
Nota
Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.
Questo articolo si applica a: ✔️ Basic/Standard ✔️ Enterprise
Questo articolo illustra come raccogliere le metriche dell'interruttore Spring Cloud Resilience4j con l'agente in-process java di Application Insights. Con questa funzionalità, è possibile monitorare le metriche dell'interruttore di circuito Resilience4j da Application Insights con Micrometer.
La demo spring-cloud-circuit-breaker-demo illustra il funzionamento del monitoraggio.
Prerequisiti
- Installare Git, Maven e Java, se non è già installato nel computer di sviluppo.
Compilare e distribuire app
Usare la procedura seguente per compilare e distribuire le applicazioni di esempio.
Usare il comando seguente per clonare e compilare il repository demo:
git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
Usare il comando seguente per creare un'istanza del servizio Azure Spring Apps:
az spring create \ --resource-group ${resource-group-name} \ --name ${Azure-Spring-Apps-instance-name}
Usare i comandi seguenti per creare le applicazioni con endpoint:
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
Usare i comandi seguenti per distribuire le applicazioni:
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
Usare il comando seguente per creare un'istanza del servizio Azure Spring Apps:
Nota
Se la sottoscrizione non è mai stata usata per creare un'istanza del piano Enterprise di Azure Spring Apps, è necessario eseguire il comando seguente:
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
Usare i comandi seguenti per creare applicazioni con endpoint:
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
Usare i comandi seguenti per distribuire le applicazioni:
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
Includere la dipendenza necessaria per 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>
Il codice deve usare l'API
CircuitBreakerFactory
, che viene implementata comebean
creata automaticamente quando si include un starter Spring Cloud Circuit Breaker. Per altre informazioni, vedere Spring Cloud Circuit Breaker.Le due dipendenze seguenti presentano conflitti con i pacchetti Resilient4j. Assicurarsi di non includerli.
<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>
Passare all'URL fornito dalle applicazioni gateway e accedere all'endpoint da spring-cloud-circuit-breaker-demo come indicato di seguito:
/get
/delay/{seconds}
/fluxdelay/{seconds}
Individuare le metriche Resilence4j nel portale di Azure
Nell'istanza di Azure Spring Apps selezionare Application Insights nel riquadro di spostamento e quindi selezionare Application Insights nella pagina.
Nota
Se non si abilita Application Insights, è possibile abilitare l'agente Java In-Process. Per altre informazioni, vedere la sezione Gestire Application Insights usando il portale di Azure di Usare l'agente in-process Java di Application Insights in Azure Spring Apps.
Abilitare la raccolta di dimensioni per le metriche resilience4j. Per altre informazioni, vedere la sezione Dimensioni delle metriche personalizzate e pre-aggregazione delle metriche basate su log e preaggregate in Application Insights.
Selezionare Metriche nel riquadro di spostamento. Nella pagina Metriche sono disponibili menu a discesa e opzioni per definire i grafici in questa procedura. Per tutti i grafici, impostare Spazio dei nomi delle metrichesu azure.applicationinsights.
Impostare Metrica su resilience4j_circuitbreaker_buffered_calls e quindi impostare Aggregazione su Media.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Aggiungi filtro e impostare Nome su Ritardo.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Applica suddivisione e impostare Divisione per per tipo.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Aggiungi metrica e impostare Metrica su resilience4j_circuitbreaker_buffered_calls e quindi impostare Aggregazione su Media. Selezionare di nuovo Aggiungi metrica e impostare Metrica su resilience4j_circuitbreaker_slow_calls, quindi impostare Aggregazione impostata su Media.
Nell'istanza di Azure Spring Apps selezionare Application Insights nel riquadro di spostamento e quindi selezionare Application Insights predefinito nella pagina.
Nota
Se non è disponibile Application Insights predefinito, è possibile abilitare l'agente Java In-Process. Per altre informazioni, vedere la sezione Gestire Application Insights usando il portale di Azure di Usare l'agente in-process Java di Application Insights in Azure Spring Apps.
Abilitare la raccolta di dimensioni per le metriche resilience4j. Per altre informazioni, vedere la sezione Dimensioni delle metriche personalizzate e pre-aggregazione delle metriche basate su log e preaggregate in Application Insights.
Selezionare Metriche nel riquadro di spostamento. Nella pagina Metriche sono disponibili menu a discesa e opzioni per definire i grafici in questa procedura. Per tutti i grafici, impostare Spazio dei nomi delle metrichesu azure.applicationinsights.
Impostare Metrica su resilience4j_circuitbreaker_buffered_calls e quindi impostare Aggregazione su Media.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Aggiungi filtro e impostare Nome su Ritardo.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Applica suddivisione e impostare Divisione per per tipo.
Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Aggiungi metrica e impostare Metrica su resilience4j_circuitbreaker_buffered_calls e quindi impostare Aggregazione su Media. Selezionare di nuovo Aggiungi metrica e impostare Metrica su resilience4j_circuitbreaker_slow_calls, quindi impostare Aggregazione impostata su Media.