Prerequisites:
Node.js
application
Opencensus
library
Zipkin Exporter
and local Zipkin service
app.js:
const tracing = require('@opencensus/nodejs');
const zipkin = require('@opencensus/exporter-zipkin');
const ZIPKIN_ENDPOINT = process.env.ZIPKIN_ENDPOINT || "http://localhost:9411";
const options = {
url: `${ZIPKIN_ENDPOINT}/api/v2/spans`,
serviceName: 'MyApplication'
}
const exporter = new zipkin.ZipkinTraceExporter(options);
tracing.start({'exporter': exporter});
...
app.use(..)
...
package.json:
"dependencies": {
"@opencensus/exporter-zipkin" : "0.0.19",
"@opencensus/nodejs" : "0.0.19"
...
Zipkin server started locally with command:
docker run -d -p 9411:9411 openzipkin/zipkin
after triggering /service1
Zipkin Ui displays 2 spans for 2 different requests:
first /service1
incoming request that is configured in Node.js routers
second /external_service_2
is subsequent call to external service
Problem
The problem is that after triggering /service1
:
1. Zipkin UI displays 2 spans with same name MyApplication
(see image),
but expected 2 different span names
2. As far Zipkin UI displays 2 spans with same name,
service dependencies page contains one Service only(see image)