Observability
Requestauthdb.querycacheredis

OpenTelemetry

See everything. Traces, metrics, logs -- unified.

Trace View

Waterfall: One Request, Many Spans

Every request generates a trace. Each operation is a span. Click to inspect.

Trace ID:a3f2ccc45nn...
253ms
0ms63ms127ms190ms253ms
Service Map

Distributed Traces Across Services

OTel instruments every service. Watch traces flow between them in real time.

GatewayAuthUsers APIOrders APIPostgresRedis
Signal Correlation

OTel works when signals connect

The point is not collecting more telemetry. The point is making one incident readable from multiple angles.

Traces

Show request shape, parent-child spans, and latency hotspots.

Metrics

Track the aggregate picture: throughput, saturation, and error rate.

Logs

Keep the event detail that explains what happened inside each span.

Implementation

Instrumentation after the diagrams

const tracer = trace.getTracer("orders-api")

await tracer.startActiveSpan("GET /api/orders", async (span) => {
  span.setAttribute("http.method", "GET")
  span.setAttribute("user.id", userId)

  try {
    const orders = await db.getOrders(userId)
    span.setAttribute("orders.count", orders.length)
    return orders
  } finally {
    span.end()
  }
})