Partilhar via


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

Nota

Os planos Basic, Standarde Enterprise entraram em um período de aposentadoria em 17 de março de 2025. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.

O plano de consumo padrão e o plano dedicado entraram em um período de desativação a 30 de setembro de 2024, com um encerramento completo até o final de março de 2025. Para obter mais informações, consulte Migrar o consumo padrão e o plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

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 as aplicações 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 aplicações com endpoints:

    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 CircuitBreakerFactory, que é implementada como um bean criado automaticamente quando inclui um starter do Spring Cloud Circuit Breaker. Para obter mais informações, consulte Spring Cloud Circuit Breaker.

  • 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 pelas aplicações de gateway e aceda ao endpoint 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 Gerir insights de aplicações usando o portal do Azure em Utilizar o agente Java em processo do Application Insights no Azure Spring Apps.

  2. Ativar a recolha 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 na secção sobre Métricas baseadas em log e pré-agregadas no Application Insights.

  3. Selecione Métricas no painel de navegação. A página de 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 de Métricas do Application Insights no portal do Azure, que mostra um gráfico com chamadas em buffer do 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 Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. 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 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 Gerir insights de aplicações utilizando o portal do Azure da Utilizar o agente Java In-Process do Application Insights nos Azure Spring Apps.

  2. Ative a recolha de dimensões para métricas do resilience4j. Para obter mais informações, consulte a secção sobre dimensões de métricas personalizadas e pré-agregação da secçã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 de Métricas fornece menus suspensos e opções para definir os gráficos para esta operação. Para todos os gráficos, defina Metric Namespace como azure.applicationinsights.

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

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

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

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

    Captura de ecrã da página de Métricas do Application Insights no portal do Azure que mostra um gráfico com chamadas de interrupções de circuito 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 Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. 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 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