Node
<!-- status: ga language: node -->
Node.js
Send traces from a Node.js service to Watchtower over OTLP/HTTP with the standard OpenTelemetry SDK. Nothing Watchtower-specific is installed: the SDK reads the standard OTEL_* variables.
Create a project, then an ingestion key (
wti_...) with theingest:tracesscope. The key is shown once.Point the SDK at the gateway and pass the key in the
x-watchtower-keyheader (Authorization: Bearer wti_...works too):
export OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.example.com
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_HEADERS=x-watchtower-key=wti_YOUR_KEY
export OTEL_SERVICE_NAME=my-serviceAdd the SDK and run this once. The endpoint above is the gateway's base URL; the SDK appends
/v1/traces.
npm install @opentelemetry/sdk-node @opentelemetry/exporter-trace-otlp-http @opentelemetry/api// tracing.js, loaded first: node --require ./tracing.js app.js
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { trace } = require('@opentelemetry/api');
const sdk = new NodeSDK({ traceExporter: new OTLPTraceExporter() }); // reads OTEL_EXPORTER_OTLP_*
sdk.start();
trace.getTracer('onboarding').startSpan('hello-watchtower').end();
process.on('beforeExit', () => sdk.shutdown());Open the project's onboarding screen. It polls
GET /v1/projects/{prj}/onboarding/first-eventand turns green when the first span arrives. Then open the trace in the trace explorer.
Updated