ALB prend en charge le traçage. Une fois cette fonctionnalité activée, ALB injecte automatiquement des en-têtes de traçage lors du transfert des requêtes. Vous obtenez ainsi 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. Identifiez et résolvez rapidement les goulots d'étranglement liés aux performances dans les architectures distribuées.
Informations générales
L'analyse de traçage 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 segments (spans), où chaque segment représente une partie nommée et chronométrée de l'exécution continue au sein de la chaîne d'appels.
Après avoir activé le traçage ALB, celui-ci injecte ou met à jour automatiquement les en-têtes de traçage HTTP lors du transfert des requêtes, puis transmet les données de traçage à 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 composant.
|
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
Si un service en 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 :
|
Composant |
Valeur de la requête en amont |
Valeur transférée par ALB |
Traitement |
|
|
|
|
Hérité |
|
|
|
|
Hérité |
|
|
|
|
Généré |
|
|
|
|
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 traçage
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 et les insère dans l'en-tête HTTP. Comme il n'y a pas de nœud en 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 traçage
Si un service en amont inclut déjà les champs complets X-B3-* dans l'en-tête de requête, ALB hérite des valeurs de X-B3-TraceId et X-B3-Sampled, génère un nouveau X-B3-SpanId et transmet le X-B3-SpanId de la requête en amont au serveur backend en tant que X-B3-ParentSpanId.
Le tableau suivant compare les valeurs des champs :
|
Champ |
Valeur de la requête en amont |
Valeur transférée par ALB |
Traitement |
|
|
|
|
Hérité |
|
|
|
|
Généré |
|
|
|
|
Utilise le SpanId en amont |
|
|
|
|
Hérité |
Périmètre d'application
Seules les instances ALB Standard Edition et WAF Enhanced Edition prennent en charge le traçage. Les instances ALB Basic Edition 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, configurez les options 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 non déjà 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 : Sélectionnez OpenTelemetry(W3C) ou Zipkin(B3).
Sampling Rate : Valeurs valides : 1 à 100. Valeur par défaut : 100. Ajustez le taux d'échantillonnage pour contrôler le volume des données de traçage 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 traçage
Connectez-vous à un terminal client et testez la connectivité avec le serveur backend. Pour plus d'informations, consultez la rubrique Implémenter 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 traçage.
La barre de recherche 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, celle-ci cesse d'envoyer les données de traçage à Managed Service for OpenTelemetry.
Facturation
Lorsque vous utilisez le traçage, Alibaba Cloud active automatiquement Managed Service for OpenTelemetry et le service de journal d'accès. Après l'activation, des frais sont facturés pour la transmission 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 (Beijing), 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) |