Егерь в Istio отслеживает не более 2 пролетов (службы в nodejs)

#node.js #istio #jaeger

Вопрос:

У меня есть 3 услуги A, B и C. Я написал API, которые вызывают A -> B ->> C. Я установил Jaeger, как указано в официальной документации Istio (>>https://istio.io/latest/docs/tasks/observability/distributed-tracing/jaeger/). Моя приборная панель Jaeger включена, на ней также отображаются следы, но ни один из следов не имеет более 2 пролетов. Я вижу в своих журналах рабочего стола docker, что мой API вызывает все службы.

Я также попытался настроить jaeger-клиент во всех своих сервисах NodeJS. Я попробовал код с помощью prom-клиента (я также установил grafana, kiali и prometheus, используя дополнения istio) , приведенные на https://github.com/jaegertracing/jaeger-client-node. Это также не сработало, тогда я попробовал распространять заголовки, как указано в https://edspencer.net/2020/10/13/distributed-tracing-with-node-js/. Вот код, который я добавил:

 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()
})
 

Но и это не помогло. Следы на приборной панели Jaeger такие же, как и без этих решений.

Я думаю, что коляска istio должна автоматически отправлять следы егеру, но я не уверен. Кто-нибудь устанавливал Jaeger в Istio с услугами в NodeJS? Пожалуйста, помогите.

Комментарии:

1.Наконец, после борьбы в течение 4-5 дней, это сработало: tracing.cloudnative101.dev/docs/lab-jaeger-nodejs.html tracing.cloudnative101.dev/docs/ocp-istio-nodejs.html Выкладываю ответ для всех, кто ищет решение