Colete métricas de disjuntor Spring Cloud Resilience4J com micrômetro (visualização)

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares por um tempo enquanto trabalhamos para atualizar ativos, como capturas de tela, vídeos e diagramas.

Este artigo aplica-se a: ✔️ Basic/Standard ✔️ Enterprise

Este artigo mostra como coletar métricas de disjuntor do Spring Cloud Resilience4j com o agente em processo Java do Application Insights. Com esse recurso, você pode monitorar as métricas do disjuntor Resilience4j a partir do Application Insights com micrômetro.

A demonstração spring-cloud-circuit-breaker-demo mostra como funciona o monitoramento.

Pré-requisitos

  • Instale o Git, Maven e Java, se ainda não estiver instalado no computador de desenvolvimento.

Criar e implementar aplicações

Use as etapas a seguir para criar e implantar os aplicativos de exemplo.

  1. Use o seguinte comando para clonar e construir o repositório de demonstração:

    git clone https://github.com/spring-cloud-samples/spring-cloud-circuitbreaker-demo.git
    cd spring-cloud-circuitbreaker-demo && mvn clean package -DskipTests
    
  1. Use o seguinte comando para criar uma instância de serviço do Azure Spring Apps:

    az spring create \
        --resource-group ${resource-group-name} \
        --name ${Azure-Spring-Apps-instance-name}
    
  2. Use os seguintes comandos para criar os aplicativos com pontos de extremidade:

    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. Use os seguintes comandos para implantar os aplicativos:

    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. Use o seguinte comando para criar uma instância de serviço do Azure Spring Apps:

    Nota

    Se sua assinatura nunca tiver sido usada para criar uma instância do plano Enterprise do Azure Spring Apps, você deverá executar o seguinte comando:

    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. Use os seguintes comandos para criar aplicativos com pontos de extremidade:

    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. Use os seguintes comandos para implantar os aplicativos:

    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

  • Inclua a dependência necessária para o 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>
    
  • Seu código deve usar a API, que é implementada CircuitBreakerFactory como uma bean criação automática quando você inclui um acionador de partida do Spring Cloud Circuit Breaker. Para obter mais informações, consulte Disjuntor Spring Cloud.

  • As duas dependências a seguir têm conflitos com pacotes Resilient4j. Certifique-se de não incluí-los.

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

Navegue até a URL fornecida pelos aplicativos de gateway e acesse o ponto de extremidade a partir de spring-cloud-circuit-breaker-demo da seguinte maneira:

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

Localize Resilence4j Metrics no portal do Azure

  1. Na sua instância do Azure Spring Apps, selecione Application Insights no painel de navegação e, em seguida, selecione Application Insights na página.

    Captura de ecrã do portal do Azure que mostra a página Azure Spring Apps Application Insights com o Application Insights realçado.

    Nota

    Se você não ativar o Application Insights, poderá ativar o agente Java In-Process. Para obter mais informações, consulte a seção Gerenciar insights de aplicativos usando o portal do Azure de Usar o agente Java em processo do Application Insights no Azure Spring Apps.

  2. Habilite a coleta de dimensões para métricas resilience4j. Para obter mais informações, consulte a seção Dimensões de métricas personalizadas e preagregação de Métricas baseadas em log e pré-agregadas no Application Insights.

  3. Selecione Métricas no painel de navegação. A página Métricas fornece menus suspensos e opções para definir os gráficos neste procedimento. Para todos os gráficos, defina Metric Namespace como azure.applicationinsights.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure com o menu Espaço de Nomes de Métricas aberto e a opção azure-applicationinsights realçada.

  4. Defina Metric como resilience4j_circuitbreaker_buffered_calls e, em seguida, defina Aggregation como Avg.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas em buffer de disjuntor e agregação média.

  5. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas de disjuntor e agregação média.

  6. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar filtro e defina Nome como Atraso.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas de disjuntor, agregação média e Filtro de Atraso.

  7. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Aplicar divisão e defina Dividir por tipo.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas de disjuntor, agregação média e divisão.

  8. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar métrica e defina Métrica como resilience4j_circuitbreaker_buffered_calls e, em seguida, defina Agregação como Média. Selecione Adicionar métrica novamente e defina Métrica como resilience4j_circuitbreaker_slow_calls e, em seguida, defina Agregação definida como Média.

    Captura de tela do portal do Azure que mostra a página Métricas do Application Insights com o gráfico descrito nesta etapa.

  1. Na sua instância do Azure Spring Apps, selecione Application Insights no painel de navegação e, em seguida, selecione o Application Insights padrão na página.

    Captura de ecrã do portal do Azure que mostra a página Azure Spring Apps Application Insights com a instância predefinida do Application Insights realçada.

    Nota

    Se não houver nenhum Application Insights padrão disponível, você poderá ativar o agente Java In-Process. Para obter mais informações, consulte a seção Gerenciar insights de aplicativos usando o portal do Azure de Usar o agente Java em processo do Application Insights no Azure Spring Apps.

  2. Habilite a coleta de dimensões para métricas resilience4j. Para obter mais informações, consulte a seção Dimensões de métricas personalizadas e preagregação de Métricas baseadas em log e pré-agregadas no Application Insights.

  3. Selecione Métricas no painel de navegação. A página Métricas fornece menus suspensos e opções para definir os gráficos neste procedimento. Para todos os gráficos, defina Metric Namespace como azure.applicationinsights.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure com o menu Espaço de Nomes de Métricas aberto e azure.applicationinsights realçado.

  4. Defina Metric como resilience4j_circuitbreaker_buffered_calls e, em seguida, defina Aggregation como Avg.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas em buffer de disjuntor e agregação média.

  5. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas de disjuntor e agregação média.

  6. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar filtro e defina Nome como Atraso.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas de disjuntor, agregação média e filtro de atraso.

  7. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Aplicar divisão e defina Dividir por tipo.

    Captura de ecrã da página Métricas do Application Insights do portal do Azure que mostra um gráfico com chamadas de disjuntor, agregação média e divisão.

  8. Defina Metric como resilience4j_circuitbreaker_calls e, em seguida, defina Aggregation como Avg. Selecione Adicionar métrica e defina Métrica como resilience4j_circuitbreaker_buffered_calls e, em seguida, defina Agregação como Média. Selecione Adicionar métrica novamente e defina Métrica como resilience4j_circuitbreaker_slow_calls e, em seguida, defina Agregação definida como Média.

    Captura de tela do portal do Azure que mostra a página Métricas do Application Insights com o gráfico descrito nesta etapa.

Próximos passos