Sample Tracing App (Node.js + Opentelemetry Collector + Zipkin) with instrumentation examples
This sample app implements following flow: and allows to build/debug Opentelemetry tracing instrumentation.
Includes:
- sample client app
- sample server app (with simple auth)
- otel-collector instance
- Zipkin
- Jaeger
local run
Run containers:
docker compose build
docker compose up
(requires you to be authenticated in AWS cli)
Simulate API call chain (client -> server -> aws.s3.list):
curl localhost:3000/http/s3-list -v
To see traces in Zipkin UI
go to http://localhost:9411/zipkin/
, press "RUN QUERY" button to see latest traces.
And check zipkin-ui.md for more details.
To see traces in Jaeger UI
go to http://localhost:16686
and search.
Links
http instrumentation
OpenTelemetry Collector Exporter for web and node
OpenTelemetry Collector Exporter for node with grpc
https://www.npmjs.com/package/@opentelemetry/exporter-collector-grpc
OpenTelemetry Protocol Specification
OTLP/HTTP
B3 Header Propagation
https://www.npmjs.com/package/@opentelemetry/propagator-b3 https://github.com/openzipkin/b3-propagation https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-b3
TODO
- add draw.io to readme
- investigate Sentry exporter
- add Grafana
- implement response header (
traceId
) - implement logging of
traceId
- deploy zpages extension