Activez Xtrace dans l'AlbConfig pour associer des ID de trace au niveau de l'ALB Ingress et corréler les journaux d'accès avec les traces distribuées, sans instrumentation par service.
Prérequis
Assurez-vous de disposer des éléments suivants :
-
Le contrôleur ALB Ingress (version 2.11.1 ou ultérieure) est installé sur votre cluster.
New clusters: Sur la page Component Configuration lors de la création du cluster, sélectionnez ALB Ingress dans le champ Ingress. Consultez les rubriques Créer un cluster ACK managé, Créer un cluster ACK dédié (la création de nouveaux clusters est interrompue) ou Créer un cluster ACK serverless.
Clusters existants : Installez ou mettez à niveau le composant dans la section Composants.
(Clusters ACK dédiés uniquement) Le contrôleur ALB Ingress dispose des autorisations d'accès requises. Consultez la rubrique Accorder des autorisations d'accès au contrôleur ALB Ingress pour un cluster ACK dédié.
Le service Managed Service for OpenTelemetry est activé. ActiverManaged Service for OpenTelemetry si nécessaire.
Fonctionnement
Lorsqu'une requête atteint l'écouteur ALB, celui-ci génère un ID de trace à l'aide de l'algorithme d'échantillonnage Zipkin et l'injecte dans les en-têtes de la requête. L'ALB transfère la requête au backend avec l'ID de trace joint. Les journaux d'accès, incluant l'ID de trace, sont écrits dans un Logstore Simple Log Service (SLS). Le service Managed Service for OpenTelemetry lit ces journaux, reconstruit la trace et l'affiche dans la console OpenTelemetry.
Configurez Xtrace au niveau de l'écouteur dans l'AlbConfig. Le taux d'échantillonnage s'applique à tout le trafic sur cet écouteur.
Activer Xtrace pour ALB Ingress
Étape 1 : Activer Simple Log Service pour le cluster
Activez Simple Log Service pour votre cluster afin de créer automatiquement un projet SLS. Consultez la rubrique Collecter les journaux des conteneurs du cluster ACK.
Étape 2 : Obtenir l'ID du projet SLS
Connectez-vous à la console ACK et cliquez sur Clusters.
Cliquez sur le nom de votre cluster, puis sur Cluster Information.
Dans l'onglet Basic Information, copiez la valeur du champ Simple Log Service Project pour l'étape 3.
Étape 3 : Créer un AlbConfig
L'AlbConfig crée une instance ALB avec les journaux d'accès Simple Log Service et Xtrace activés sur l'écouteur.
-
Créez le fichier
alb-test.yaml:Modifiez les paramètres Xtrace uniquement après avoir activé les journaux d'accès Simple Log Service sur l'instance ALB. Pour réutiliser une instance ALB existante, définissez
forceOverride: truesousspec.configafin d'écraser les propriétés existantes. Consultez la rubrique Réutiliser une instance ALB existante .Consultez la rubrique Créer et gérer des vSwitches .
Paramètres Xtrace
Paramètre
Description
Valeur par défaut
Plage
tracingEnabledActive Xtrace pour l'écouteur
falsetrue/falsetracingSampleTaux d'échantillonnage. 10000 = 100 %, 5000 = 50 %, 1 = 0,01 %
—
1–10000
tracingTypeAlgorithme d'échantillonnage
—
ZipkinapiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Intranet zoneMappings: # The vSwitch must be in an ALB-supported zone and the same VPC as the cluster. Select at least two vSwitches in different zones for high availability. - vSwitchId: vsw-2vc82nndnoo********** # Replace with your vSwitch ID. - vSwitchId: vsw-2vc30f5mlhs********** accessLogConfig: logProject: "k8s-log-xz92lvykqj1siwvif****" # Replace with your SLS project ID from Step 2. logStore: alb_xz92lvykqj1siwvif**** # Must start with "alb_". Created automatically if it does not exist. listeners: - port: 80 protocol: HTTP logConfig: accessLogRecordCustomizedHeadersEnabled: false accessLogTracingConfig: tracingEnabled: true # Set to true to enable Xtrace. Default: false. tracingSample: 9999 # Sampling rate. Range: 1-10000, where 10000 = 100%. Example: 9999 = 99.99%. tracingType: Zipkin # Sampling algorithm. Only takes effect when tracingEnabled is true. -
Appliquez l'AlbConfig :
kubectl apply -f alb-test.yamlRésultat attendu :
albconfig.alibabacloud.com/alb-demo created
Étape 4 : Créer une IngressClass
-
Créez le fichier
alb.yaml:apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo -
Appliquez l'IngressClass :
kubectl apply -f alb.yamlRésultat attendu :
ingressclass.networking.k8s.io/alb created
Étape 5 : Déployer un service et configurer le routage Ingress
-
Créez le fichier
cafe-service.yamlpour déployer un déploiementcoffeeet un servicecoffee-svc:apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee type: NodePort -
Déployez le service :
kubectl apply -f cafe-service.yamlRésultat attendu :
deployment.apps/coffee created service/coffee-svc created -
Créez le fichier
cafe-ingress.yamlavec les règles de routage Ingress :apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80 -
Appliquez l'Ingress :
kubectl apply -f cafe-ingress.yamlRésultat attendu :
ingress.networking.k8s.io/cafe-ingress created
Étape 6 : Configurer la résolution de noms de domaine
Si vous avez défini un domaine personnalisé dans spec.rules.host, ajoutez un enregistrement CNAME pointant vers le nom DNS de l'ALB. Consultez la rubrique Créer et utiliser un ALB Ingress pour exposer des services au trafic externe.
Étape 7 : Envoyer des requêtes pour générer des données de trace
-
Obtenez l'adresse de l'ALB :
kubectl get ingRésultat attendu :
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com 80 16m -
Envoyez une requête :
Les traces apparaissent dans la console après qu'un nombre suffisant de requêtes a été échantillonné. Avec
tracingSample: 9999(99,99 %), une seule requête suffit. Avec un taux plus faible, par exempletracingSample: 100(1 %), envoyez au moins 100 requêtes.curl -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffeefor i in $(seq 1 100); do curl -s -o /dev/null -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffee; doneLa réponse est une page HTML intitulée Hello World.
Vérifier le traçage
Vérifier les journaux d'accès SLS
Connectez-vous à la console ACK et cliquez sur Clusters.
Cliquez sur le nom de votre cluster, puis sur Cluster Information.
-
Dans l'onglet Basic Information, cliquez sur le lien Simple Log Service Project pour ouvrir la console SLS. Sélectionnez le Logstore dont le nom commence par
alb_(par exemple,alb_xz92lvykqj1siwvif****). La recherche xtrace doit correspondre àslb_xtrace(ID de trace) et àxtrace_type(valeur zipkin), ce qui confirme que les journaux d'accès enregistrent les données de traçage.
Afficher les traces dans la console OpenTelemetry
Connectez-vous à la console Managed Service for OpenTelemetry.
Sur la page Applications, sélectionnez votre région et cliquez sur le nom de votre application.
Cliquez sur API Calls > Trace pour afficher les données de trace. L'onglet affiche jusqu'à 100 traces ayant la durée la plus longue. Consultez la rubrique Appels d'interface.
Étapes suivantes
Pour utiliser Nginx Ingress pour le traçage distribué à la place, consultez la rubrique Implémenter Tracing Analysis pour le module complémentaire Nginx Ingress Controller.
En cas de problème, consultez les rubriques Résoudre les problèmes liés à ALB Ingress et FAQ sur ALB Ingress.