Spans for everything, with no code to write.

Turn on the telemetry feature and every request, query, cache call, job, mail and event opens a span, exported over OTLP to your collector.

What you get

  • The standard OTEL_* variables, so an existing deployment’s settings work.
  • Prometheus metrics by route pattern, at a path you choose.
  • Health checks: Health::new().register("database", …).
  • A debug error page only when APP_DEBUG=true — and it refuses to render in production.
  • The same spans feed Lookout, in-process.

In the docs

.env.production
# Spans for every request, query, cache call, job, mail and event —
# exported over OTLP. No application code opens one.
TELEMETRY_ENABLED=true
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317

# The same spans, kept in-process and shown at /_lookout.
LOOKOUT_ENABLED=true
LOOKOUT_STORE=cache

Up close

Select an image to see it full size.

With APP_DEBUG=true and APP_ENV=local, a 500 shows the stack, filterable to app, framework or vendor frames; in production it refuses to render.
The outbound HTTP client propagates the trace, so the service on the other end joins the same trace.
The worker records job duration, wait time and throughput per job and queue, with no application code.
Health and build-version endpoints for probes and deploy checks.
All features

Type to search 2.0.0 docs.