OpenTelemetry für Node.js — die Verdrahtung, die in Produktion tatsächlich funktioniert
28. Mai 2026 · 1 Min. Lesezeit · von Sudhanshu K.
OpenTelemetry hat die Distributed-Tracing-Debatte effektiv gewonnen. Datadog, Honeycomb, Grafana Tempo, AWS X-Ray, Azure Monitor — alle ingesten OTLP direkt, was bedeutet, dass das einmalige Instrumentieren Ihres Services mit OpenTelemetry Ihnen Portabilität über Anbieter und Tools hinweg verschafft.
Die Standard-Verdrahtung für einen Node.js-Service ist gut dokumentiert, aber voller kleiner Minen. Hier ist das Setup, das in Produktion funktioniert, einschließlich der Auto-Instrumentierung, die wir aktivieren, und der lauten, die wir explizit deaktivieren.
Verdrahtung beim Prozessstart
// otel.js — zuerst importiert via `node --import ./otel.js app.js`
import { NodeSDK } from '@opentelemetry/sdk-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
new NodeSDK({
serviceName: process.env.OTEL_SERVICE_NAME,
traceExporter: new OTLPTraceExporter({
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
}),
instrumentations: [
getNodeAutoInstrumentations({
'@opentelemetry/instrumentation-fs': { enabled: false }, // zu laut
'@opentelemetry/instrumentation-net': { enabled: false }, // zu laut
}),
],
}).start();Das --import-Flag ist kritisch — OpenTelemetry muss vor Ihrem App-Code laden, damit es die richtigen Module monkey-patchen kann.
Der vollständige Beitrag behandelt:
- Warum Auto-Instrumentierung der richtige Startpunkt ist (nicht jeden Span manuell instrumentieren)
- Sampling: Head Sampling, Tail Sampling, und der Latenz-vs-Budget-Trade-off
- Kontext-Propagation via
async_hooksund die seltenen Stellen, wo sie leckt - Resource Attributes, die Traces durchsuchbar machen (K8s-Pod, Deploy-Version, Region)
- Das Collector-Pattern (ein Sidecar pro Host, gebatchter Export)
- Exporter pro Anbieter — Datadog OTLP, Honeycomb, Grafana Tempo
Wir liefern diese Verdrahtung als Teil jedes gemanagten Node.js-Engagements aus.
Vollständiger Artikel verfügbar
Vollständigen Artikel lesen