Condividi tramite


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.

  1. 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
    
  1. 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}
    
  2. 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
    
  3. 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
    
  1. 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
    
  2. 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
    
  3. 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 come bean 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

  1. Nell'istanza di Azure Spring Apps selezionare Application Insights nel riquadro di spostamento e quindi selezionare Application Insights nella pagina.

    Screenshot del portale di Azure che mostra la pagina di Azure Spring Apps Application Insights con Application Insights evidenziato.

    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.

  2. 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.

  3. 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.

    Screenshot della pagina Metriche del portale di Azure con il menu Spazio dei nomi delle metriche aperto e l'opzione azure-applicationinsights evidenziata.

  4. Impostare Metrica su resilience4j_circuitbreaker_buffered_callse quindi impostare aggregazione su media.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate memorizzate nel buffer dell'interruttore e aggregazione media.

  5. Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate di interruttore e aggregazione media.

  6. Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Aggiungi filtro e impostare Nome su Ritardo.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate di interruttore, aggregazione media e filtro ritardo.

  7. Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Applica suddivisione e impostare Divisione per su tipo.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate di interruttore, aggregazione media e suddivisione.

  8. 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.

    Screenshot del portale di Azure che mostra la pagina Metriche di Application Insights con il grafico descritto in questo passaggio.

  1. Nell'istanza di Azure Spring Apps selezionare Application Insights nel riquadro di spostamento e quindi selezionare Application Insights predefinito nella pagina.

    Screenshot del portale di Azure che mostra la pagina Azure Spring Apps Application Insights con l'istanza predefinita di Application Insights evidenziata.

    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.

  2. 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.

  3. 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.

    Screenshot della pagina Metriche di Application Insights del portale di Azure con il menu Spazio dei nomi delle metriche aperto e azure.applicationinsights evidenziato.

  4. Impostare Metrica su resilience4j_circuitbreaker_buffered_callse quindi impostare aggregazione su media.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate memorizzate nel buffer dell'interruttore e aggregazione media.

  5. Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate di interruttore e aggregazione media.

  6. Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Aggiungi filtro e impostare Nome su Ritardo.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate di interruttore, aggregazione media e filtro di ritardo.

  7. Impostare Metrica su resilience4j_circuitbreaker_calls e quindi impostare Aggregazione su Media. Selezionare Applica suddivisione e impostare Divisione per su tipo.

    Screenshot della pagina Metriche di Application Insights del portale di Azure che mostra un grafico con chiamate di interruttore, aggregazione media e suddivisione.

  8. 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.

    Screenshot del portale di Azure che mostra la pagina Metriche di Application Insights con il grafico descritto in questo passaggio.

Passaggi successivi