Raccogliere le metriche dell'interruttore Spring Cloud Resilience4J con micrometri (anteprima)
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
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 automatico 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 uno starter di Interruttore automatico Spring Cloud. Per altre informazioni, vedere Interruttore automatico Spring Cloud.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 preaggregazione di 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 metriche su azure.applicationinsights.
Impostare Metrica su resilience4j_circuitbreaker_buffered_callse 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 su 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_callse 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 preaggregazione di 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 metriche su azure.applicationinsights.
Impostare Metrica su resilience4j_circuitbreaker_buffered_callse 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 su 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_callse quindi impostare Aggregazione impostata su Media.