Partager via


Collecter les métriques du disjoncteur Spring Cloud Resilience4J à l’aide de Micrometer (préversion)

Remarque

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article s’applique au : Niveau ✔️ De base/Standard ✔️ Entreprise

Cet article explique comment collecter les métriques de disjoncteur Spring Cloud Resilience4j avec l’agent In-process Java Application Insights. Grâce à cette fonctionnalité, vous pouvez surveiller les métriques du disjoncteur Resilience4J à partir d’Application Insights avec Micrometer.

La démonstration spring-cloud-circuit-breaker-demo montre comment fonctionne la supervision.

Prérequis

  • Installez Git, Maven et Java, s’il n’est pas déjà installé sur l’ordinateur de développement.

Créer et déployer des applications

Procédez comme suit pour générer et déployer les exemples d’applications.

  1. Utilisez la commande suivante pour cloner et générer le référentiel de démonstration :

    git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git
    cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
    
  1. Utilisez la commande suivante pour créer une instance de service Azure Spring Apps :

    az spring create \
        --resource-group ${resource-group-name} \
        --name ${Azure-Spring-Apps-instance-name}
    
  2. Utilisez les commandes suivantes pour créer les applications avec des points de terminaison :

    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. Utilisez les commandes suivantes pour déployer les applications :

    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. Utilisez la commande suivante pour créer une instance de service Azure Spring Apps :

    Remarque

    Si votre abonnement n’a jamais été utilisé pour créer une instance de plan Entreprise d’Azure Spring Apps, vous devez exécuter la commande suivante :

    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. Utilisez les commandes suivantes pour créer des applications avec des points de terminaison :

    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. Utilisez les commandes suivantes pour déployer les applications :

    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
    

Remarque

  • Incluez la dépendance requise pour 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>
    
  • Votre code doit utiliser l’API CircuitBreakerFactory, qui est implémentée en tant que bean créée automatiquement lorsque vous incluez un démarrage de disjoncteur Spring Cloud. Pour plus d’informations, consultez Disjoncteur Spring Cloud.

  • Les deux dépendances suivantes sont en conflit avec les packages Resilient4J. Veillez à ne pas les inclure.

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

Accédez à l’URL fournie par les applications de passerelle, puis au point de terminaison à partir de spring-cloud-circuit-breaker-demo comme suit :

/get
/delay/{seconds}
/fluxdelay/{seconds}

Localiser les métriques Resilence4j sur le portail Azure

  1. Dans votre instance Azure Spring Apps, sélectionnez Application Insights dans le volet de navigation, puis sélectionnez Application Insights sur la page.

    Capture d’écran du Portail Azure illustrant la page Application Insights d’Azure Spring Apps qui inclut la fonctionnalité Application Insights mise en évidence.

    Remarque

    Si vous n’activez pas Application Insights, vous pouvez activer l’agent Java In-process. Pour plus d’informations, consultez la section Gérer Application Insights à l’aide du portail Azure de l’article Utiliser l’agent In-process Java d’Application Insights dans Azure Spring Apps.

  2. Activer la collecte de dimensions pour les métriques resilience4j. Pour plus d’informations, consultez la section Dimensions des métriques personnalisées et pré-agrégation de l’article Métriques basées sur le journal et pré-agrégées dans Application Insights.

  3. Sélectionnez Métriques dans le volet de navigation. La page Métriques fournit des menus déroulants et des options permettant de définir les graphiques dans cette procédure. Pour tous les graphiques, définissez l’espace de noms des métriques sur azure.applicationinsights.

    Capture d’écran de la page Métriques Application Insights du Portail Azure avec le menu Espace de noms de métriques ouvert et l’option Azure-applicationinsights mise en surbrillance.

  4. Définissez Métrique sur resilience4j_circuitbreaker_buffered_calls, puis définissez Agrégation sur Moyenne.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels mis en mémoire tampon du disjoncteur et une agrégation définie sur Moyenne.

  5. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels de disjoncteur et une agrégation définie sur Moyenne.

  6. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Ajouter un filtre et définissez Nom sur Retarder.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels de disjoncteur, une agrégation définie sur Moyenne et un Filtre de retard.

  7. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Appliquer la division et définissez Diviser par pour type.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels de disjoncteur, une agrégation définie sur Moyenne et un fractionnement.

  8. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Ajouter une métrique et définissez Métrique sur resilience4j_circuitbreaker_buffered_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Ajouter une métrique, puis définissez Métrique sur resilience4j_circuitbreaker_slow_calls, puis Agrégation sur Moyenne.

    Capture d’écran du Portail Azure illustrant la page des métriques Application Insights qui inclut le graphique décrit dans cette étape.

  1. Dans votre instance Azure Spring Apps, sélectionnez Application Insights dans le volet de navigation, puis sélectionnez Application Insights par défaut sur la page.

    Capture d’écran du Portail Azure illustrant la page Application Insights d’Azure Spring Apps qui inclut l’instance Application Insights par défaut mise en évidence.

    Remarque

    S’il n’existe aucune application Insights par défaut disponible, vous pouvez activer l’agent Java In-process. Pour plus d’informations, consultez la section Gérer Application Insights à l’aide du portail Azure de l’article Utiliser l’agent In-process Java d’Application Insights dans Azure Spring Apps.

  2. Activer la collecte de dimensions pour les métriques resilience4j. Pour plus d’informations, consultez la section Dimensions des métriques personnalisées et pré-agrégation de l’article Métriques basées sur le journal et pré-agrégées dans Application Insights.

  3. Sélectionnez Métriques dans le volet de navigation. La page Métriques fournit des menus déroulants et des options permettant de définir les graphiques dans cette procédure. Pour tous les graphiques, définissez l’espace de noms des métriques sur azure.applicationinsights.

    Capture d’écran de la page Métriques Application Insights du Portail Azure avec le menu Espace de noms de métriques ouvert et Azure.applicationinsights mise en surbrillance.

  4. Définissez Métrique sur resilience4j_circuitbreaker_buffered_calls, puis définissez Agrégation sur Moyenne.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels mis en mémoire tampon du disjoncteur et une agrégation définie sur Moyenne.

  5. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels de disjoncteur et une agrégation définie sur Moyenne.

  6. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Ajouter un filtre et définissez Nom sur Retarder.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels de disjoncteur, une agrégation définie sur Moyenne et un filtre de retard.

  7. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Appliquer la division et définissez Diviser par pour type.

    Capture d’écran de la page Métriques Application Insights du Portail Azure illustrant un graphique avec des appels de disjoncteur, une agrégation définie sur Moyenne et un fractionnement.

  8. Définissez Métrique sur resilience4j_circuitbreaker_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Ajouter une métrique et définissez Métrique sur resilience4j_circuitbreaker_buffered_calls, puis définissez Agrégation sur Moyenne. Sélectionnez Ajouter une métrique, puis définissez Métrique sur resilience4j_circuitbreaker_slow_calls, puis Agrégation sur Moyenne.

    Capture d’écran du Portail Azure illustrant la page des métriques Application Insights qui inclut le graphique décrit dans cette étape.

Étapes suivantes