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.