Skip to content

Commit 2194022

Browse files
Apply visualization defaults + Title Case to all Grafana panels
Standardize all 32 panels with: tooltip mode multi/desc, axis labels, spanNulls true, insertNulls false, showPoints auto, pointSize 3. Use Title Case for all metric names and axis labels. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d5b8da6 commit 2194022

File tree

5 files changed

+319
-60
lines changed

5 files changed

+319
-60
lines changed

docker/telemetry/grafana/dashboards/consensus-health.json

Lines changed: 82 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,31 @@
1111
"description": "p95 and p50 duration of consensus accept rounds. The consensus.accept span (RCLConsensus.cpp:395) measures the time to process an accepted ledger including transaction application and state finalization. The span carries xrpl.consensus.proposers and xrpl.consensus.round_time_ms attributes. Normal range is 3-6 seconds on mainnet.",
1212
"type": "timeseries",
1313
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
14+
"options": {
15+
"tooltip": { "mode": "multi", "sort": "desc" }
16+
},
1417
"targets": [
1518
{
1619
"datasource": { "type": "prometheus" },
1720
"expr": "histogram_quantile(0.95, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{span_name=\"consensus.accept\"}[5m])))",
18-
"legendFormat": "p95 round duration"
21+
"legendFormat": "P95 Round Duration"
1922
},
2023
{
2124
"datasource": { "type": "prometheus" },
2225
"expr": "histogram_quantile(0.50, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{span_name=\"consensus.accept\"}[5m])))",
23-
"legendFormat": "p50 round duration"
26+
"legendFormat": "P50 Round Duration"
2427
}
2528
],
2629
"fieldConfig": {
2730
"defaults": {
28-
"unit": "ms"
31+
"unit": "ms",
32+
"custom": {
33+
"axisLabel": "Duration (ms)",
34+
"spanNulls": true,
35+
"insertNulls": false,
36+
"showPoints": "auto",
37+
"pointSize": 3
38+
}
2939
},
3040
"overrides": []
3141
}
@@ -35,16 +45,26 @@
3545
"description": "Rate at which this node sends consensus proposals to the network. Sourced from the consensus.proposal.send span (RCLConsensus.cpp:177) which fires each time the node proposes a transaction set. The span carries xrpl.consensus.round identifying the consensus round number. A healthy proposing node should show steady proposal output.",
3646
"type": "timeseries",
3747
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 },
48+
"options": {
49+
"tooltip": { "mode": "multi", "sort": "desc" }
50+
},
3851
"targets": [
3952
{
4053
"datasource": { "type": "prometheus" },
4154
"expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.proposal.send\"}[5m]))",
42-
"legendFormat": "proposals/sec"
55+
"legendFormat": "Proposals / Sec"
4356
}
4457
],
4558
"fieldConfig": {
4659
"defaults": {
47-
"unit": "ops"
60+
"unit": "ops",
61+
"custom": {
62+
"axisLabel": "Proposals / Sec",
63+
"spanNulls": true,
64+
"insertNulls": false,
65+
"showPoints": "auto",
66+
"pointSize": 3
67+
}
4868
},
4969
"overrides": []
5070
}
@@ -54,16 +74,26 @@
5474
"description": "p95 duration of the ledger close event. The consensus.ledger_close span (RCLConsensus.cpp:282) measures the time from when consensus triggers a ledger close to completion. Carries xrpl.consensus.ledger.seq and xrpl.consensus.mode attributes. Compare with Consensus Round Duration to understand how close timing relates to overall round time.",
5575
"type": "timeseries",
5676
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 },
77+
"options": {
78+
"tooltip": { "mode": "multi", "sort": "desc" }
79+
},
5780
"targets": [
5881
{
5982
"datasource": { "type": "prometheus" },
6083
"expr": "histogram_quantile(0.95, sum by (le) (rate(traces_span_metrics_duration_milliseconds_bucket{span_name=\"consensus.ledger_close\"}[5m])))",
61-
"legendFormat": "p95 close duration"
84+
"legendFormat": "P95 Close Duration"
6285
}
6386
],
6487
"fieldConfig": {
6588
"defaults": {
66-
"unit": "ms"
89+
"unit": "ms",
90+
"custom": {
91+
"axisLabel": "Duration (ms)",
92+
"spanNulls": true,
93+
"insertNulls": false,
94+
"showPoints": "auto",
95+
"pointSize": 3
96+
}
6797
},
6898
"overrides": []
6999
}
@@ -73,11 +103,14 @@
73103
"description": "Rate at which this node sends ledger validations to the network. Sourced from the consensus.validation.send span (RCLConsensus.cpp:753). Each validation confirms the node has fully validated a ledger. The span carries xrpl.consensus.ledger.seq and xrpl.consensus.proposing. Should closely track the ledger close rate when the node is healthy.",
74104
"type": "stat",
75105
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 },
106+
"options": {
107+
"tooltip": { "mode": "multi", "sort": "desc" }
108+
},
76109
"targets": [
77110
{
78111
"datasource": { "type": "prometheus" },
79112
"expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.validation.send\"}[5m]))",
80-
"legendFormat": "validations/sec"
113+
"legendFormat": "Validations / Sec"
81114
}
82115
],
83116
"fieldConfig": {
@@ -92,6 +125,9 @@
92125
"description": "Breakdown of consensus ledger close events by the node's consensus mode (proposing, observing, wrongLedger, switchedLedger). Grouped by the xrpl.consensus.mode span attribute from consensus.ledger_close. A healthy validator should be predominantly in 'proposing' mode. Frequent 'wrongLedger' or 'switchedLedger' indicates sync issues.",
93126
"type": "timeseries",
94127
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 },
128+
"options": {
129+
"tooltip": { "mode": "multi", "sort": "desc" }
130+
},
95131
"targets": [
96132
{
97133
"datasource": { "type": "prometheus" },
@@ -101,7 +137,14 @@
101137
],
102138
"fieldConfig": {
103139
"defaults": {
104-
"unit": "ops"
140+
"unit": "ops",
141+
"custom": {
142+
"axisLabel": "Events / Sec",
143+
"spanNulls": true,
144+
"insertNulls": false,
145+
"showPoints": "auto",
146+
"pointSize": 3
147+
}
105148
},
106149
"overrides": []
107150
}
@@ -111,21 +154,31 @@
111154
"description": "Compares the rate of consensus.accept (ledger accepted after consensus) vs consensus.ledger_close (ledger close initiated). These should track closely in a healthy network. A divergence means some close events are not completing the accept phase, potentially indicating consensus failures or timeouts.",
112155
"type": "timeseries",
113156
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 },
157+
"options": {
158+
"tooltip": { "mode": "multi", "sort": "desc" }
159+
},
114160
"targets": [
115161
{
116162
"datasource": { "type": "prometheus" },
117163
"expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.accept\"}[5m]))",
118-
"legendFormat": "accepts/sec"
164+
"legendFormat": "Accepts / Sec"
119165
},
120166
{
121167
"datasource": { "type": "prometheus" },
122168
"expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.ledger_close\"}[5m]))",
123-
"legendFormat": "closes/sec"
169+
"legendFormat": "Closes / Sec"
124170
}
125171
],
126172
"fieldConfig": {
127173
"defaults": {
128-
"unit": "ops"
174+
"unit": "ops",
175+
"custom": {
176+
"axisLabel": "Events / Sec",
177+
"spanNulls": true,
178+
"insertNulls": false,
179+
"showPoints": "auto",
180+
"pointSize": 3
181+
}
129182
},
130183
"overrides": []
131184
}
@@ -135,21 +188,31 @@
135188
"description": "Compares the rate of consensus.validation.send vs consensus.ledger_close. Each validated ledger should produce one validation message. If validations lag behind closes, the node may be falling behind on validation or experiencing issues with the validation pipeline.",
136189
"type": "timeseries",
137190
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 24 },
191+
"options": {
192+
"tooltip": { "mode": "multi", "sort": "desc" }
193+
},
138194
"targets": [
139195
{
140196
"datasource": { "type": "prometheus" },
141197
"expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.validation.send\"}[5m]))",
142-
"legendFormat": "validations/sec"
198+
"legendFormat": "Validations / Sec"
143199
},
144200
{
145201
"datasource": { "type": "prometheus" },
146202
"expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.ledger_close\"}[5m]))",
147-
"legendFormat": "closes/sec"
203+
"legendFormat": "Closes / Sec"
148204
}
149205
],
150206
"fieldConfig": {
151207
"defaults": {
152-
"unit": "ops"
208+
"unit": "ops",
209+
"custom": {
210+
"axisLabel": "Events / Sec",
211+
"spanNulls": true,
212+
"insertNulls": false,
213+
"showPoints": "auto",
214+
"pointSize": 3
215+
}
153216
},
154217
"overrides": []
155218
}
@@ -159,6 +222,10 @@
159222
"description": "Heatmap showing the distribution of consensus.accept span durations across histogram buckets over time. Each cell represents how many accept events fell into that duration bucket in a 5m window. Useful for detecting outlier consensus rounds that take abnormally long.",
160223
"type": "heatmap",
161224
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 24 },
225+
"options": {
226+
"tooltip": { "mode": "multi", "sort": "desc" },
227+
"yAxis": { "axisLabel": "Duration (ms)" }
228+
},
162229
"targets": [
163230
{
164231
"datasource": { "type": "prometheus" },

0 commit comments

Comments
 (0)