|
11 | 11 | "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.", |
12 | 12 | "type": "timeseries", |
13 | 13 | "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, |
| 14 | + "options": { |
| 15 | + "tooltip": { "mode": "multi", "sort": "desc" } |
| 16 | + }, |
14 | 17 | "targets": [ |
15 | 18 | { |
16 | 19 | "datasource": { "type": "prometheus" }, |
17 | 20 | "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" |
19 | 22 | }, |
20 | 23 | { |
21 | 24 | "datasource": { "type": "prometheus" }, |
22 | 25 | "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" |
24 | 27 | } |
25 | 28 | ], |
26 | 29 | "fieldConfig": { |
27 | 30 | "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 | + } |
29 | 39 | }, |
30 | 40 | "overrides": [] |
31 | 41 | } |
|
35 | 45 | "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.", |
36 | 46 | "type": "timeseries", |
37 | 47 | "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, |
| 48 | + "options": { |
| 49 | + "tooltip": { "mode": "multi", "sort": "desc" } |
| 50 | + }, |
38 | 51 | "targets": [ |
39 | 52 | { |
40 | 53 | "datasource": { "type": "prometheus" }, |
41 | 54 | "expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.proposal.send\"}[5m]))", |
42 | | - "legendFormat": "proposals/sec" |
| 55 | + "legendFormat": "Proposals / Sec" |
43 | 56 | } |
44 | 57 | ], |
45 | 58 | "fieldConfig": { |
46 | 59 | "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 | + } |
48 | 68 | }, |
49 | 69 | "overrides": [] |
50 | 70 | } |
|
54 | 74 | "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.", |
55 | 75 | "type": "timeseries", |
56 | 76 | "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, |
| 77 | + "options": { |
| 78 | + "tooltip": { "mode": "multi", "sort": "desc" } |
| 79 | + }, |
57 | 80 | "targets": [ |
58 | 81 | { |
59 | 82 | "datasource": { "type": "prometheus" }, |
60 | 83 | "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" |
62 | 85 | } |
63 | 86 | ], |
64 | 87 | "fieldConfig": { |
65 | 88 | "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 | + } |
67 | 97 | }, |
68 | 98 | "overrides": [] |
69 | 99 | } |
|
73 | 103 | "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.", |
74 | 104 | "type": "stat", |
75 | 105 | "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, |
| 106 | + "options": { |
| 107 | + "tooltip": { "mode": "multi", "sort": "desc" } |
| 108 | + }, |
76 | 109 | "targets": [ |
77 | 110 | { |
78 | 111 | "datasource": { "type": "prometheus" }, |
79 | 112 | "expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.validation.send\"}[5m]))", |
80 | | - "legendFormat": "validations/sec" |
| 113 | + "legendFormat": "Validations / Sec" |
81 | 114 | } |
82 | 115 | ], |
83 | 116 | "fieldConfig": { |
|
92 | 125 | "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.", |
93 | 126 | "type": "timeseries", |
94 | 127 | "gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 }, |
| 128 | + "options": { |
| 129 | + "tooltip": { "mode": "multi", "sort": "desc" } |
| 130 | + }, |
95 | 131 | "targets": [ |
96 | 132 | { |
97 | 133 | "datasource": { "type": "prometheus" }, |
|
101 | 137 | ], |
102 | 138 | "fieldConfig": { |
103 | 139 | "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 | + } |
105 | 148 | }, |
106 | 149 | "overrides": [] |
107 | 150 | } |
|
111 | 154 | "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.", |
112 | 155 | "type": "timeseries", |
113 | 156 | "gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 }, |
| 157 | + "options": { |
| 158 | + "tooltip": { "mode": "multi", "sort": "desc" } |
| 159 | + }, |
114 | 160 | "targets": [ |
115 | 161 | { |
116 | 162 | "datasource": { "type": "prometheus" }, |
117 | 163 | "expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.accept\"}[5m]))", |
118 | | - "legendFormat": "accepts/sec" |
| 164 | + "legendFormat": "Accepts / Sec" |
119 | 165 | }, |
120 | 166 | { |
121 | 167 | "datasource": { "type": "prometheus" }, |
122 | 168 | "expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.ledger_close\"}[5m]))", |
123 | | - "legendFormat": "closes/sec" |
| 169 | + "legendFormat": "Closes / Sec" |
124 | 170 | } |
125 | 171 | ], |
126 | 172 | "fieldConfig": { |
127 | 173 | "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 | + } |
129 | 182 | }, |
130 | 183 | "overrides": [] |
131 | 184 | } |
|
135 | 188 | "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.", |
136 | 189 | "type": "timeseries", |
137 | 190 | "gridPos": { "h": 8, "w": 12, "x": 0, "y": 24 }, |
| 191 | + "options": { |
| 192 | + "tooltip": { "mode": "multi", "sort": "desc" } |
| 193 | + }, |
138 | 194 | "targets": [ |
139 | 195 | { |
140 | 196 | "datasource": { "type": "prometheus" }, |
141 | 197 | "expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.validation.send\"}[5m]))", |
142 | | - "legendFormat": "validations/sec" |
| 198 | + "legendFormat": "Validations / Sec" |
143 | 199 | }, |
144 | 200 | { |
145 | 201 | "datasource": { "type": "prometheus" }, |
146 | 202 | "expr": "sum(rate(traces_span_metrics_calls_total{span_name=\"consensus.ledger_close\"}[5m]))", |
147 | | - "legendFormat": "closes/sec" |
| 203 | + "legendFormat": "Closes / Sec" |
148 | 204 | } |
149 | 205 | ], |
150 | 206 | "fieldConfig": { |
151 | 207 | "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 | + } |
153 | 216 | }, |
154 | 217 | "overrides": [] |
155 | 218 | } |
|
159 | 222 | "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.", |
160 | 223 | "type": "heatmap", |
161 | 224 | "gridPos": { "h": 8, "w": 12, "x": 12, "y": 24 }, |
| 225 | + "options": { |
| 226 | + "tooltip": { "mode": "multi", "sort": "desc" }, |
| 227 | + "yAxis": { "axisLabel": "Duration (ms)" } |
| 228 | + }, |
162 | 229 | "targets": [ |
163 | 230 | { |
164 | 231 | "datasource": { "type": "prometheus" }, |
|
0 commit comments