Skip to content

docs(plan): plan deployment phase 2 — monitoring and readiness for real users - #89

Merged
AlpNuhoglu merged 2 commits into
mainfrom
docs/phase2-plan
Oct 22, 2026
Merged

AlpNuhoglu merged 2 commits into
mainfrom
docs/phase2-plan

Conversation

@AlpNuhoglu

@AlpNuhoglu AlpNuhoglu commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

Summary

New docs/deployment-phase2-plan.md (Turkish, same structure as phase 1).

Part G — the consultant's scope (K10–K15): Prometheus in the cluster with all 7 targets up; application metrics (request counter, latency histogram, error counter, active WebSocket gauge) with bounded labels and buckets around the measured latency; Grafana with 4 panels (req/s, p95/p99, error %, active connections) as code; a public read-only dashboard at status.gamemesh.app (anonymous Viewer, no admin, Prometheus never exposed); a k6 run that moves the panels, with a screenshot; out-of-scope items as a README roadmap. The consultant's three points (security, cardinality, histograms) are the design principles.

Kept from the earlier plan (K1–K9): daily encrypted offsite Postgres backups, a restore drill with RPO/RTO, alerts for stale backups, k3s state backed up apart from its key (#80), outside monitoring of the endpoint and certificate, the capacity decision, the runbook, dated maintenance. Alert rules (Alertmanager) were in the earlier plan but are out of the consultant's scope: kept last, marked as awaiting a decision.

Finding #90 (measured): the HTTP metrics' method label is unbounded — 25 made-up methods opened 25 series locally, and Traefik passes made-up methods to the production gateway. Fixed first (G3), before Prometheus scrapes production.

Docs only.

🤖 Generated with Claude Code

AlpNuhoglu and others added 2 commits October 22, 2026 22:25
Phase 1 put GameMesh in production; phase 2 closes what stands between
it and real users: the data's only copy is the server's disk, nobody is
told when the service or its certificate fails (finding #85), and
production has no monitoring (#68).

The plan sets nine measurable completion criteria (daily encrypted
offsite backups, a restore drill onto an empty cluster with RPO and RTO
measured, alerts for stale backups, k3s state backed up apart from its
key (#80), outside monitoring of the endpoint and the certificate,
metrics reachable only over the tailnet, basic alert rules, a capacity
decision from measurements, an updated runbook), records the measured
starting point, and splits the work into backups (E), outside
monitoring and alerting (F), production monitoring (G) and the dated
maintenance left from phase 1 (H), with the decisions each step needs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The consultant's criteria for phase 2 arrived: Prometheus in the
cluster with every target up, the application metrics, four Grafana
panels, a public read-only dashboard at status.gamemesh.app and a k6
run that moves them, with alerting, log aggregation, long retention
and polish kept out of scope as a README roadmap.

They become part G and criteria K10 to K15, with the consultant's
three points as design principles: an anonymous Grafana is a Viewer
and Prometheus is never exposed, labels take bounded values only, and
p95 comes from histogram_quantile over buckets placed around the
measured latency. The earlier items (backups, outside monitoring, the
capacity decision, the runbook, dated maintenance) keep their numbers
K1 to K9. Alert rules were in the earlier plan and are out of scope
for the consultant: they stay, last and marked as awaiting a decision.

Checking the code against the cardinality point found finding #90:
the HTTP metrics' method label takes any value. Locally 25 made-up
methods opened 25 new series, and in production Traefik passed a
made-up method through to the gateway. It is fixed first (G3), before
Prometheus scrapes production.

Refs: Bulgu #90

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AlpNuhoglu AlpNuhoglu changed the title docs(plan): plan deployment phase 2, readiness for real users docs(plan): plan deployment phase 2 — monitoring and readiness for real users Oct 22, 2026
@AlpNuhoglu
AlpNuhoglu merged commit 2d13c60 into main Oct 22, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant