@nwire/telemetry-otel
v0.7.1
Published
OpenTelemetry bridge for the Nwire canonical telemetry stream. Translates every Telemetry record into OTLP spans + events. Plug in any OTEL exporter (Datadog, Honeycomb, Tempo, Vector → GreptimeDB).
Downloads
45
Readme
@nwire/telemetry-otel
OpenTelemetry bridge — subscribes to
runtime.onTelemetryand emits OTLP spans + events.
What it does
Translates every canonical telemetry record into OTel spans (with causation-id-keyed parent lookup) and events. @opentelemetry/api is duck-typed, so the only runtime dep on Nwire side is @nwire/forge's telemetry types. Pairs cleanly with Vector → GreptimeDB and any OTLP backend (Datadog, Honeycomb, Tempo, Jaeger).
Install
pnpm add @nwire/telemetry-otel @opentelemetry/api
# plus the SDK + exporter you choose, e.g.:
pnpm add @opentelemetry/sdk-node @opentelemetry/exporter-trace-otlp-httpQuick start
import { trace } from "@opentelemetry/api";
import { attachOtelExporter } from "@nwire/telemetry-otel";
import { app } from "./app";
const detach = attachOtelExporter(app.runtime, {
tracer: trace.getTracer("learnflow"),
});
// later, during shutdown:
detach();API surface
attachOtelExporter(runtime, { tracer })— returns an unsubscribe function.OtelTracer/OtelSpan/SpanContext/SpanKind/SpanStatusCode— duck-typed OTel shapes.
When to use
When you want production traces in your APM.
Within nwire-app
For developers using this package as part of the Nwire stack — register it via app.use(...) or it auto-wires when you compose createApp({ modules }).
import { createApp } from "@nwire/forge";
const app = createApp({
/* ...config... */
});
// Adapter/plugin wiring happens here when applicable.