feat(observability): Prometheus /metrics endpoint + Grafana dashboard under Game Jams folder #62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
Breakout has a blackbox probe (
https://jam.frankenbit.de/breakout/) via alcatraz-infra's alloy config, soservice-probe-downfires if the ingress path breaks. That's the liveness contract. It's not game telemetry — nothing about sessions started, levels loaded, bricks broken, deaths, etc.Cellblock's precedent (Engineer 47e6 contract, cellblock#10) established the pattern for jam-side game servers exposing
/metricsscraped by alloy on the docker network:cellblock_active_matches,cellblock_connected_clients(gauges)cellblock_matches_started_total,cellblock_matches_ended_total{outcome}(counters)cellblock_lines_cleared_total,cellblock_garbage_sent_total(counters)Plus a dedicated Grafana dashboard (
CELLBLOCK live stats, taggedcellblock/jam).Operator direction (2026-07-13): both game-jam projects should live together under a
Game Jamsfolder in Grafana — Cellblock moves in, Breakout joins once it has metrics.Scope
Two bundled pieces of work:
/metricsendpoint on the Breakout server. Static-site currently, so this needs a small sidecar or a lightweight metrics endpoint on whatever serves index.html + assets. Metric contract to define — likely:breakout_active_sessions(gauge) — concurrent playersbreakout_sessions_started_total(counter)breakout_levels_completed_total{level}(counter)breakout_deaths_total{level}(counter)breakout_bricks_broken_total{type}(counter — regular, fortress, lockdown, whatever the type-set is)CONTRACT.mdextension or a dedicateddocs/metrics.md).Grafana dashboard. Under the new
Game Jamsfolder alongside Cellblock. Modeled onCELLBLOCK live stats. Provisioned via/srv/docker/monitoring/grafana/dashboards/Game Jams/breakout.json(oncefoldersFromFilesStructure: trueflip lands in the provisioning config).Verification AC
/metricsendpoint reachable from alloy at container:portprometheus.scrape "breakout"block (mirroring the cellblock block at/srv/docker/monitoring/alloy/config.alloy)Game Jamsfolder created (via provisioningfoldersFromFilesStructure: trueflip)Game JamsfolderGame JamsfolderRelated
Anchor