DEV Community

Atlas Whoff
Atlas Whoff

Posted on

OpenTelemetry for Node.js: Distributed Tracing in 15 Minutes

OpenTelemetry for Node.js: Distributed Tracing in 15 Minutes

When a request is slow, where is the time going? Without tracing, you're guessing. OTel gives you a complete map of every operation with timing for each.

Auto-Instrumentation Setup

npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node
Enter fullscreen mode Exit fullscreen mode
// tracing.ts — load FIRST, before any other imports
import { NodeSDK } from '@opentelemetry/sdk-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';

const sdk = new NodeSDK({
  resource: new Resource({ [SEMRESATTRS_SERVICE_NAME]: 'api-server' }),
  traceExporter: new OTLPTraceExporter({ url: process.env.OTEL_ENDPOINT }),
  instrumentations: [getNodeAutoInstrumentations()],
});

sdk.start();
Enter fullscreen mode Exit fullscreen mode
{ "scripts": { "start": "node --require ./tracing.js dist/server.js" } }
Enter fullscreen mode Exit fullscreen mode

Automatically traces: HTTP requests, pg/mysql2/prisma queries, Redis, gRPC.

Custom Spans

const tracer = trace.getTracer('api-server');

async function processOrder(orderId: string) {
  return tracer.startActiveSpan('processOrder', async (span) => {
    span.setAttribute('order.id', orderId);
    try {
      const result = await doWork();
      span.setStatus({ code: SpanStatusCode.OK });
      return result;
    } catch (err) {
      span.recordException(err as Error);
      span.setStatus({ code: SpanStatusCode.ERROR });
      throw err;
    } finally {
      span.end();
    }
  });
}
Enter fullscreen mode Exit fullscreen mode

Free Backends

  • Jaeger (self-hosted): great for development
  • Grafana Tempo: integrates with Grafana dashboards
  • Honeycomb: best query experience, generous free tier

OTel setup, structured logging, and monitoring patterns are production-ready in the AI SaaS Starter Kit.

Top comments (0)