Author Prometheus dashboards in Go, validate PromQL at build time, generate PersesDashboard CRs, and deploy with Argo CD. This demo focuses on the Prometheus plugin; Perses also supports other datasources. The YAML under manifests/dashboards/ is the delivery artifact source of truth is dashboards/.
- Author in Go (
dashboards/) with the Perses Go SDK and promql-builder import reusable panels from community-mixins and extend them for your environment - Validate structural PromQL checks at build time (
promqlbuilder.Validate) - Render
PersesDashboardCRs (make render-dashboards) - Commit manifests under
manifests/dashboards/ - Deploy with Argo CD (or
kubectl apply) → perses-operator reconciles CRs to Perses
# After changing dashboards/ (Go 1.26+)
make validate-dashboards
make render-dashboards
# kind + cert-manager, operator, minimal kube-prometheus, Perses (perses-dev)
make setup-prerequisites
# Argo CD → sync manifests/dashboards
make setup-argocd
# Tear down stack (or delete the kind cluster)
make cleanupNon-interactive:
YES=true CLUSTER_NAME=perses-demo make setup-prerequisites
YES=true REPO_URL=https://github.com/<you>/perses-gitops-workflow.git make setup-argocd
YES=true CLUSTER_NAME=perses-demo DELETE_KIND_CLUSTER=true make cleanup# Direct apply (no Argo CD)
kubectl apply -f manifests/dashboards/
# Or GitOps
make setup-argocdPerses UI: kubectl -n perses-dev port-forward svc/perses-sample 8080:8080 → http://localhost:8080
The Argo CD setup here is for demo purposes, for production, follow the Argo CD documentation. See deploy/argocd/README.md for UI, polling details, and troubleshooting.
Community-mixins CPU/Memory (kube-prometheus job="node-exporter" matchers) + custom Filesystem panel:
From-scratch dashboard with $job / $namespace (local PromQL helpers):
kubectl apply -f hack/prometheus-operator-demo-load.yamlGenerates reconcile / trigger / error traffic for the Health dashboard (assumes kube-prometheus-stack in monitoring). Details and cleanup are in the file header.
make render-dashboards (runs validate-dashboards first) → fail if validation fails or manifests/dashboards/ drifts.
For Day-2 auditing of metric names and labels against a live Prometheus, see docs/metrics-usage.md. Use a CronJob for scheduled drift checks or a one-off Job for local/CI validation.
MIT — see LICENSE.






