monitoring: nothing reconciles away UI-created Grafana dashboards #299
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra#299
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "%!s()"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
"Dashboards are only defined in code" is true of the current state but not enforced, so it drifts
back silently.
The Grafana file provider sets
editable: falseandallowUiUpdates: false, which stops edits toprovisioned dashboards.
disableDeletion: falseonly removes a dashboard whose JSON file wasdeleted. Neither touches a dashboard the provider never created.
Found 2026-08-01:
bitborg CI runners — healthexisted twice — the provisionedbitborg-runnersand an unprovisioned UI copy (
aa433a50-c056-4f2f-ac0e-c329d3f68b3f) created 14 hours earlier byimporting the JSON by hand. Identical title, identical 12 panels. It had survived every apply since
2026-07-20, and two same-titled dashboards make deep links and on-call navigation ambiguous. The
duplicate has been deleted, so the folder is clean today.
Worth recording: an audit of all six provisioned dashboards compared every panel's
id,type,title,unitandexpragainst the repo JSON and found them byte-identical. Theversion > 1values are provisioning reloads, not UI saves. So the provisioning half works well; only the
reconcile-away half is missing.
What to do
Add a converge step to the
monitoringrole that lists dashboards in thegitborgfolder(
/api/search?type=dash-db&folderUIDs=…) and deletes any uid not matching abitborg-*.jsonfile in the role'sfiles/. Guard it so it cannot run against an empty file list.Secondary:
schemaVersionis 39 on five files and 42 onbitborg-runners.json, against Grafana13.0.2. Normalising stops re-provisioning bumping
versionon schema migration.