Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Linkerd 2.19 y versiones posteriores pueden exportar un span para cada solicitud enviada por proxy directamente desde el sidecar de la malla, sin necesidad de configuración adicional de backend de rastreo o cert-manager. En combinación con los pods de aplicación instrumentados, estos spans de proxy se conectan en trazas de extremo a extremo que muestran exactamente cómo se movió una solicitud a través de la malla.
Cómo funciona
Habilitar el rastreo tiene dos partes:
Exportación de trazas a nivel de malla: los proxies de Linkerd exportan un span por solicitud al OTel Collector. Esto por sí solo le proporciona trazas a nivel de proxy (reintentos, handshakes de mTLS, latencia por salto) sin tocar la aplicación.
Instrumentación de la aplicación: los pod de su aplicación propagan el mismo W3C Trace Context que usan los proxies y exportan sus propios spans. Combinar ambos le ofrece una cascada completa en la misma traza: desde la aplicación cliente, a través del proxy de Linkerd, hasta la aplicación backend.
Antes de que empieces
Asegúrese de tener:
Linkerd edge-26.7.0 o posterior (2.19+). El rastreo de proxy en versiones anteriores requería un servicio de recolector independiente y una integración de cert-manager, que esta guía no cubre. Consulte la guía de introducción de Linkerd si necesita actualizar.
NRDOT u OTel Collector Contrib en funcionamiento para su instancia de Linkerd:
transform/linkerd_service_name hace que el nombre de cada despliegue en la malla sea su service.name de APM. Use nombres de despliegue únicos en cada clúster que informe a la misma cuenta. Un nombre que también existe en otro clúster se resuelve en la misma entidad allí, por lo que sus datos se fusionan en lugar de mostrarse como dos servicios separados.
2. Marque el puerto OTLP del recolector como gRPC. El servicio nr-k8s-otel-collector-gateway del chart no declara appProtocol en su puerto gRPC. Sin él, la propia detección de protocolos de Linkerd puede identificar erróneamente el tráfico hacia el recolector y descartar silenciosamente las exportaciones de trazas de los proxies:
transform/linkerd_service_name hace que el nombre de cada despliegue en la malla sea su service.name de APM. Use nombres de despliegue únicos en cada clúster que informe a la misma cuenta. Un nombre que también existe en otro clúster se resuelve en la misma entidad allí, por lo que sus datos se fusionan en lugar de mostrarse como dos servicios separados.
Vuelva a aplicar el ConfigMap anterior y luego complete estos pasos por única vez:
1. Agregue el recolector a la malla. Los proxies de Linkerd solo pueden exportar trazas a un recolector que se encuentre dentro de la malla:
2. Marque el puerto OTLP del recolector como gRPC. El servicio nr-k8s-otel-collector-gateway renderizado no declara appProtocol en su puerto gRPC. Sin él, la propia detección de protocolos de Linkerd puede identificar erróneamente el tráfico hacia el recolector y descartar silenciosamente las exportaciones de trazas de los proxies:
A partir de Linkerd 2.19, la exportación de trazas del proxy se configura directamente en el plano de control, sin necesidad de cert-manager ni de un puerto independiente. Se requieren dos pasos: hacer que el recolector pueda recibir trazas, luego activar la exportación de trazas desde los proxies.
Paso 1: agregue la ingesta de trazas al recolector
A diferencia del chart de NRDOT, el chart de la comunidad de open-telemetry/opentelemetry-collector no incluye un receptor de otlp de forma predeterminada. Agréguelo explícitamente, junto con los mismos procesadores utilizados en la pestaña de NRDOT.
Agregue los mismos tres bloques anteriores (Receivers, Processors, Pipelines) a la clave config del ConfigMap en el otel-collector.yaml de OTel Collector Contrib con manifiesto. El servicio en ese manifiesto ya expone el puerto 4317 (grpc) y 4318 (http), por lo que no se necesitan cambios de puerto. Vuelva a aplicar y reinicie. Volver a aplicar solo el ConfigMap no reinicia el pod del recolector en ejecución, por lo que no tomará la nueva configuración sin el segundo comando:
Paso 2: Habilitar la exportación de trazas del proxy
1. Agregue el recolector a la malla. Los proxies de Linkerd solo pueden exportar trazas a un recolector que se encuentre dentro de la malla. A diferencia del nr-k8s-otel-collector-gateway del chart de NRDOT, nada en el manifiesto de OTel Collector Contrib o el chart de Helm inyecta el pod del recolector en la malla por defecto:
El bloque meshIdentity a continuación es obligatorio. Linkerd solo puede exportar trazas a un recolector que esté dentro de la malla, que es lo que acaba de hacer el comando anterior.
Paso 3: Reinicie los pods en malla de la aplicación
Esto es independiente del reinicio del recolector en el paso 2 —aplica la nueva configuración de rastreo del proxy a los pods que realmente está rastreando:
Agregue el agente de Java de OTel (o el agente para su lenguaje) para propagar los encabezados de contexto de traza. Linkerd admite los formatos W3C Trace Context y B3. El agente de OTel se encarga de esto automáticamente.
Sugerencia
spec.exporter.endpoint lo siguiente apunta al servicio de la página OTel Collector Contrib con manifiesto. Si desplegó el recolector NRDOT, use http://nr-k8s-otel-collector-gateway.newrelic.svc.cluster.local:4317 en su lugar.
Correlacionar métricas de la aplicación con APM (opcional)
Si la aplicación también exporta métricas del SDK de OTel (no solo trazas) al recolector, agregue lo siguiente para enrutarlas a una canalización de métricas compatible con APM.