Skip to content

feat(chart): ship an optional Grafana dashboard - #20

Merged
juancarlosm merged 2 commits into
mainfrom
feat/grafana-dashboard
Oct 29, 2026
Merged

juancarlosm merged 2 commits into
mainfrom
feat/grafana-dashboard

Conversation

@juancarlosm

Copy link
Copy Markdown
Contributor

Summary

Optional Grafana dashboard in the chart (dashboards.enabled, off by default), replacing the three dashboards hand-maintained in the GitOps repo.

Changes

  • templates/grafana-dashboards.yaml: one ConfigMap per dashboards/*.json, sidecar label configurable, grafana_folder from dashboards.folder.
  • dashboards/squall.json (uid squall-overview): rows Models and proxy / dstack / Operator (collapsed).
  • Fixes carried over from the GitOps versions:
    • target health and controller panels scoped to Squall's jobs (the job variable defaulted to every job in the cluster: min(up) over 88 targets, goroutines of every Go process)
    • Model filters on exported_namespace (ServiceMonitor overwrites namespace); documented in docs/metrics.md
    • proxy error ratio = rejected|failed; it used outcome!="success", which matches every request
    • provisioning failures from squall_model_provisioning_outcomes_total{outcome="failure"} instead of increase() on a gauge
    • dstack run totals over the dashboard range
  • values.yaml, docs/metrics.md, CHANGELOG.md.

Test Plan

  • helm lint; helm template with dashboards off (0 ConfigMaps) and on (1, label + folder annotation, JSON round-trips)
  • Every panel query run against the production Thanos over 30 days: all return data except provisioning failures (none happened) and the 3 dstack GPU panels (no GPU instance up)
  • CI

🤖 Generated with Claude Code

juancarlosm and others added 2 commits October 29, 2026 08:48
dashboards.enabled renders deploy/helm/squall/dashboards/squall.json as a
ConfigMap for the kube-prometheus-stack Grafana sidecar, with
dashboards.folder for the grafana_folder annotation. Off by default.

The dashboard merges the three that lived in the GitOps repo, fixed:
- scrape-target health and controller panels are scoped to Squall's own
  jobs; the job variable defaulted to every job in the cluster
- Model filters use exported_namespace: the ServiceMonitor's namespace
  label overwrites the Model's
- proxy error ratio counts rejected|failed; there is no success outcome,
  so every request counted as an error
- provisioning failures come from the outcomes counter, not increase()
  on a gauge
- dstack run totals are counted over the range, not raw counters

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juancarlosm
juancarlosm merged commit c80a2cb into main Oct 29, 2026
5 checks passed
@juancarlosm
juancarlosm deleted the feat/grafana-dashboard branch October 29, 2026 08:43
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