From 2ee4d2ff2d7fb29bb3266e11d15b0f64b0f16d7e Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Fri, 5 Jun 2026 19:40:41 +0100 Subject: [PATCH] fix(telemetry): show consensus rounds as integer distribution, widen table panels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Number of rounds is an integer, but avg_over_time(establish_count) produced fractional values (2.1). Switch the Rounds panel to count_over_time() by (span.establish_count): one integer series per round count (1/2/3...), showing how many ledgers needed that many establish rounds — the meaningful distribution, inherently integer (decimals=0). Apply dashboard rule 9: panels with a right-side table legend take full width. Widen "Consensus Rounds per Ledger" and "Consensus Outcome Distribution" to w=24 and re-tile the dashboard. Verified via the Grafana proxy: rounds=2 dominates (~11-12 ledgers), rounds=3 occasional. Co-Authored-By: Claude Opus 4.8 --- .../grafana/dashboards/consensus-health.json | 65 ++++++++----------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/consensus-health.json b/docker/telemetry/grafana/dashboards/consensus-health.json index a13b4c3e63..419db64402 100644 --- a/docker/telemetry/grafana/dashboards/consensus-health.json +++ b/docker/telemetry/grafana/dashboards/consensus-health.json @@ -313,13 +313,13 @@ }, { "title": "Consensus Rounds per Ledger (Establish Count)", - "description": "Number of establish-phase iterations (proposal rounds) before agreement, from establish_count on consensus.establish. 1 = agreed on first proposal; higher = more rounds of re-proposing to converge.", + "description": "Distribution of ledgers by the number of establish-phase rounds (establish_count) needed to converge. Each series is an integer round count: 1 = agreed on the first proposal, 2/3 = needed more rounds. Watch for a shift toward higher counts under disagreement.", "type": "timeseries", "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 24 + "w": 24, + "x": 0, + "y": 32 }, "options": { "tooltip": { @@ -340,31 +340,22 @@ "uid": "tempo" }, "queryType": "traceql", - "query": "{name=\"consensus.establish\" && resource.service.instance.id=~\"$node\"} | avg_over_time(span.establish_count)", - "legendFormat": "Avg Rounds [{{resource.service.instance.id}}]", - "refId": "A" - }, - { - "datasource": { - "type": "tempo", - "uid": "tempo" - }, - "queryType": "traceql", - "query": "{name=\"consensus.establish\" && resource.service.instance.id=~\"$node\"} | max_over_time(span.establish_count)", - "legendFormat": "Max Rounds [{{resource.service.instance.id}}]", - "refId": "B" + "refId": "A", + "query": "{name=\"consensus.establish\" && resource.service.instance.id=~\"$node\"} | count_over_time() by (span.establish_count)", + "legendFormat": "{{span.establish_count}} Rounds" } ], "fieldConfig": { "defaults": { "unit": "none", "custom": { - "axisLabel": "Rounds per Ledger", + "axisLabel": "Ledgers in Window", "spanNulls": true, "insertNulls": false, "showPoints": "auto", "pointSize": 3 - } + }, + "decimals": 0 }, "overrides": [] }, @@ -378,7 +369,7 @@ "h": 8, "w": 12, "x": 0, - "y": 32 + "y": 40 }, "options": { "tooltip": { @@ -421,7 +412,7 @@ "h": 8, "w": 12, "x": 12, - "y": 32 + "y": 40 }, "options": { "tooltip": { @@ -461,7 +452,7 @@ "h": 8, "w": 12, "x": 0, - "y": 40 + "y": 48 }, "options": { "tooltip": { @@ -501,7 +492,7 @@ "h": 8, "w": 12, "x": 12, - "y": 40 + "y": 48 }, "targets": [ { @@ -535,7 +526,7 @@ "h": 8, "w": 12, "x": 0, - "y": 48 + "y": 56 }, "options": { "tooltip": { @@ -572,7 +563,7 @@ "h": 8, "w": 12, "x": 12, - "y": 48 + "y": 56 }, "targets": [ { @@ -606,7 +597,7 @@ "h": 8, "w": 12, "x": 0, - "y": 56 + "y": 64 }, "fieldConfig": { "defaults": { @@ -653,7 +644,7 @@ "h": 8, "w": 12, "x": 12, - "y": 56 + "y": 64 }, "fieldConfig": { "defaults": { @@ -700,7 +691,7 @@ "h": 8, "w": 12, "x": 0, - "y": 64 + "y": 72 }, "fieldConfig": { "defaults": { @@ -791,7 +782,7 @@ "h": 8, "w": 12, "x": 12, - "y": 64 + "y": 72 }, "fieldConfig": { "defaults": { @@ -839,7 +830,7 @@ "h": 8, "w": 12, "x": 0, - "y": 72 + "y": 80 }, "fieldConfig": { "defaults": { @@ -885,9 +876,9 @@ "type": "piechart", "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 72 + "w": 24, + "x": 0, + "y": 88 }, "options": { "legend": { @@ -924,7 +915,7 @@ "h": 8, "w": 12, "x": 0, - "y": 80 + "y": 96 }, "options": { "tooltip": { @@ -971,7 +962,7 @@ "h": 8, "w": 12, "x": 12, - "y": 80 + "y": 96 }, "options": { "tooltip": { @@ -1018,7 +1009,7 @@ "h": 8, "w": 12, "x": 0, - "y": 88 + "y": 104 }, "options": { "tooltip": { @@ -1058,7 +1049,7 @@ "h": 8, "w": 12, "x": 12, - "y": 88 + "y": 104 }, "options": { "tooltip": {