Skip to content

Observability: listener/quality telemetry → backend + /api/stream/metrics + admin display #177

@anneoneone

Description

@anneoneone

Goal

Capture real listener + quality telemetry from Icecast and surface it to the admin dashboard (req #5, Phase 4 of #164).

Tasks

  • Listener/quality telemetry → Rust backend: poll Icecast GET /status-json.xsl → per-mount listeners (a genuine concurrent count, which HLS structurally can't give), audio_bitrate, samplerate, channels. Handle icestats.source being an object (1 mount) vs array (N mounts). ffprobe -print_format json -show_streams <mount> for codec/bitrate. Poll every 10–15 s and cache in the backend; surface to the admin SPA + a new /api/stream/metrics.

Files

backend/ (new metrics poller + /api/stream/metrics handler), admin SPA display.

Acceptance

Admin dashboard shows live listener count + bitrate sourced from Icecast; the icestats.source object-vs-array case is handled.

Depends on

#164 Phase-2 stack ticket (Icecast must be live).


Parent: #164 (Phase 4).

Metadata

Metadata

Assignees

No one assigned

    Labels

    project::InfrastructureArea: hosting, networking, server commstype::backendLayer: Rust/Axum backend (handlers, DB, integrations)

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions