Kafka Migration des en-têtes
Récapitulatif
Instana modifie son format d'en-tête pour la corrélation des traces Kafka au cours des prochains mois. Vous n'avez pas besoin de prendre des mesures. La seule raison pour laquelle vous pourriez vouloir examiner le format de l'en-tête est que vous êtes préoccupé par la taille du message. Pendant la migration, la taille des messages augmente légèrement. La surcharge qu'Instana ajoute aux messages est négligeable pour presque tous les cas d'utilisation. Mais si vous voulez économiser quelques octets par message, lisez la suite.
Arrière-plan
Pour permettre le traçage distribué, Instana ajoute des informations de corrélation de traçage aux demandes et aux messages. Le format exact dépend du protocole de communication sous-jacent. Pour les messages Kafka, Instana envoie actuellement des informations de corrélation de trace dans un format binaire. Le protocole Kafka autorise des valeurs binaires arbitraires pour les en-têtes, de sorte que ce comportement est entièrement conforme au format de message Kafka. Cependant, certaines implémentations du client Kafka ne gèrent pas bien les en-têtes binaires. Pour cette raison, Instana va passer à des en-têtes de corrélation de trace avec des valeurs de chaîne au lieu de valeurs binaires. Changer le format des en-têtes de corrélation de trace pour un protocole de communication n'est pas trivial, parce qu'Instana n'a pas de contrôle sur le moment où les composants de traceur sont mis à jour pour vos applications. Instana ne peut pas supposer que tous les traceurs qui participent à une trace donnée sont mis à jour en même temps. En outre, le format de l'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. Il est donc essentiel que la migration soit effectuée d'une manière qui soit compatible avec le passé. Nous avons préparé ce changement depuis un certain temps et tous nos traceurs peuvent déjà traiter l'ancien et le nouveau format d'en-tête.
En résumé, cette migration sera mise en œuvre en plusieurs phases et prévoit une période de transition, afin de garantir que la corrélation des traces sur le site Kafka fonctionne toujours.
Versions du traceur
Les versions suivantes du traceur 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 immédiatement ces versions de traceur, à moins que vous ne souhaitiez 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 du paquet. |
| Java | Capteur de trace Java 1.2.413 | 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 (sauf si vous utilisez 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 (sauf si vous utilisez le webhook Kubernetes AutoTrace ). |
Les exécutions autres que celles listées ici ne sont pas concernées par ce changement.
En outre, les versions suivantes du traceur 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 du paquet. |
| Java | Capteur de trace Java 1.2.425 | 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 (sauf si vous utilisez 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 (sauf si vous utilisez le webhook Kubernetes AutoTrace ). |
Enfin, les versions suivantes du traceur n'envoient par défaut que des en-têtes au format chaîne. La configuration du format de l'en-tête (si elle existe) 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 du paquet. |
| 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 (sauf si vous utilisez 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 du paquet. |
| Python | @instana@3.5.0 |
01 juillet 2025 | Ce traceur est mis à jour manuellement en installant la dernière version du paquet (sauf si vous utilisez le webhook Kubernetes AutoTrace ). |
Phases de 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 .
Il est possible d'envoyer des en-têtes de chaîne au lieu d'en-têtes binaires, ou d'envoyer les deux ensembles d'en-têtes. 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 sont en mesure de poursuivre une trace à partir des deux formats d'en-têtes.
Cette phase a pris fin avec le début de la phase 1.
Phase 1
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 de mettre progressivement à niveau les traceurs dans l'ensemble de votre infrastructure informatique.
Si vous êtes préoccupé par le fait que quatre en-têtes Instana soient attachés au lieu de deux, vous pouvez appliquer la stratégie de migration suivante pour optimiser la surcharge des en-têtes de message :
- Configurez tous les services qui envoient des messages Kafka pour qu'ils n'envoient que des en-têtes binaires. Voir les options de configuration.
- Avant septembre 2023, veillez à ce que tous les traceurs soient mis à jour vers une version prenant en charge les deux formats d'en-tête.
- Configurez tous les services qui envoient des messages Kafka pour qu'ils n'envoient que des en-têtes de chaîne. Voir les options de configuration. En utilisant ce paramètre, les services ne sont plus affectés par la migration en cours.
- Une fois que tous les traceurs sont passés à 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 sauter l'étape 1 et utiliser directement le nouveau format d'en-tête, si tous les traceurs ont déjà été mis à jour vers une version suffisamment récente.
Phase 2
Cette phase débutera approximativement en septembre 2023.
À partir de cette phase, les traceurs Instana passeront de l'ancien format d'en-tête binaire au nouveau format d'en-tête de chaîne par défaut. La configuration du format de l'en-tête (si elle existe) sera ignorée. Il s'agit de la phase finale de la migration.
Options de configuration
Le format de l'en-tête Kafka peut être configuré de deux manières différentes, soit dans la configuration de l'agent hôte, soit en utilisant une variable d'environnement.
Options de configuration de l'agent
Définissez com.instana.tracing.kafka.header-format sur binary, string, ou both. Voici un exemple de configuration :
com.instana.tracing:
kafka:
header-format: both # possible values: binary, both, string
Une option permet de désactiver complètement l'injection d'en-têtes dans les messages Kafka. Voir l'exemple de paramétrage suivant :
com.instana.tracing:
kafka:
trace-correlation: false
Variables d'environnement
- Définir la variable d'environnement
INSTANA_KAFKA_HEADER_FORMATsur le processus surveillé. Les valeurs valables pour la variable d'environnement sontbinary,string, ouboth. - Une option permet également de désactiver complètement l'injection d'en-têtes dans les messages Kafka. Cela désactivera également la corrélation des traces pour Kafka. Le réglage est le suivant :
INSTANA_KAFKA_TRACE_CORRELATION=false.
Noms d'en-tête
Les formats d'en-tête sont décrits en détail dans la section Kafka Tracing Headers.
En-têtes binaires hérités
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/à cordes
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.