Observability
Logging
Structured logging via logrus. Choose the format:
-e LOG_FORMAT=json # recommended in production
-e LOG_LEVEL=infoEach request is logged with a request ID (from the request_id query parameter if provided, else generated), method, path, status, duration, and response size. The /_status route logs at debug level to reduce noise.
Tracing (OpenTelemetry)
Disabled by default. Enable and point at your collector:
-e TRACING_ENABLED=true
-e OTEL_COLLECTOR_PROTOCOL=grpc
-e OTEL_COLLECTOR_GRPC_ADDR=otel-collector:4317
-e TRACING_SERVICE_NAME=pdf-serverSpans cover the HTTP request, the render service, HTML rendering (body/header/ footer), and the CDP interactions. Trace context is propagated to the internal render server so browser-side requests join the same trace. The /_status span is excluded by default (override with --tracing-keep-status-trace).
Propagators are configurable (--tracing-propagators / OTEL_PROPAGATORS): tracecontext, baggage, b3, b3multi, jaeger, xray, ottrace.
Status
GET /_status— pool stats and browser metadata (borrows a browser).GET /_metadata— version info (cheap; good for liveness).
See Status & metadata.