Skip to content

chore(monitoring): move Grafana off EOL 9.3.0 and fix provisioning keys - #101

Open
feafel wants to merge 1 commit into
inkonchain:mainfrom
feafel:chore/bump-grafana-off-eol
Open

feafel wants to merge 1 commit into
inkonchain:mainfrom
feafel:chore/bump-grafana-off-eol

Conversation

@feafel

@feafel feafel commented Nov 4, 2026

Copy link
Copy Markdown

What

  1. docker-compose.yml: grafana/grafana:${IMAGE_TAG__GRAFANA:-9.3.0} → 12.4.14
  2. docker/grafana/provisioning/datasources/all.yml: org_id: 1 → orgId: 1, and drop the two InfluxDB entries from deleteDatasources
  3. docker/grafana/provisioning/dashboards/all.yml: org_id: 1 → orgId: 1

Why

The version. 9.3.0 is from December 2022 and has been end-of-life for years — every Grafana CVE fixed since (including the auth-bypass and XSS fixes shipped in 9.5 and 10.x) is missing from the monitoring stack every node operator runs. 12.4.14 is the current 12.x line and still receives patches (13.2.5 is available if you would rather jump to the newest major).

Compatibility, checked against the shipped dashboard before bumping:

check result
dashboard schemaVersion: 37 auto-migrated by Grafana on load
panel types gauge, row, stat, timeseries — all core panels; no removed graph panel
datasource reference dashboard uses uid 6R74VAnVz, which matches the provisioned datasource
provisioning format apiVersion: 1, file-based dashboard provider, GF_SECURITY_ADMIN_PASSWORD — all unchanged in 12.x

The keys. Both provisioning files use org_id; modern Grafana expects orgId and silently ignores the unknown field, so the datasource and dashboard provider fall back to org 1 (which happens to be the only org). Use the documented key so the intent is explicit and survives stricter parsing.

The InfluxDB entries. InfluxDB left the stack in #97, so deleteDatasources can never match them — dead config.

Verification

  • all three YAML files parse
  • the override still works: IMAGE_TAG__GRAFANA is documented in .env.example, so anyone pinned to an older tag is unaffected
  • dashboard JSON inspected field by field (schemaVersion, panel types, datasource uid)

Not verified: a live Grafana start (no Docker here) — the compatibility table above is from reading the shipped dashboard against Grafana's documented provisioning and migration behaviour.

The stack pins grafana/grafana:9.3.0 (December 2022). That release has been
end-of-life for years: every CVE fixed since - including the auth-bypass and
XSS fixes in 9.5/10.x - is missing from the monitoring stack every node
operator runs.

Bump the default to 12.4.14 (the current 12.x line, still receiving patches;
13.2.5 is available if you would rather jump to the newest major).

Compatibility was checked against the shipped dashboard before bumping:
- schemaVersion 37 is auto-migrated by Grafana on load
- panel types are gauge/row/stat/timeseries - all core panels, no removed
  'graph' panel
- the dashboard's datasource uid 6R74VAnVz matches the provisioned
  datasource uid
- provisioning apiVersion 1, GF_SECURITY_ADMIN_PASSWORD and the file-based
  dashboard provider are unchanged in 12.x

While in there, fix the provisioning schema: both files use org_id, which
modern Grafana ignores (it expects orgId), so the datasource and dashboard
provider silently fall back to org 1. Use the documented key.

Also drop the two InfluxDB entries from deleteDatasources - InfluxDB left the
stack in inkonchain#97, so they can never match anything.
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.

2 participants