#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 Выкладываю ответ для всех, кто ищет решение