Skip to content

feat: add bounded game performance and relay monitoring - #838

Merged
ValgulNecron merged 35 commits into
stack/pr-763from
stack/pr-771
Nov 7, 2026
Merged

ValgulNecron merged 35 commits into
stack/pr-763from
stack/pr-771

Conversation

@Baylem

@Baylem Baylem commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Operators need to distinguish missing measurements, game degradation, resource pressure and relay failures. This adds cached numeric game-performance measurements and relay metrics with Prometheus configuration, alerts and a workload dashboard.

Modules can declare tick/frame rate or tick duration, units and an optional degradation threshold. One bounded source feeds both dashboard routes and Prometheus; scrapes issue no RCON commands. Unknown, invalid and stale readings omit value series, while genuine zero remains visible. Source RCON has an aggregate response limit and absolute exchange deadline; NuclearOption applies its deadline before request writes as well.

Tunnel metrics use the same sanitized health evidence as readiness. Playit’s pinned client still reports unknown live connectivity. Infrastructure alerts require the documented kubelet/cAdvisor and kube-state-metrics collectors; no external game module is opted in by this PR.

The chart validates scrape-policy configuration and supports externally managed policies. The Prometheus example aligns monitor labels, namespace discovery and ingress permissions. A Cilium CI fixture checks actual agent/tunnel scraping, ingress revocation/restoration and denial from an unapproved namespace. Promtool fixtures cover alert firing/recovery and duplicate operator readings.

Supersedes #771. Prior review discussion remains on that PR.

Native stack, bottom to top: #837 → #838.

Closes #725.

Validation: Linux operator, agent and tunnel builds, controller regression-source and E2E source compilation passed. Generated CRDs and chart bundles are synchronized. Runtime tests, rule checks and cluster scraping run in CI under the repository’s compile-only local policy.

Current validation: all 108 main CI jobs passed on 51b76792 (CI run). Portable-path and visual-regression workflows also passed.

Baylem added 27 commits October 21, 2026 12:10
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
@coderabbitai

coderabbitai Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 38 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

Commits

Reviewing files that changed from the base of the PR and between d35927f and 51b7679.

Files selected for processing: 70

  • .github/workflows/ci.yaml
  • agent/cmd/main.go
  • agent/internal/caps/caps.go
  • agent/internal/rcon/nuclearoption.go
  • agent/internal/rcon/nuclearoption_deadline_test.go
  • agent/internal/rcon/nuclearoption_test.go
  • agent/internal/rcon/rcon.go
  • agent/internal/rcon/rcon_bounds_test.go
  • agent/internal/status/performance.go
  • agent/internal/status/performance_test.go
  • agent/internal/status/status.go
  • agent/specs.md
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backups.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_backupschedules.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_clusters.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gameservers.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_gametemplates.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modules.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_modulesources.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_networkcaptures.yaml
  • charts/gameplane/charts/gameplane-crds/crds/gameplane.local_restores.yaml
  • charts/gameplane/crd-manifests/gameplane.local_backups.yaml
  • charts/gameplane/crd-manifests/gameplane.local_backupschedules.yaml
  • charts/gameplane/crd-manifests/gameplane.local_clusters.yaml
  • charts/gameplane/crd-manifests/gameplane.local_gameservers.yaml
  • charts/gameplane/crd-manifests/gameplane.local_gametemplates.yaml
  • charts/gameplane/crd-manifests/gameplane.local_modules.yaml
  • charts/gameplane/crd-manifests/gameplane.local_modulesources.yaml
  • charts/gameplane/crd-manifests/gameplane.local_networkcaptures.yaml
  • charts/gameplane/crd-manifests/gameplane.local_restores.yaml
  • charts/gameplane/dashboards/gameplane-workloads.json
  • charts/gameplane/templates/NOTES.txt
  • charts/gameplane/templates/grafana-dashboard.yaml
  • charts/gameplane/templates/monitoring-rules.yaml
  • charts/gameplane/templates/monitoring-validation.yaml
  • charts/gameplane/templates/networkpolicies.yaml
  • charts/gameplane/templates/servicemonitors.yaml
  • charts/gameplane/tests/monitoring-rules.sh
  • charts/gameplane/tests/monitoring-rules.test.yaml
  • charts/gameplane/values.yaml
  • charts/tests/check_gateway.py
  • charts/tests/check_standalone.py
  • deploy/kind/monitoring.sh
  • docs/examples/monitoring/gameplane-values.yaml
  • docs/examples/monitoring/prometheus.yaml
  • docs/monitoring.md
  • docs/tunnels.md
  • hack/ci_scope.py
  • hack/test_ci_scope.py
  • operator/api/v1alpha1/gametemplate_types.go
  • operator/api/v1alpha1/zz_generated.deepcopy.go
  • operator/config/crd/gameplane.local_gametemplates.yaml
  • operator/internal/controller/backup_forget_envtest_test.go
  • operator/internal/controller/gameserver_relay_health_test.go
  • operator/internal/controller/gameserver_tunnel.go
  • operator/internal/controller/gametemplate_performance_envtest_test.go
  • operator/specs.md
  • test/e2e/buckets.sh
  • test/e2e/ci_selection_e2e_test.go
  • test/e2e/monitoring_e2e_test.go
  • test/e2e/specs.md
  • test/e2e/suite-components.json
  • tunnel/main.go
  • tunnel/relay_health.go
  • tunnel/relay_metrics.go
  • tunnel/relay_metrics_test.go
  • tunnel/specs.md
  • tunnel/tailscale.go
  • tunnel/tailscale_test.go
  • web/src/types.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@Baylem Baylem added area: agent in-pod sidecar area: chart Helm chart and deployment labels Nov 5, 2026 — with ChatGPT Codex Connector
@Baylem Baylem added area: e2e kind-based end-to-end suite area: modules game template OCI bundles area: operator controller-runtime operator and CRDs area: optional-components sentinel, capture-sidecar, mcp-server, tunnel, audit-syslog-bridge, telemetry-receiver area: shared netguard, gameaction, gameproto, svcutil and other shared packages area: specs spec-kit feature specs and design docs area: web React dashboard type: feature New capability or user-facing addition labels Nov 5, 2026 — with ChatGPT Codex Connector
@Baylem
Baylem added this pull request to stack #842 November 5, 2026 03:57
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

CI Report - 51b7679

run 42397774462 - attempt 1

0 failed - 33 passed - 0 skipped - 109m10s elapsed

Test selection: full (selection-rule change) - per-suite table

Coverage

Module Measured Gate Margin
web L95.95 S94.45 B89.33 F91.95 L92 S92 B82 F76 +2.45

Changed

Area Files +/-
agent/ 11 +691/-99
charts/ 30 +752/-22
tunnel/ 7 +266/-30
docs/ 4 +243/-0
test/ 5 +232/-2
operator/ 8 +164/-21
.github/ 1 +24/-8
deploy/ 1 +25/-0
hack/ 2 +12/-2
web/ 1 +5/-0

Slowest jobs

Job Duration
e2e telemetry / arm64 (kind) 23m51s
build e2e images 14m17s
e2e restricted-workloads / arm64 (kind) 14m16s
e2e web live / amd64 (kind) 13m54s
e2e capture overhead (kind) 12m30s

e2e buckets run

api-agent, api-auth, api-mods, api-rbac, api-roles, bot-fast, monitoring, multicluster, operator, optional-components, postgres-availability, ratelimit, restricted-workloads, telemetry, upgrade

@Baylem
Baylem marked this pull request as ready for review November 6, 2026 06:56
@Baylem
Baylem requested a review from ValgulNecron as a code owner November 6, 2026 06:56
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Signed-off-by: Baylem <zelathis@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: agent in-pod sidecar area: chart Helm chart and deployment area: e2e kind-based end-to-end suite area: modules game template OCI bundles area: operator controller-runtime operator and CRDs area: optional-components sentinel, capture-sidecar, mcp-server, tunnel, audit-syslog-bridge, telemetry-receiver area: shared netguard, gameaction, gameproto, svcutil and other shared packages area: specs spec-kit feature specs and design docs area: web React dashboard type: feature New capability or user-facing addition

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(observability): add game-performance and relay signals with a complete scrape setup

2 participants