107 lines
4.0 KiB
Markdown
107 lines
4.0 KiB
Markdown
# Monitoring — Validation Checklist
|
|
|
|
Use this checklist to decide whether launch monitoring is ready.
|
|
|
|
For each item record:
|
|
|
|
- PASS / FAIL / BLOCKED
|
|
- command or UI path used
|
|
- observed result
|
|
- target VMID/server ID if applicable
|
|
- follow-up issue link if failed
|
|
|
|
## Security/access validation
|
|
|
|
- Prometheus is not reachable from untrusted networks.
|
|
- Grafana is not reachable from untrusted networks except through intended authenticated/admin path.
|
|
- node_exporter is not reachable from untrusted networks.
|
|
- UFW/nftables or equivalent host/network policy restricts monitoring ports.
|
|
- `/sd/exporters` returns `401` without token.
|
|
- `/monitoring/game-dev` returns `401` without token.
|
|
- bearer token is not present in labels, scrape URLs, dashboard JSON, or logs.
|
|
- bearer token files have tight permissions or use systemd credentials.
|
|
|
|
## Service validation
|
|
|
|
- `prometheus.service` active/running.
|
|
- `grafana-server.service` active/running.
|
|
- `alloy.service` active/running.
|
|
- local node/system metrics target up.
|
|
- monitoring discovery sync service active/successful.
|
|
|
|
## Discovery validation
|
|
|
|
- authenticated `/sd/exporters` returns current active game/dev targets.
|
|
- authenticated `/monitoring/game-dev` returns current active game/dev containers.
|
|
- file_sd output is updated after sync.
|
|
- file_sd output is not empty unless there truly are no active game/dev containers.
|
|
- stale VMIDs are absent from file_sd after deletion/sync.
|
|
- no old down target remains without an explicit reason.
|
|
|
|
## Game container lifecycle validation
|
|
|
|
Create a test game container and verify:
|
|
|
|
- target appears in discovery.
|
|
- Prometheus target appears.
|
|
- metrics are scraped successfully.
|
|
- labels include canonical `vmid`, `instance`, and `container_type`.
|
|
- dashboard can filter/show the container.
|
|
- lifecycle state is visible enough to debug readiness.
|
|
- delete removes the target from API discovery.
|
|
- delete removes the target from file_sd.
|
|
- delete removes or stops the Prometheus target.
|
|
|
|
## Dev container lifecycle validation
|
|
|
|
Create a test dev container and verify:
|
|
|
|
- target appears in discovery.
|
|
- Prometheus target appears.
|
|
- metrics are scraped successfully.
|
|
- labels include canonical `vmid`, `instance`, and `container_type`.
|
|
- dashboard can filter/show the container.
|
|
- code-server state is visible or planned as an accepted launch gap.
|
|
- delete removes the target from API discovery.
|
|
- delete removes the target from file_sd.
|
|
- delete removes or stops the Prometheus target.
|
|
|
|
## API/app validation
|
|
|
|
- API host/system metrics are present.
|
|
- API application health target exists or equivalent health metric exists.
|
|
- API discovery endpoint failures are visible in Prometheus or logs.
|
|
- API create/provision/delete/backup/restore failures are visible in centralized logs or accepted as a launch gap.
|
|
|
|
## Grafana validation
|
|
|
|
- Prometheus datasource exists and works.
|
|
- core services overview dashboard is installed and visible.
|
|
- core service detail dashboard is installed and visible.
|
|
- game containers dashboard is installed and visible.
|
|
- dev containers dashboard is installed and visible.
|
|
- dashboard queries match the canonical label contract.
|
|
- dashboard queries return live data for current targets.
|
|
|
|
## Log validation
|
|
|
|
- API logs queryable from monitoring surface.
|
|
- Agent logs queryable from monitoring surface.
|
|
- provisioning logs queryable from monitoring surface.
|
|
- backup/restore logs queryable from monitoring surface.
|
|
- delete/teardown logs queryable from monitoring surface.
|
|
- Velocity/DNS/edge action logs queryable from monitoring surface.
|
|
- discovery sync logs queryable from monitoring surface.
|
|
|
|
## Launch acceptance
|
|
|
|
Monitoring can be considered launch-ready only when:
|
|
|
|
- monitoring endpoints are not publicly exposed
|
|
- discovery add/remove works for game and dev containers
|
|
- stale file_sd entries do not persist after successful sync
|
|
- dashboards are installed and return useful data
|
|
- API/app health is visible
|
|
- logs are centralized or the missing log surface is explicitly accepted as a launch risk
|
|
- discovery/auth token handling is locked down
|