Skip to content

fix(dashboard): align Grafana panel queries with OTel metric names - #103

Merged
Cianidos merged 2 commits into
mainfrom
fix/dashboard-otel-metric-names
Jul 21, 2026
Merged

fix(dashboard): align Grafana panel queries with OTel metric names#103
Cianidos merged 2 commits into
mainfrom
fix/dashboard-otel-metric-names

Conversation

@Cianidos

@Cianidos Cianidos commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

What

docs/dashboard.json rendered no data — its panel queries referenced metric names from an older export scheme. Updates every panel expr, template variable, and the default ${prefix} to match what stroppy actually emits through OpenTelemetry -> Prometheus.

Closes #87.

Why the dashboard was empty

Panel expected Actual metric
${prefix} = stroppy_k6_tpcc_ stroppy_ (scenario is now a label, not in the name)
service.name=~"$job" job="stroppy" (otelcol maps service.name -> job)
tx_count (counter) tx_count_total
run_query_count (counter) run_query_count_total
..._duration_bucket ..._duration_milliseconds_bucket
data_received / data_sent data_received_bytes_total / data_sent_bytes_total
{__name__="${prefix}X.total", condition="nonzero"} X_total + condition="nonzero" label

Verification

Spun up a local stack (postgres + otelcol + VictoriaMetrics + Grafana) and ran real loads through it:

  • TPC-C throughput (10 VU, 90s) + TPC-C load (SF 50)
  • TPC-H load (SF 5, single worker) + workload (q1-q22, 0 errors)

Every panel returns real numbers after the rename. The load-phase "Insert rows/s" panels additionally filter event="progress" so they track the live cumulative row counter instead of the flat completed/confirmed final-value series (which would otherwise dilute the rate to ~0).

Notes

  • Metric-name suffixes (_total, _milliseconds_bucket, _bytes_total) are applied by the OTel -> Prometheus translation (otelcol prometheusremotewrite), not by stroppy directly — stroppy registers the base names (tx_count, run_query_duration, ...). The dashboard must speak the post-translation names.
  • The condition="nonzero" rate-metric encoding (tx_error_rate, insert_error_rate) is preserved; only the .total -> _total name form changed.

Cianidos added 2 commits July 22, 2026 02:46
docs/dashboard.json queried metric names from an older export scheme and
rendered no data. Update every panel expr, template variable, and the
default ${prefix} to match current OpenTelemetry -> Prometheus output:

- prefix default stroppy_k6_tpcc_ -> stroppy_ (scenario is now a label)
- label filter service.name -> job (otelcol mapping)
- counters tx_count/run_query_count -> _total suffix
- duration histograms _bucket -> _milliseconds_bucket
- data_received/data_sent -> _bytes_total
- rate metrics X.total -> X_total
- load-phase insert-rate panels filter event="progress" to track the
  live cumulative counter, not the flat final-value series

Refs #87.
@Cianidos
Cianidos merged commit dc775d7 into main Jul 21, 2026
8 checks passed
@Cianidos
Cianidos deleted the fix/dashboard-otel-metric-names branch July 29, 2026 13:27
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.

chore(dashboard): refresh repo dashboard (docs/dashboard.json)

1 participant