Migration de l'en-tête Kafka

Récapitulatif

Instana modifiera le format de ses en-têtes pour la corrélation des traces d' Kafka s au cours des prochains mois. Vous n'avez pas besoin de prendre des mesures. La seule raison pour laquelle vous pourriez vouloir vérifier le format de l'en-tête, c'est si la taille du message vous préoccupe. Pendant la migration, la taille du message augmente légèrement. La surcharge d' Instana s ajoutée aux messages est négligeable dans la quasi-totalité des cas d'utilisation. Mais si vous voulez économiser quelques octets par message, lisez.

Arrière-plan

Pour activer le traçage distribué, Instana ajoute des informations de corrélation de traçage aux requêtes et aux messages. Le format exact dépend du protocole de communication sous-jacent. Pour les messages « Kafka », l' Instana envoie actuellement des informations de corrélation de trace au format binaire. Le protocole Kafka autorise des valeurs binaires arbitraires pour les en-têtes; ce comportement est donc entièrement conforme au format de message Kafka. Cependant, certaines implémentations de clients « Kafka » ne gèrent pas correctement les en-têtes binaires. C'est pourquoi Instana passera au suivi des en-têtes de corrélation avec des valeurs de type chaîne de caractères plutôt que des valeurs binaires. Modifier le format des en-têtes de corrélation des traces pour un protocole de communication n'est pas une mince affaire, car Instana n'a aucun contrôle sur le moment où les composants de traçage sont mis à jour pour vos applications. Instana On ne peut pas partir du principe que tous les traceurs participant à une trace donnée sont mis à jour en même temps. En outre, le format d'en-tête qu'un traceur injecte dans un message doit être compris par le traceur qui surveille le service qui reçoit ce message. Par conséquent, il est essentiel que la migration soit effectuée d'une manière compatible en amont. Nous avons préparé ce mouvement pendant un certain temps, et tous nos traceurs peuvent déjà s'occuper à la fois de l'ancien et du nouveau format d'en-tête.

En résumé, cette migration sera implémentée en plusieurs phases et autorisera une période de transition, afin de garantir que la corrélation de trace dans Kafka fonctionne toujours de manière prête à l'emploi.

Versions de Tracer

Les versions de traceur suivantes sont prêtes à traiter le nouveau format d'en-tête de chaîne et permettent également de configurer le format d'en-tête à utiliser lors de l'envoi des messages. Vous n'avez pas besoin de mettre à jour ces versions de traceur immédiatement, sauf si vous souhaitez configurer explicitement le format d'en-tête pour vos services qui envoient des messages Kafka . Cela dit, Instana recommande toujours de mettre à jour régulièrement les traceurs.

Environnement d'exécution Version Date d'édition Commentaire
Golang instasarama@v1.2.0 25 mai 2022 Ce traceur est mis à jour manuellement en installant la dernière version de package.
Java Java 1.2.413 du capteur de traces 31 mai 2022 Ce traceur est généralement mis à jour automatiquement par l'agent Instana.
.NET Core Instana.Tracing.Core@1.228.1 7 juillet 2022 Ce traceur est mis à jour manuellement en installant la dernière version de NuGet (à moins que vous n'utilisiez le webhook Kubernetes AutoTrace ).
Node.js @instana/collector@2.3.0 24 mai 2022 Ce traceur est mis à jour manuellement en installant la dernière version du paquet npm (à moins que vous n'utilisiez le webhook Kubernetes AutoTrace ).

Les autres environnements d'exécution en plus de ceux répertoriés ici ne sont pas affectés par cette modification.

En outre, les versions de traceur suivantes envoient les deux formats d'en-tête par défaut:

Environnement d'exécution Version Date d'édition Commentaire
Golang instasarama@v1.5.0 4 octobre 2022 Ce traceur est mis à jour manuellement en installant la dernière version de package.
Java Java 1.2.425 du capteur de traces 4 octobre 2022 Ce traceur est généralement mis à jour automatiquement par l'agent Instana.
.NET Core Instana.Tracing.Core@1.235.1 5 octobre 2022 Ce traceur est mis à jour manuellement en installant la dernière version de NuGet (à moins que vous n'utilisiez le webhook Kubernetes AutoTrace ).
Node.js @instana/collector@2.10.0 5 octobre 2022 Ce traceur est mis à jour manuellement en installant la dernière version du paquet npm (à moins que vous n'utilisiez le webhook Kubernetes AutoTrace ).

Enfin, les versions de traceur suivantes envoient uniquement le format d'en-tête de chaîne par défaut. La configuration du format d'en-tête (le cas échéant) est ignorée:

Environnement d'exécution Version Date d'édition Commentaire
Golang instasarama@v1.24.0 24 juin 2024 Ce traceur est mis à jour manuellement en installant la dernière version de package.
Java Non disponible Non disponible Non disponible
.NET Core Instana.Tracing.Core@1.274.1 10 juin 2024 Ce traceur est mis à jour manuellement en installant la dernière version de NuGet (à moins que vous n'utilisiez le webhook Kubernetes AutoTrace ).
Node.js @instana/collector@4.0.0 16 octobre 2024 Ce traceur est mis à jour manuellement en installant la dernière version de package.
Python @instana@3.5.0 1er juillet 2025 Ce traceur est mis à jour manuellement en installant la dernière version du paquet (à moins que vous n'utilisiez le webhook Kubernetes AutoTrace ).

Les étapes de la migration

Phase 0

Dans cette phase, les traceurs n'envoient par défaut que les en-têtes binaires " X_INSTANA_C et " X_INSTANA_L

L'envoi d'en-têtes de chaîne au lieu d'en-têtes binaires ou l'envoi des deux ensembles d'en-têtes est possible. Pour plus d'informations, voir Options de configuration.

Lorsqu'un message est reçu, les traceurs recherchent les deux ensembles d'en-têtes et peuvent continuer une trace à partir des deux formats d'en-tête.

Cette phase s'est terminée avec le début de la phase 1.

Phase 1

Remarque : il s'agit de la phase actuelle de la migration.

Actuellement, tous les traceurs envoient par défaut des en-têtes binaires et des en-têtes de chaîne, c'est-à-dire " X_INSTANA_C et " X_INSTANA_L ainsi que " X_INSTANA_T et " X_INSTANA_S. Cette phase de transition permet aux traceurs d'être progressivement mis à niveau dans l'ensemble de votre infrastructure informatique.

Si le fait d'avoir quatre en-têtes « Instana » au lieu de deux vous préoccupe, vous pouvez appliquer la stratégie de migration suivante pour optimiser la charge liée aux en-têtes de message :

  1. Configurez tous les services qui envoient un message Kafka pour envoyer uniquement des en-têtes binaires. Voir Options de configuration.
  2. Avant le mois de septembre 2023, assurez-vous que tous les traceurs sont mis à niveau vers une version prenant en charge les deux formats d'en-tête.
  3. Configurez tous les services qui envoient un message Kafka pour envoyer uniquement des en-têtes string . Voir Options de configuration. En utilisant ce paramètre, les services ne sont plus affectés par la migration en cours.
  4. Une fois que tous les traceurs ont été mis à niveau vers une version de phase 2, la configuration du format d'en-tête peut être supprimée. Mais même si la configuration reste en place, elle sera ignorée.

Vous pouvez également ignorer l'étape 1 et utiliser directement le nouveau format d'en-tête si tous les traceurs ont déjà été mis à niveau vers une version qui est suffisamment nouvelle.

Phase 2

Cette phase commencera approximativement en septembre 2023.

À partir de cette phase, les traceurs d' Instana passeront par défaut de l'envoi du format d'en-tête binaire hérité au nouveau format d'en-tête sous forme de chaîne de caractères. La configuration du format d'en-tête (le cas échéant) sera ignorée. Il s'agit de la phase finale de la migration.

Options de configuration

Le format d'en-tête Kafka peut être configuré avec deux approches différentes, soit dans la configuration de l'agent hôte , soit à l'aide d'une variable d'environnement.

Options de configuration de l'agent

Définissez com.instana.tracing.kafka.header-format sur binary, stringou both. Voici un exemple de configuration :

com.instana.tracing:
  kafka:
    header-format: both # possible values: binary, both, string

Une option est fournie pour désactiver complètement l'injection d'en-têtes dans les messages Kafka . Consultez les exemples de paramètres suivants:

Remarque : ce paramètre désactivera complètement la corrélation des traces pour Kafka. Il n'est pas recommandé d'activer cette option, car cela divisera les traces : la première trace s'achèvera au niveau du service qui génère le message « Kafka », et le service qui reçoit le message « Kafka » lancera une nouvelle trace.
com.instana.tracing:
  kafka:
    trace-correlation: false

Variables d'environnement

  • Définissez la variable d'environnement INSTANA_KAFKA_HEADER_FORMAT sur le processus surveillé. Les valeurs admises pour la variable d'environnement sont binary, stringou both.
  • Une option est également fournie pour désactiver complètement l'injection d'en-têtes dans les messages Kafka . Cela désactive également la corrélation de trace pour Kafka. Le paramètre correspondant est INSTANA_KAFKA_TRACE_CORRELATION=false.

Noms d'en-têtes

Les formats d'en-tête sont décrits en détail dans la section Kafka Tracing Headers.

En-têtes hérités/binaires

En mode hérité, la corrélation des traces pour les messages Kafka utilise les deux en-têtes " X_INSTANA_C et " X_INSTANA_L, avec un contenu binaire.

En-têtes modernes/chaînes

Après la migration ou lorsque vous configurez l'envoi d'en-têtes de chaîne, la corrélation de trace pour le message Kafka utilise les en-têtes X_INSTANA_T, X_INSTANA_S (et éventuellement X_INSTANA_L_S). Les trois en-têtes sont envoyés avec des valeurs de chaîne.