Skip to content

feat(grafana): MySQL 7362 and PostgreSQL 9628/14114 curated packs - #369

Open
shmsr wants to merge 2 commits into
mainfrom
feat/grafana-mysql-postgres-curated-packs
Open

feat(grafana): MySQL 7362 and PostgreSQL 9628/14114 curated packs#369
shmsr wants to merge 2 commits into
mainfrom
feat/grafana-mysql-postgres-curated-packs

Conversation

@shmsr

@shmsr shmsr commented Aug 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Bundles curated packs for Grafana MySQL Overview 7362, PostgreSQL Database 9628, and PostgreSQL Exporter Quickstart 14114, so operators get exporter-specific typing, Helm/label ignore, and metric-name drift without a custom --rules-file.
  • Engine support those packs need: strip ignored_labels from native PromQL (and skip synthesizing those controls), do not yellow panels whose source metric is live_optional and absent, Grafana 5 singlestat units/decimals, and treat surviving EVAL aliases as Lens series.
  • Lab: mysql-load / postgres-load plus mysqld_exporter counter typing in the redis curated compose so 7362/9628 are not idle zero scrapes.

Test plan

  • pytest tests/test_curated_packs.py tests/test_migrate.py tests/targets/kibana/test_esql_utils.py
  • Migrate+upload 7362, 9628, and 14114 against prometheus_native metrics-* (--translation-mode auto --upload --smoke)
  • Confirm in a fresh Kibana view-mode tab (not a stale edit session) that leftover Helm Release controls are gone on 9628 and Instance options load on 14114 (pg_up, not up)
  • grafana-validate-uploaded on the three dashboards: no empty/error panels that are not documented pack approximations (9628 Version / Start Time remain approximate by design)

Operators migrating these community dashboards hit exporter typing, Helm
label noise, and metric-name drift that a generic PromQL pass cannot know.
Bundle packs plus the engine support they need so the installable CLI
produces usable Kibana panels without a custom rules file.
return None
if "computed_value" in metric_fields:
metric_col = "computed_value"
metric_fields = ["computed_value"]
return None
if "computed_value" in metric_fields:
metric_col = "computed_value"
metric_fields = ["computed_value"]
Bare instant gauges were kept native before the live-missing check, so
absent tiles scored green and Elasticsearch could emit value_$1/$2
instead of value. Fall through to telemetry-missing markdown, treat
CONCAT EVAL aliases as series keys, and expect ignored-label matchers
to stay native after stripping.
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