Install @opentelemetry/sdk-node, @opentelemetry/auto-instrumentations-node, and an exporter package (e.g., @opentelemetry/exporter-trace-otlp-grpc)
Create a tracing.js file that instantiates NodeSDK with getNodeAutoInstrumentations() and the chosen exporter, then calls sdk.start()
Require the tracing file before any application code using node --require ./tracing.js app.js or the NODE_OPTIONS env var
Configure the service name, exporter endpoint, and sampler through OTEL_* environment variables to avoid hardcoding
Verify traces reach the backend by running the Collector with the debug exporter and checking console output on first request
Known gotchas
The tracing setup file must be required before any instrumented library is imported; importing Express before the SDK initializes produces uninstrumented spans
ESM (module) projects require a different loader flag (--experimental-loader) and not all auto-instrumentation packages support ESM fully
Some auto-instrumentations (fs, dns) generate very high span volumes; configure getNodeAutoInstrumentations with disabled entries for low-value instrumentations
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp