Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Incomplete OpenFeign monitoring data in ARMS

Última atualização: Jun 27, 2026

Ao conectar uma aplicação Java que usa OpenFeign ao Application Monitoring do ARMS, os dados da aplicação podem ficar incompletos e as informações das aplicações downstream podem não ser exibidas.

Isso ocorre porque o OpenFeign ativa o Hystrix por padrão, e o Hystrix usa internamente o framework assíncrono RxJava. Quando o Hystrix despacha uma requisição para uma thread diferente, o agente do ARMS perde o contexto de rastreamento, o que interrompe o vínculo entre as chamadas upstream e downstream.

Nota

Esse problema afeta apenas versões do agente do ARMS anteriores à 2.6.0. O agente do ARMS 2.6.0 e posteriores oferece suporte nativo a frameworks assíncronos e rastreia corretamente chamadas OpenFeign + Hystrix sem necessidade de alterações.

Solução

Opção 1: Atualizar o agente do ARMS (recomendado)

Atualize o agente do ARMS da sua aplicação Java para a versão 2.6.0 ou superior. Essa versão oferece suporte nativo a frameworks assíncronos, permitindo rastrear chamadas OpenFeign + Hystrix sem alterações no código.

Opção 2: Substituir Hystrix por OkHttp

Caso não seja possível atualizar o agente do ARMS, desative o Hystrix e use o OkHttp como cliente HTTP para o Feign. Essa abordagem evita a troca assíncrona de threads que causa a perda do contexto de rastreamento.

  1. Adicione a dependência feign-okhttp ao arquivo pom.xml:

       <!-- Use OkHttp as the HTTP client for Feign -->
       <dependency>
         <groupId>io.github.openfeign</groupId>
         <artifactId>feign-okhttp</artifactId>
       </dependency>
  2. Atualize o arquivo de configuração do Spring Cloud para ativar o OkHttp e desativar o Hystrix:

       feign.okhttp.enabled: true
       feign.hystrix.enabled: false
  3. Adicione uma classe de configuração do OkHttp ao projeto e ajuste os valores de timeout conforme as necessidades da aplicação.

       @Configuration
       @ConditionalOnClass(Feign.class)
       @AutoConfigureBefore(FeignAutoConfiguration.class)
       public class FeignClientOkHttpConfiguration {
    
           @Bean
           public OkHttpClient okHttpClient() {
               return new OkHttpClient.Builder()
                   .connectTimeout(20, TimeUnit.SECONDS)   // Connection timeout
                   .readTimeout(20, TimeUnit.SECONDS)       // Response timeout
                   .writeTimeout(20, TimeUnit.SECONDS)      // Write request timeout
                   .retryOnConnectionFailure(true)           // Enable automatic reconnection
                   .connectionPool(new ConnectionPool())     // Use the default connection pool
                   .build();
           }
       }

Verificar o resultado

Após aplicar qualquer uma das soluções, reinicie a aplicação e verifique o console do Application Monitoring do ARMS:

  • Os dados da aplicação referentes às chamadas OpenFeign estão completos.

  • As informações das aplicações downstream são exibidas corretamente.