ALB prend en charge le traçage. Lorsque vous activez cette fonctionnalité, ALB injecte automatiquement des en-têtes de trace lors du transfert des requêtes. Cela vous permet d'obtenir des données de traçage complètes, incluant la source de la requête, les nœuds traversés et le temps de réponse. Vous pouvez ainsi identifier et résoudre rapidement les goulots d'étranglement liés aux performances dans les architectures distribuées.
Informations générales
L'analyse de trace met à la disposition des développeurs d'applications distribuées des outils tels que la reconstruction complète de la chaîne d'appels, les statistiques sur le volume des requêtes, la visualisation de la topologie et l'analyse des dépendances entre applications. Ces outils facilitent l'analyse et le diagnostic rapides des goulots d'étranglement au sein des architectures d'applications distribuées.
Un enregistrement de trace correspond à une chaîne d'appels (Trace). De manière générale, une chaîne d'appels représente le parcours d'exécution d'une transaction ou d'un flux de travail à travers un système distribué. Il s'agit d'un graphe acyclique dirigé (DAG) composé de plusieurs spans, chaque span représentant un segment nommé et horodaté d'exécution continue au sein de la chaîne d'appels.
Une fois le traçage ALB activé, ALB injecte ou met à jour les en-têtes de trace HTTP lors du transfert des requêtes, puis transmet les données de trace au service Alibaba Cloud Managed Service for OpenTelemetry. Le traçage ALB prend en charge les méthodes OpenTelemetry et Zipkin.
Méthodes de traçage
OpenTelemetry
Lorsque le traçage ALB est activé avec le type OpenTelemetry sélectionné, ALB ajoute ou met à jour le champ traceparent dans l'en-tête HTTP avant de transférer une requête vers un serveur backend. Le format du champ traceparent est {version}-{traceid}-{parentid}-{traceflags}. Le tableau suivant décrit chaque partie.
|
Champ |
Description |
Format |
|
|
Version d'OpenTelemetry utilisée. |
Toujours |
|
|
ID identifiant cette trace. |
Nombre hexadécimal de 32 chiffres. |
|
|
ID identifiant le nœud actuel sur la chaîne de trace. |
Nombre hexadécimal de 16 chiffres. |
|
|
Indique si cette requête est échantillonnée. |
|
Scénario 1 : La requête ne contient pas traceparent
Si l'en-tête de requête envoyé par le client ne contient pas le champ traceparent, ALB génère un champ traceparent complet et l'insère dans l'en-tête HTTP.
Scénario 2 : La requête contient déjà traceparent
Lorsqu'un service amont inclut déjà le champ traceparent dans l'en-tête de requête, ALB hérite des valeurs version, traceid et traceflags, et génère uniquement un nouveau parentid.
Le tableau suivant compare les valeurs des champs :
|
Partie |
Valeur de la requête amont |
Valeur transférée par ALB |
Traitement |
|
|
|
|
Hérité |
|
|
|
|
Hérité |
|
|
|
|
Généré récemment |
|
|
|
|
Hérité |
Zipkin
Lorsque le traçage ALB est activé avec le type Zipkin sélectionné, ALB ajoute ou met à jour les champs X-B3-* dans l'en-tête HTTP avant de transférer une requête vers un serveur backend. Le tableau suivant décrit chaque champ.
|
Champ |
Description |
Format |
|
|
ID identifiant cette trace. |
Nombre hexadécimal de 16 chiffres. |
|
|
ID identifiant le nœud actuel sur la chaîne de trace. |
Nombre hexadécimal de 16 chiffres. |
|
|
ID identifiant le nœud précédent sur la chaîne de trace. |
Nombre hexadécimal de 16 chiffres. |
|
|
Indique si cette requête est échantillonnée. |
|
Scénario 1 : La requête ne contient pas d'en-têtes de trace
Si l'en-tête de requête envoyé par le client ne contient pas les champs X-B3-*, ALB agit comme le nœud d'origine de la chaîne de trace. Il génère les champs X-B3-TraceId, X-B3-SpanId et X-B3-Sampled, puis les insère dans l'en-tête HTTP. Comme il n'y a aucun nœud amont dans la chaîne, la requête transférée ne contient pas le champ X-B3-ParentSpanId.
Scénario 2 : La requête contient déjà des en-têtes de trace
Lorsqu'un service amont inclut déjà les champs X-B3-* complets dans l'en-tête de requête, ALB hérite des valeurs X-B3-TraceId et X-B3-Sampled. Il génère un nouveau X-B3-SpanId et transmet le X-B3-SpanId de la requête amont au serveur backend en tant que X-B3-ParentSpanId.
Le tableau suivant compare les valeurs des champs :
|
Champ |
Valeur de la requête amont |
Valeur transférée par ALB |
Traitement |
|
|
|
|
Hérité |
|
|
|
|
Généré récemment |
|
|
|
|
Utilise le SpanId amont |
|
|
|
|
Hérité |
Champ d'application
Seules les éditions Standard et WAF Enhanced prennent en charge le traçage pour les instances ALB. Les instances ALB de l'édition Basic ne prennent pas en charge cette fonctionnalité.
Vous avez créé une instance ALB et créé un groupe de serveurs.
Vous avez configuré un écouteur pour l'instance et l'avez associé à un groupe de serveurs.
-
Vous avez créé une instance ECS en tant que serveur backend, déployé le service Nginx sur l'instance ECS et ajouté l'instance ECS au groupe de serveurs.
Étape 1 : Activer le traçage
Connectez-vous à la console ALB, sélectionnez la région où se trouve votre instance, repérez l'instance cible et cliquez sur son ID d'instance.
Cliquez sur l'onglet Listener, repérez l'écouteur cible et cliquez sur son ID d'écouteur.
Dans la section Tracing de l'onglet Listener Details, activez l'interrupteur Tracing.
-
Dans la boîte de dialogue Enable Tracing, effectuez les configurations suivantes et cliquez sur Save.
-
Activate Service
Activate Managed Service for OpenTelemetry : si vous utilisez ce service pour la première fois, sélectionnez l'accord de service pour confirmer l'activation.
-
Create Access Log (si aucun journal d'accès n'a encore été créé pour l'instance ALB cible)
-
Project : unité de gestion des ressources dans Simple Log Service utilisée pour l'isolation et le contrôle des ressources.
Select Project : sélectionnez un projet existant dans la liste déroulante.
Create Project : saisissez un nom de projet dans le champ.
-
Logstore : unité dans Simple Log Service dédiée à la collecte, au stockage et à l'interrogation des données de journal.
Select Logstore : sélectionnez un Logstore existant dans la liste déroulante.
Create Logstore : saisissez un nom de Logstore dans le champ. Si vous sélectionnez Create Project, vous devez également sélectionner Create Logstore.
-
-
Enable Tracing Analysis
Tracing Analysis Protocol : vous pouvez sélectionner OpenTelemetry(W3C) ou Zipkin(B3).
Sampling Rate : valeurs valides de 1 à 100. Valeur par défaut : 100. Ajustez le taux d'échantillonnage pour contrôler le volume des données de trace rapportées.
Notes on Creating Service-linked Role : lors de cette opération, le système crée automatiquement un rôle lié au service.
-
Étape 2 : Afficher les données de trace
Connectez-vous à un terminal client et testez la connectivité avec le serveur backend. Pour plus d'informations, consultez la rubrique Mettre en œuvre rapidement l'équilibrage de charge IPv4 avec ALB.
Connectez-vous à la console ALB, sélectionnez la région où se trouve votre instance, repérez l'instance cible et cliquez sur son ID d'instance.
Cliquez sur l'onglet Listener, repérez l'écouteur cible et cliquez sur son ID d'écouteur.
-
Dans la section Tracing de l'onglet Listener Details, cliquez sur View à côté de Trace Analysis et accédez à la console Managed Service for OpenTelemetry pour afficher les données de trace.
La barre de requête en haut de la page inclut automatiquement les filtres
attributes.app_lb_idetattributes.slb_vport. Le panneau de filtre rapide sur la gauche vous permet de filtrer par statut, plage de durée et nom d'application.
Informations complémentaires
Désactiver le traçage
Le traçage dépend des journaux d'accès. La désactivation des journaux d'accès rend le traçage indisponible, procédez donc avec prudence. Après la désactivation du traçage, les journaux d'accès restent activés. Si vous n'en avez plus besoin, désactivez-les manuellement.
Lorsque le traçage est désactivé pour tous les écouteurs d'une instance ALB, ALB cesse d'envoyer les données de trace vers Managed Service for OpenTelemetry.
Facturation
Lorsque vous utilisez le traçage, Alibaba Cloud active automatiquement le service Managed Service for OpenTelemetry et le service de journal d'accès. Après l'activation, des frais sont facturés pour le rapport des données, le stockage des traces et les services de journalisation.
Régions prises en charge pour le traçage ALB
Régions du cloud public
|
Zone |
Région |
|
Chine |
Chine (Hangzhou), Chine (Shanghai), Chine (Shenzhen), Chine (Chengdu), Chine (Qingdao), Chine (Pékin), Chine (Zhangjiakou), Chine (Ulanqab), Chine (Hong Kong), Chine (Guangzhou) et Chine (Heyuan) |
|
Asie-Pacifique |
Singapour, Malaisie (Kuala Lumpur), Japon (Tokyo), Indonésie (Jakarta) |
|
Europe et Amériques |
Royaume-Uni (Londres), Allemagne (Francfort), États-Unis (Virginie) et États-Unis (Silicon Valley) |