Compartilhar via


Coletar métricas do disjuntor Resilience4J do Spring Cloud com Micrometer (versão prévia)

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica a:✅ Básico/Padrão ✅ Enterprise

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

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

Pré-requisitos

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

Compilar e implantar aplicativos

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

  1. Use o seguinte comando para clonar e criar 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 de Aplicativos Spring do Azure:

    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 comando 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 de Aplicativos Spring do Azure:

    Observação

    Se sua assinatura nunca foi usada para criar uma instância do plano Enterprise dos Aplicativos Spring do Azure, 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 comando 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
    

Observação

  • 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 você inclui um iniciador do disjuntor do Spring Cloud. Para obter mais informações, confira Disjuntor do Spring Cloud.

  • As duas dependências a seguir têm conflitos com os 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 do gateway e acesse o ponto de extremidade de spring-cloud-circuit-breaker-demo da seguinte maneira:

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

Localizar métricas do Resilence4j no portal do Azure

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

    Captura de tela do portal do Azure que mostra a página do Aplicativos Spring do Azure Application Insights com o Application Insights destacado.

    Observação

    Se você não habilitar o Application Insights, poderá habilitar o agente em processo do Java. Para obter mais informações, consulte a seção Gerenciar o Application Insights usando o portal do Azure de Usar o agente em processo do Java do Application Insights nos Aplicativos Spring do Azure.

  2. Habilitar a coleção de dimensão para métricas do resilience4j. Para obter mais informações, veja a seção Dimensões de métricas personalizadas e pré-agregaçã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 Namespace de Métrica como azure.applicationinsights.

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

  4. Defina Métrica como resilience4j_circuitbreaker_buffered_call e, em seguida, defina Agregação como Média.

    Captura de tela 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 Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média.

    Captura de tela 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 Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Adicionar filtro e defina Nome como Atraso.

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

  7. Defina Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Aplicar divisão e defina Dividir por como tipo.

    Captura de tela 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 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 instância dos Aplicativos Spring do Azure, selecione Application Insights no painel de navegação e, em seguida, selecione o Application Insights padrão na página.

    Captura de tela do portal do Azure que mostra a página do Application Insights dos Aplicativos Spring do Azure com a instância padrão do Application Insights realçada.

    Observação

    Se não houver nenhum Application Insights padrão disponível, você poderá habilitar o agente em processo do Java. Para obter mais informações, consulte a seção Gerenciar o Application Insights usando o portal do Azure de Usar o agente em processo do Java do Application Insights nos Aplicativos Spring do Azure.

  2. Habilitar a coleção de dimensão para métricas do resilience4j. Para obter mais informações, veja a seção Dimensões de métricas personalizadas e pré-agregaçã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 Namespace de Métrica como azure.applicationinsights.

    Captura de tela da página Métricas do Application Insights do portal do Azure com o menu Namespace da Métrica aberto e azure.applicationinsights realçado.

  4. Defina Métrica como resilience4j_circuitbreaker_buffered_call e, em seguida, defina Agregação como Média.

    Captura de tela 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 Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média.

    Captura de tela 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 Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Adicionar filtro e defina Nome como Atraso.

    Captura de tela 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 Métrica como resilience4j_circuitbreaker_calls e, em seguida, defina Agregação como Média. Selecione Aplicar divisão e defina Dividir por como tipo.

    Captura de tela 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 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óximas etapas