Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 10, 2026

Après avoir connecté une application Java utilisant OpenFeign à ARMS Application Monitoring, les données applicatives peuvent être incomplètes et les données des applications en aval peuvent ne pas s'afficher.

Ce problème survient car OpenFeign active Hystrix par défaut, et Hystrix utilise en interne le framework asynchrone RxJava. Lorsque Hystrix distribue une requête vers un autre thread, l'agent ARMS perd le contexte de trace, ce qui rompt le lien entre les appels amont et aval.

Remarque

Ce problème n'affecte que les versions de l'agent ARMS antérieures à la 2.6.0. L'agent ARMS 2.6.0 et les versions ultérieures prennent en charge nativement les frameworks asynchrones et tracent correctement les appels OpenFeign + Hystrix sans aucune modification.

Solution

Option 1 : Mettre à niveau l'agent ARMS (recommandé)

Mettez à niveau l'agent ARMS de votre application Java vers la version 2.6.0 ou ultérieure. Cette version prend en charge nativement les frameworks asynchrones, ce qui permet de tracer les appels OpenFeign + Hystrix sans modifier le code.

Option 2 : Remplacer Hystrix par OkHttp

Si vous ne pouvez pas mettre à niveau l'agent ARMS, désactivez Hystrix et utilisez OkHttp comme client HTTP pour Feign. Cette approche évite le changement de thread asynchrone responsable de la perte du contexte de trace.

  1. Ajoutez la dépendance feign-okhttp à votre fichier pom.xml :

       <!-- Use OkHttp as the HTTP client for Feign -->
       <dependency>
         <groupId>io.github.openfeign</groupId>
         <artifactId>feign-okhttp</artifactId>
       </dependency>
  2. Modifiez votre fichier de configuration Spring Cloud pour activer OkHttp et désactiver Hystrix :

       feign.okhttp.enabled: true
       feign.hystrix.enabled: false
  3. Ajoutez une classe de configuration OkHttp à votre projet. Ajustez les valeurs de délai d'attente selon les besoins de votre application.

       @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();
           }
       }

Vérifier le résultat

Après avoir appliqué l'une des solutions, redémarrez votre application et consultez la console ARMS Application Monitoring :

  • Les données applicatives des appels OpenFeign sont complètes.

  • Les données des applications en aval s'affichent correctement.