Prometheus Metrics Catalog & PromQL Queries
RUSEON Core exposes standard Prometheus metrics at http://<host>:8080/metrics. All metrics are prefixed with ruseon_ and provide granular visibility into stream ingestion, memory buffer saturation, client playback, storage I/O, and event notification pipelines.
1. Stream Ingest & Camera Metrics
| Metric Name | Type | Labels | Description |
|---|---|---|---|
ruseon_active_streams | Gauge | camera_id | Camera connection status (1 = active/ingesting, 0 = offline) |
ruseon_stream_reconnects_total | Counter | camera_id | Total number of RTSP reconnection attempts |
ruseon_frames_received_total | Counter | camera_id | Cumulative number of video frames ingested |
ruseon_key_frames_total | Counter | camera_id | Cumulative number of KeyFrames (I-frames) ingested |
ruseon_network_receive_bytes_total | Counter | camera_id | Total network payload bytes received from RTSP source |
2. Ring Buffer & Event Pipeline Metrics
| Metric Name | Type | Labels | Description |
|---|---|---|---|
ruseon_ringbuffer_drops_total | Counter | camera_id | Dropped video frames due to slow consumer channel saturation |
ruseon_eventbus_drops_total | Counter | (none) | Dropped webhook/MQTT events due to full worker queues |
3. Client Egress (WebRTC & HLS) Metrics
| Metric Name | Type | Labels | Description |
|---|---|---|---|
ruseon_webrtc_peers_active | Gauge | camera_id | Number of active peer-to-peer WebRTC/WHEP sessions |
ruseon_hls_requests_total | Counter | camera_id | Cumulative number of HLS playlist and segment requests served |
4. Storage & Recording Metrics
| Metric Name | Type | Labels | Description |
|---|---|---|---|
ruseon_disk_write_bytes_total | Counter | camera_id | Cumulative bytes written to disk by the fMP4 archiver |
ruseon_archive_segments_written_total | Counter | camera_id | Total completed hourly archive segment files written |
ruseon_archive_errors_total | Counter | camera_id | Total archive write and filesystem I/O errors |
5. Sample PromQL Queries
Ingest Bandwidth per Camera (Mbps):
promql
rate(ruseon_network_receive_bytes_total[1m]) * 8 / 1000000Total Active WebRTC Viewers Across Server:
promql
sum(ruseon_webrtc_peers_active)Frame Drop Rate (Slow Consumer or Network Congestion):
promql
sum by (camera_id) (rate(ruseon_ringbuffer_drops_total[5m]))Disk Write Throughput (MB/s per Camera):
promql
rate(ruseon_disk_write_bytes_total[1m]) / (1024 * 1024)Total Inactive/Offline Streams:
promql
count(ruseon_active_streams == 0)