advanced

OpenTelemetry

Instrument applications with vendor-neutral APIs, SDKs, exporters, context propagation, and semantic conventions.

OpenTelemetry (OTel) provides vendor-neutral APIs, SDKs, and semantic conventions for traces, metrics, and logs. Instrument once, export to Jaeger, Tempo, Datadog, Honeycomb, or cloud vendors via OTLP.

					import { NodeSDK } from '@opentelemetry/sdk-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';

const sdk = new NodeSDK({
  traceExporter: otlpExporter,
  instrumentations: [getNodeAutoInstrumentations()],
});
await sdk.start();
				

| Piece | Role | |-------|------| | API | Tracer/meter abstractions in app code | | SDK | Sampling, batching, export | | Collector | Receive, process, route telemetry | | Semantic conventions | Standard attribute names |

Auto-instrumentation covers HTTP and DB drivers quickly; add manual spans at business boundaries. Control cardinality in custom attributes.

On interviews: OTel vs proprietary agents, collector deployment patterns, and migrating exporters without re-instrumenting apps.

Common pitfalls: double instrumentation (agent + manual); exporting everything at debug cardinality; ignoring collector as a choke point.

The trade-off is portability and standards versus setup complexity for small teams.

Checklist:

  • Start with auto-instrumentation for HTTP/DB.
  • Export via OTLP to collector or vendor.
  • Follow semantic conventions for attributes.
  • Sample and batch before export.