Tengo 3 servicios A, B y C. He escrito API que llaman A -> B -> C. He instalado Jaeger como se indica en la documentación oficial de Istio ( https://istio.io/latest/docs/tasks /observability/distributed-tracing/jaeger/ ). Mi tablero de Jaeger está activo, también muestra rastros, pero ninguno de los rastros tiene más de 2 tramos. Puedo ver en los registros de mi escritorio acoplable que mi API está llamando a través de los servicios.
Intenté configurar jaeger-client también en todos mis servicios de NodeJS. Probé el código con prom-client (también instalé grafana, kiali y prometheus usando complementos de istio) proporcionado en https://github.com/jaegertracing/jaeger-client-node . Eso tampoco funcionó, luego probé los encabezados de propagación como se indica en https://edspencer.net/2020/10/13/distributed-tracing-with-node-js/ . Aquí está el código que agregué:
const {initTracer} = require('jaeger-client') const app = express(); const config = { serviceName: 'service-a', reporter: { logSpans: true, collectorEndpoint: 'http://jaeger-collector.istio-system.svc:14268/api/traces', }, sampler: { type: 'const', param: 1 } }; const options = { tags: { 'gateway.version': '1.0.0' } }; const tracer = initTracer(config, options); app.use((req, res, next) => { req.rootSpan = tracer.startSpan(req.originalUrl) tracer.inject(req.rootSpan, "http_headers", req.headers) res.on("finish", () => { req.rootSpan.finish() }) next() })Pero esto tampoco ayudó. Los rastros en el tablero de Jaeger son los mismos que venían sin estas soluciones.
Creo que istio sidecar debería enviar rastros a jaeger automáticamente, pero no estoy seguro. ¿Alguien ha configurado Jaeger en Istio con servicios en NodeJS? Por favor ayuda.