Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ADR 0006: Per-Provider Observability & Metrics

Context

Production deployments require visibility into per-provider performance to diagnose bottlenecks, set SLOs, and inform capacity planning. Operators need to answer: “Which diagram type is slowest?”, “Which provider fails most?”, “What’s the P99 latency?”

Decision

Prometheus Metrics (per diagram provider)

All metrics are tagged with {provider, format} dimensions for granular breakdowns:

MetricTypeNotes
kroki_requests_totalCounterPer provider × format
kroki_request_duration_secondsHistogramp75, p90, p99 buckets
kroki_rendering_errors_totalCounterTagged with error_kind
kroki_payload_size_bytesHistogramInput payload size distribution
kroki_conversion_time_secondsHistogramProvider-internal render time
kroki_active_connectionsGaugeCurrent concurrent requests
kroki_circuit_breaker_stateGauge0=closed, 1=open, 2=half-open

Implementation

OpenTelemetry (Optional)

Configuration

[server.metrics]
enabled = true
export_endpoint = false

[server.telemetry]
enabled = false
otlp_endpoint = ""

Consequences