Share via


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.

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

  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 Application Insights di Azure Spring Apps 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 pre-aggregazione delle 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 metrichesu azure.applicationinsights.

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

  4. Impostare Metrica su resilience4j_circuitbreaker_buffered_calls e quindi impostare Aggregazione su Media.

    Screenshot della pagina delle metriche di Application Insights 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 delle metriche di Application Insights 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 delle metriche di Application Insights portale di Azure che mostra un grafico con chiamate di interruttore, aggregazione media e filtro ritardato.

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

    Screenshot della pagina delle metriche di Application Insights 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_calls, quindi impostare Aggregazione impostata su Media.

    Screenshot della 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 di Application Insights di Azure Spring Apps 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 pre-aggregazione delle 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 metrichesu azure.applicationinsights.

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

  4. Impostare Metrica su resilience4j_circuitbreaker_buffered_calls e quindi impostare Aggregazione su Media.

    Screenshot della pagina delle metriche di Application Insights 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 delle metriche di Application Insights 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 portale di Azure metriche di Application Insights 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 per tipo.

    Screenshot della pagina delle metriche di Application Insights 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_calls, quindi impostare Aggregazione impostata su Media.

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

Passaggi successivi