Cette traduction automatique est fournie pour votre commodité.
En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.
Linkerd 2.19 et les versions ultérieures peuvent exporter un span pour chaque requête proxysée directement depuis le sidecar du mesh, sans configuration supplémentaire de backend de tracing ou de cert-manager requise. Combinés aux pods d’application instrumentés, ces spans de proxy se connectent en traces de bout en bout qui montrent exactement comment une requête s’est déplacée à travers votre mesh.
Comment ça marche
L’activation du tracing comprend deux parties :
Exportation de trace au niveau du mesh: les proxys Linkerd exportent un span par requête vers votre Collecteur Otel. Cela seul vous donne des traces au niveau du proxy (nouvelles tentatives, handshakes mTLS, latence par saut) sans toucher à votre application.
Instrumentation de l’application: les pods de votre application propagent le même W3C Trace Context que celui utilisé par les proxys, et exportent leurs propres spans. La combinaison des deux vous donne une cascade complète dans la même trace : de l’application cliente, via le proxy Linkerd, jusqu’à l’application backend.
Avant de commencer
Assurez-vous d'avoir :
Linkerd edge-26.7.0 ou ultérieur (2.19+). Le tracing de proxy sur les sorties antérieures nécessitait un service de collecteur séparé et une intégration cert-manager, ce que ce guide ne couvre pas. Consultez le guide de démarrage de Linkerd si vous devez effectuer une mise à niveau.
NRDOT ou Collecteur Otel Contrib opérationnel pour votre instance Linkerd :
transform/linkerd_service_name fait du nom de chaque déploiement maillé son service.name APM. Utilisez des noms de déploiement uniques dans chaque cluster rattaché au même compte. Un nom qui existe également dans un autre cluster y est résolu vers la même entité, de sorte que leurs données sont fusionnées au lieu d’apparaître comme deux services distincts.
2. Marquez le port OTLP du collecteur comme gRPC. Le service nr-k8s-otel-collector-gateway du chart ne déclare pas appProtocol sur son port gRPC. Sans cela, la propre détection de protocole de Linkerd peut mal identifier le trafic vers le collecteur et rejeter silencieusement les exportations de trace des proxys :
transform/linkerd_service_name fait du nom de chaque déploiement maillé son service.name APM. Utilisez des noms de déploiement uniques dans chaque cluster rattaché au même compte. Un nom qui existe également dans un autre cluster y est résolu vers la même entité, de sorte que leurs données sont fusionnées au lieu d’apparaître comme deux services distincts.
Réappliquez la ConfigMap ci-dessus, puis effectuez ces étapes uniques :
1. Maillez le collecteur. Les proxys Linkerd ne peuvent exporter des traces que vers un collecteur qui se trouve lui-même dans le maillage :
2. Marquez le port OTLP du collecteur comme gRPC. Le service nr-k8s-otel-collector-gateway rendu ne déclare pas appProtocol sur son port gRPC. Sans cela, la propre détection de protocole de Linkerd peut mal identifier le trafic vers le collecteur et rejeter silencieusement les exportations de trace des proxys :
À partir de Linkerd 2.19, l’exportation de trace du proxy est configurée directement dans le control plane, sans cert-manager ni port séparé requis. Deux étapes sont requises : rendre le collecteur capable de recevoir des traces, puis activer l’exportation de trace depuis les proxys.
Étape 1 : ajouter l’ingestion de trace au collecteur
Contrairement au chart NRDOT, le chart open-telemetry/opentelemetry-collector de la communauté n’inclut pas de récepteur otlp par défaut. Ajoutez-le explicitement, ainsi que les mêmes processeurs utilisés dans l’onglet NRDOT.
Ajoutez les trois mêmes blocs ci-dessus (Récepteurs, Processeurs, Pipelines) à la clé config de la ConfigMap dans votre otel-collector.yaml depuis OTel Collector Contrib avec manifeste. Le Service dans ce manifeste expose déjà le port 4317 (grpc) et 4318 (http), aucune modification de port n’est donc nécessaire. Réappliquez et redémarrez. Réappliquer le ConfigMap seul ne redémarre pas le pod du collecteur en cours d’exécution, il ne prendra donc pas en compte la nouvelle configuration sans la deuxième commande :
1. Maillez le collecteur. Les proxys Linkerd peuvent uniquement exporter des traces vers un collecteur qui se trouve lui-même à l’intérieur du maillage. Contrairement à nr-k8s-otel-collector-gateway du chart NRDOT, rien dans le manifeste ou le chart Helm du Collecteur Otel Contrib n’injecte le pod du collecteur dans le maillage par défaut :
Le bloc meshIdentity ci-dessous est obligatoire. Linkerd ne peut exporter des traces que vers un collecteur qui se trouve à l’intérieur du maillage, ce que la commande ci-dessus vient de faire.
Étape 3 : redémarrer les pods maillés de votre application
Ceci est distinct du redémarrage du collecteur à l’étape 2 - cela applique la nouvelle configuration de tracing de proxy aux pods que vous tracez réellement :
Ajoutez l’agent Java OTel (ou l’agent de votre langage) pour propager les en-têtes de contexte de trace. Linkerd prend en charge les formats W3C Trace Context et B3. L’agent OTel gère cela automatiquement.
Conseil
spec.exporter.endpoint ci-dessous pointe vers le Service de la page OTel Collector Contrib with manifest. Si vous avez déployé le collecteur NRDOT, utilisez http://nr-k8s-otel-collector-gateway.newrelic.svc.cluster.local:4317 à la place.
Corréler les métriques de l’application avec l’APM (facultatif)
Si votre application exporte également des métriques du SDK OTel (et pas seulement des traces) vers le collecteur, ajoutez ce qui suit pour les acheminer vers un pipeline de métriques compatible avec l’APM.