From 73eb8336cc947ece4fd93f941e9153ce842fbce3 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Mon, 21 Sep 2026 17:00:56 +0100 Subject: [PATCH] feat(telemetry): add state-timeline pagination and multi-row annotations Every timeseries and state-timeline panel sets options.annotations.multiLane. The state-timeline panels set options.perPage to 5. 99 panels across 13 dashboards. Seven of those already carried the option from this branch's node-health export, so they flip here and not upstream. --- .../grafana/dashboards/consensus-health.json | 24 ++++++ .../grafana/dashboards/fee-market.json | 28 +++++++ .../grafana/dashboards/job-queue.json | 28 +++++++ .../grafana/dashboards/ledger-data-sync.json | 36 +++++++++ .../grafana/dashboards/ledger-operations.json | 4 + .../dashboards/log-derived-insights.json | 77 +++++++++++++++++++ .../grafana/dashboards/node-health.json | 65 ++++++++-------- .../dashboards/overlay-traffic-detail.json | 16 ++++ .../grafana/dashboards/peer-network.json | 8 ++ .../grafana/dashboards/peer-quality.json | 8 ++ .../grafana/dashboards/rpc-performance.json | 24 ++++++ .../dashboards/transaction-overview.json | 8 ++ .../grafana/dashboards/validator-health.json | 12 +++ 13 files changed, 308 insertions(+), 30 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/consensus-health.json b/docker/telemetry/grafana/dashboards/consensus-health.json index f66d65a993..a59b740276 100644 --- a/docker/telemetry/grafana/dashboards/consensus-health.json +++ b/docker/telemetry/grafana/dashboards/consensus-health.json @@ -311,6 +311,10 @@ "y": 31 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "mode": "multi", "sort": "desc", @@ -369,6 +373,10 @@ }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "mode": "multi", "sort": "desc", @@ -429,6 +437,10 @@ "y": 52 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "mode": "multi", "sort": "desc", @@ -482,6 +494,10 @@ "y": 62 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "mode": "multi", "sort": "desc", @@ -881,6 +897,10 @@ }, "id": 19, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "mode": "multi", "sort": "desc", @@ -1196,6 +1216,10 @@ "y": 144 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/fee-market.json b/docker/telemetry/grafana/dashboards/fee-market.json index bc90c3e7a7..6c1229a753 100644 --- a/docker/telemetry/grafana/dashboards/fee-market.json +++ b/docker/telemetry/grafana/dashboards/fee-market.json @@ -80,6 +80,10 @@ "y": 1 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -135,6 +139,10 @@ "y": 1 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -202,6 +210,10 @@ "y": 12 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -274,6 +286,10 @@ "y": 12 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -358,6 +374,10 @@ "y": 22 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -432,6 +452,10 @@ "y": 33 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -477,6 +501,10 @@ "y": 33 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/job-queue.json b/docker/telemetry/grafana/dashboards/job-queue.json index 9273c3eb68..5c52372a40 100644 --- a/docker/telemetry/grafana/dashboards/job-queue.json +++ b/docker/telemetry/grafana/dashboards/job-queue.json @@ -157,6 +157,10 @@ "y": 12 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -217,6 +221,10 @@ "y": 22 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -270,6 +278,10 @@ "y": 32 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -336,6 +348,10 @@ "y": 43 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -390,6 +406,10 @@ "y": 43 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -444,6 +464,10 @@ "y": 53 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -510,6 +534,10 @@ "y": 64 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/ledger-data-sync.json b/docker/telemetry/grafana/dashboards/ledger-data-sync.json index d14a8b88f0..e184e1c590 100644 --- a/docker/telemetry/grafana/dashboards/ledger-data-sync.json +++ b/docker/telemetry/grafana/dashboards/ledger-data-sync.json @@ -1686,6 +1686,10 @@ "y": 142 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1738,6 +1742,10 @@ "y": 142 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1796,6 +1804,10 @@ "y": 153 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1871,6 +1883,10 @@ "y": 153 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1924,6 +1940,10 @@ "y": 163 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1987,6 +2007,10 @@ "y": 163 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2039,6 +2063,10 @@ "y": 173 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2098,6 +2126,10 @@ "y": 173 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2150,6 +2182,10 @@ "y": 183 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/ledger-operations.json b/docker/telemetry/grafana/dashboards/ledger-operations.json index 8fefbda59b..4de2a0d484 100644 --- a/docker/telemetry/grafana/dashboards/ledger-operations.json +++ b/docker/telemetry/grafana/dashboards/ledger-operations.json @@ -455,6 +455,10 @@ "y": 53 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/log-derived-insights.json b/docker/telemetry/grafana/dashboards/log-derived-insights.json index dad20fc542..0205d6f370 100644 --- a/docker/telemetry/grafana/dashboards/log-derived-insights.json +++ b/docker/telemetry/grafana/dashboards/log-derived-insights.json @@ -938,6 +938,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -992,9 +996,14 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "showValue": "auto", "rowHeight": 0.9, "mergeValues": true, + "perPage": 5, "alignValue": "center", "tooltip": { "maxHeight": 600, @@ -1064,6 +1073,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1124,6 +1137,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1197,6 +1214,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1256,6 +1277,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1479,6 +1504,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1539,6 +1568,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1782,6 +1815,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1842,6 +1879,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1934,6 +1975,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1993,6 +2038,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2076,6 +2125,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2136,6 +2189,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2197,6 +2254,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2281,6 +2342,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2341,6 +2406,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2402,6 +2471,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -2494,6 +2567,10 @@ "overrides": [] }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/node-health.json b/docker/telemetry/grafana/dashboards/node-health.json index 6d6cc69f86..fa88f9a9a9 100644 --- a/docker/telemetry/grafana/dashboards/node-health.json +++ b/docker/telemetry/grafana/dashboards/node-health.json @@ -567,7 +567,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -759,7 +759,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -895,7 +895,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": ["sum", "max"], @@ -1031,7 +1031,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -1191,7 +1191,7 @@ "alignValue": "left", "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "displayMode": "list", @@ -1200,6 +1200,7 @@ "showLegend": true }, "mergeValues": true, + "perPage": 5, "rowHeight": 0.9, "showValue": "auto", "tooltip": { @@ -1308,7 +1309,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -1427,7 +1428,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -1534,7 +1535,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -1645,7 +1646,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -1757,7 +1758,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -1876,7 +1877,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -1992,7 +1993,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -2095,7 +2096,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -2278,7 +2279,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -2461,7 +2462,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -2564,7 +2565,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -2679,7 +2680,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -2798,7 +2799,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -2925,7 +2926,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -3737,7 +3738,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -3837,7 +3838,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -3974,7 +3975,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -4081,7 +4082,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -4185,7 +4186,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": ["last", "max"], @@ -4435,7 +4436,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -4555,7 +4556,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -4881,7 +4882,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -4984,7 +4985,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -5087,7 +5088,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -5190,7 +5191,7 @@ "options": { "annotations": { "clustering": -1, - "multiLane": false + "multiLane": true }, "legend": { "calcs": [], @@ -5245,6 +5246,10 @@ "y": 350 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json index c74e58235e..dd19064f0d 100644 --- a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json +++ b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json @@ -670,6 +670,10 @@ "y": 41 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -779,6 +783,10 @@ "y": 51 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -823,6 +831,10 @@ "y": 51 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -867,6 +879,10 @@ "y": 61 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/peer-network.json b/docker/telemetry/grafana/dashboards/peer-network.json index 3788de3be6..deb114f470 100644 --- a/docker/telemetry/grafana/dashboards/peer-network.json +++ b/docker/telemetry/grafana/dashboards/peer-network.json @@ -266,6 +266,10 @@ "y": 23 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -326,6 +330,10 @@ "y": 23 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/peer-quality.json b/docker/telemetry/grafana/dashboards/peer-quality.json index fb66e33b20..fde2f671fc 100644 --- a/docker/telemetry/grafana/dashboards/peer-quality.json +++ b/docker/telemetry/grafana/dashboards/peer-quality.json @@ -80,6 +80,10 @@ "y": 1 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -443,6 +447,10 @@ "y": 53 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/rpc-performance.json b/docker/telemetry/grafana/dashboards/rpc-performance.json index e5743792cc..0b232724a0 100644 --- a/docker/telemetry/grafana/dashboards/rpc-performance.json +++ b/docker/telemetry/grafana/dashboards/rpc-performance.json @@ -627,6 +627,10 @@ "y": 92 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -690,6 +694,10 @@ "y": 102 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -744,6 +752,10 @@ "y": 112 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -798,6 +810,10 @@ "y": 122 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -854,6 +870,10 @@ "y": 132 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -908,6 +928,10 @@ "y": 142 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", diff --git a/docker/telemetry/grafana/dashboards/transaction-overview.json b/docker/telemetry/grafana/dashboards/transaction-overview.json index 71e8d79ca8..9cc6da329e 100644 --- a/docker/telemetry/grafana/dashboards/transaction-overview.json +++ b/docker/telemetry/grafana/dashboards/transaction-overview.json @@ -800,6 +800,10 @@ "y": 122 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "mode": "multi", "sort": "desc", @@ -850,6 +854,10 @@ "y": 132 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "mode": "multi", "sort": "desc", diff --git a/docker/telemetry/grafana/dashboards/validator-health.json b/docker/telemetry/grafana/dashboards/validator-health.json index 5746a7567d..58ed43719c 100644 --- a/docker/telemetry/grafana/dashboards/validator-health.json +++ b/docker/telemetry/grafana/dashboards/validator-health.json @@ -642,6 +642,10 @@ "y": 92 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -973,6 +977,10 @@ "y": 153 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi", @@ -1022,6 +1030,10 @@ "y": 153 }, "options": { + "annotations": { + "clustering": -1, + "multiLane": true + }, "tooltip": { "maxHeight": 600, "mode": "multi",