From 5c275ac4762b1a2d5e529d80627747a68dcbc0a4 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Fri, 5 Jun 2026 19:21:59 +0100 Subject: [PATCH] fix(telemetry): set units, axis labels, and readable legends on close-time panels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apply the dashboard guidelines to the five close-time panels: - Axis labels (Title Case) on every panel: "Close Time (Ripple Seconds)" for the value panels, "Count / Milliseconds" for vote bins/resolution, "Rounds in Window" for the count panels. - Human-readable legends with the dimension in brackets per the legend convention: "Raw Close Time [{{resource.service.instance.id}}]", "Effective Close Time [...]", "Resolution Direction [{{span.resolution_direction}}]", "{{span.close_time_vote_bins}} Vote Bins" — replacing the bare label tokens. - Unit "none" (plain number): the close-time values are Ripple-epoch seconds and TraceQL metrics cannot offset them to a wall-clock unit, and the others are counts/ms on a shared axis. Verified rendered values against raw spans: close times ~833,998,8xx, resolution 10000 ms, vote bins 1/2/3 — all correct. Co-Authored-By: Claude Opus 4.8 --- .../grafana/dashboards/consensus-health.json | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/consensus-health.json b/docker/telemetry/grafana/dashboards/consensus-health.json index 37ed4469e9..e9545e9d0b 100644 --- a/docker/telemetry/grafana/dashboards/consensus-health.json +++ b/docker/telemetry/grafana/dashboards/consensus-health.json @@ -406,7 +406,8 @@ "custom": { "drawStyle": "points", "pointSize": 6, - "showPoints": "always" + "showPoints": "always", + "axisLabel": "Close Time (Ripple Seconds)" } }, "overrides": [] @@ -430,7 +431,7 @@ }, "queryType": "traceql", "query": "{name=\"consensus.accept.apply\" && resource.service.instance.id=~\"$node\"} | avg_over_time(span.close_time_self) by (resource.service.instance.id)", - "legendFormat": "{{resource.service.instance.id}}", + "legendFormat": "Raw Close Time [{{resource.service.instance.id}}]", "refId": "A" } ] @@ -451,7 +452,8 @@ "custom": { "drawStyle": "points", "pointSize": 6, - "showPoints": "always" + "showPoints": "always", + "axisLabel": "Close Time (Ripple Seconds)" } }, "overrides": [] @@ -475,7 +477,7 @@ }, "queryType": "traceql", "query": "{name=\"consensus.accept.apply\" && resource.service.instance.id=~\"$node\"} | avg_over_time(span.close_time) by (resource.service.instance.id)", - "legendFormat": "{{resource.service.instance.id}}", + "legendFormat": "Effective Close Time [{{resource.service.instance.id}}]", "refId": "A" } ] @@ -496,8 +498,10 @@ "drawStyle": "line", "lineInterpolation": "stepAfter", "pointSize": 5, - "showPoints": "auto" - } + "showPoints": "auto", + "axisLabel": "Count / Milliseconds" + }, + "unit": "none" }, "overrides": [ { @@ -584,8 +588,10 @@ "drawStyle": "bars", "fillOpacity": 40, "pointSize": 5, - "showPoints": "auto" - } + "showPoints": "auto", + "axisLabel": "Rounds in Window" + }, + "unit": "none" }, "overrides": [] }, @@ -608,7 +614,7 @@ }, "queryType": "traceql", "query": "{name=\"consensus.accept.apply\" && resource.service.instance.id=~\"$node\" && span.resolution_direction=~\"$resolution_direction\"} | count_over_time() by (span.resolution_direction)", - "legendFormat": "{{span.resolution_direction}}", + "legendFormat": "Resolution Direction [{{span.resolution_direction}}]", "refId": "A" } ] @@ -625,9 +631,10 @@ }, "fieldConfig": { "defaults": { - "unit": "short", + "unit": "none", "custom": { - "fillOpacity": 60 + "fillOpacity": 60, + "axisLabel": "Rounds in Window" } }, "overrides": [] @@ -654,7 +661,7 @@ }, "queryType": "traceql", "query": "{name=\"consensus.accept.apply\" && resource.service.instance.id=~\"$node\"} | count_over_time() by (span.close_time_vote_bins)", - "legendFormat": "{{span.close_time_vote_bins}} bins", + "legendFormat": "{{span.close_time_vote_bins}} Vote Bins", "refId": "A" } ]