Skip to content

Metrics

The controller exposes Prometheus metrics at GET /metrics (gated by metrics:read, served at the root path, not under /api/v1). This page lists the metric names; for the alerting, scrape, and dashboard artifacts see Observability.

Most series carry labels — the common ones are node_id, channel (and interface_id) on per-channel audio metrics, severity/status/event_type on health metrics, action/outcome/permission/actor_type on audit, and provider/status on uploads. Counters end in _total; everything else is a gauge.

Controller

MetricMeaning
rakkr_controller_started_at_secondsController process start timestamp.
rakkr_database_unavailableController database reachability (1 = unavailable); emitted so /metrics degrades instead of returning 503 during a database outage.

Nodes

MetricMeaning
rakkr_node_onlineWhether a recorder node is reachable.
rakkr_node_offline_alerts_activeUnresolved node-offline health events (by node/severity/status).

Audio input quality

Per-channel audio quality, derived from the latest meter frame (labelled by node_id/interface_id/channel):

MetricMeaning
rakkr_input_rms_dbfsLatest RMS input level (dBFS).
rakkr_input_peak_dbfsLatest peak input level (dBFS).
rakkr_input_clipping_ratioLatest clipping state.
rakkr_input_speech_scoreSpeech-likelihood score.
rakkr_input_noise_scoreNon-speech noise score.
rakkr_input_broadband_noise_scoreBroadband-noise likelihood score.
rakkr_input_hum_scoreHum-likelihood score.
rakkr_input_static_scoreStatic-likelihood score.
rakkr_input_estimated_snr_dbEstimated signal-to-noise ratio (dB).
rakkr_input_intelligibility_scoreFirst-pass voice intelligibility score.
rakkr_input_channel_correlation_scoreStrongest same-interface channel correlation score (also carries peer_channel + phase labels).

Live listen monitor

Labelled by node_id/interface_id/channel plus a source label.

MetricMeaning
rakkr_listen_monitor_chunk_age_secondsAge of the latest monitor audio chunk.
rakkr_listen_monitor_chunk_duration_secondsDuration of the latest chunk.

Recordings & jobs

MetricMeaning
rakkr_recording_activeActive recording jobs by node.
rakkr_recording_cachedCached recordings by node.
rakkr_recording_duration_secondsRecording duration by recording.
rakkr_recording_bytes_writtenController-cached recording bytes by recording.
rakkr_recording_jobsRecording jobs by node and status.
rakkr_recording_watchdog_alerts_activeUnresolved watchdog health events (by severity).
rakkr_recording_watchdog_alerts_totalWatchdog health events raised (by severity).
rakkr_device_xruns_activeUnresolved audio-xrun health events.
rakkr_device_xruns_totalAudio-xrun health events (by severity).

Uploads

MetricMeaning
rakkr_upload_queue_depthUpload queue items by provider and status.
rakkr_upload_queue_oldest_due_secondsAge of the oldest due queue item.
rakkr_upload_failures_totalUpload failures.

Events

MetricMeaning
rakkr_audit_events_totalAudit events by action, outcome, permission, and actor type.
rakkr_health_events_activeUnresolved health events by severity and status.
rakkr_health_events_totalHealth events by event type, severity, and status.

The checked Prometheus alert rules, Mimir remote-write example, and Grafana dashboard live under docs/observability/.