fix(telemetry): standardize transaction-overview legends and cap tooltips

Apply the dashboard legend convention across all panels now that the
P50 series have been removed (P95-only):

- Drop the redundant "P95 " / "P50 " prefix; the panel title already
  states the percentile.
- Put every filter/dimension value inside [] comma-separated, ending
  with exported_instance, e.g. "AMMDeposit [Preclaim, xrpld-mainnet]".
- Add exported_instance to the by() clause and legend of the three
  panels that filtered on $node but omitted it (Transaction Rate by
  Type, Transaction Results by Type, TxQ Accept Status), so per-node
  series are produced.
- Title-case the stage value for display via label_replace in the four
  apply-pipeline panels; the span attribute stays lowercase
  (preflight/preclaim/apply) since legendFormat cannot change case.
- Cap tooltip maxHeight at 500 on every panel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Pratik Mankawde
2026-06-05 15:06:52 +01:00
parent db4d70bbc2
commit ceea9e49dd

View File

@@ -21,7 +21,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -67,7 +68,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -81,7 +83,7 @@
"type": "prometheus"
},
"expr": "histogram_quantile(0.95, sum by (le, tx_type, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[5m])))",
"legendFormat": "P95 {{tx_type}} [{{exported_instance}}]"
"legendFormat": "{{tx_type}} [{{exported_instance}}]"
}
],
"fieldConfig": {
@@ -111,7 +113,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -120,7 +123,7 @@
"type": "prometheus"
},
"expr": "sum by (local, exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", local=~\"$tx_origin\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[5m]))",
"legendFormat": "Local = {{local}} [{{exported_instance}}]"
"legendFormat": "Local [{{local}}, {{exported_instance}}]"
}
]
},
@@ -137,7 +140,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -146,7 +150,7 @@
"type": "prometheus"
},
"expr": "sum by (suppressed, exported_instance) (rate(traces_span_metrics_calls_total{span_name=\"tx.receive\", tx_type=~\"$tx_type\", exported_instance=~\"$node\"}[$__rate_interval]))",
"legendFormat": "Suppressed={{suppressed}} [{{exported_instance}}]"
"legendFormat": "Suppressed [{{suppressed}}, {{exported_instance}}]"
}
],
"fieldConfig": {
@@ -176,7 +180,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"yAxis": {
"axisLabel": "Duration (ms)",
@@ -212,7 +217,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -221,7 +227,7 @@
"type": "prometheus"
},
"expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"tx.apply\"}[5m])))",
"legendFormat": "P95 tx.apply [{{exported_instance}}]"
"legendFormat": "tx.apply [{{exported_instance}}]"
}
],
"fieldConfig": {
@@ -251,7 +257,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -290,7 +297,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -338,7 +346,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -351,8 +360,8 @@
"datasource": {
"type": "prometheus"
},
"expr": "sum by (tx_type) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[5m]))",
"legendFormat": "{{tx_type}}"
"expr": "sum by (tx_type, exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[5m]))",
"legendFormat": "{{tx_type}} [{{exported_instance}}]"
}
],
"fieldConfig": {
@@ -382,7 +391,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -395,8 +405,8 @@
"datasource": {
"type": "prometheus"
},
"expr": "sum by (tx_type, ter_result) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"tx.process\", tx_type=~\"$tx_type\", ter_result=~\"$ter_result\", ter_result!=\"tesSUCCESS\"}[5m]))",
"legendFormat": "{{tx_type}}: {{ter_result}}"
"expr": "sum by (tx_type, ter_result, exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"tx.process\", tx_type=~\"$tx_type\", ter_result=~\"$ter_result\", ter_result!=\"tesSUCCESS\"}[5m]))",
"legendFormat": "{{tx_type}} [{{ter_result}}, {{exported_instance}}]"
}
],
"fieldConfig": {
@@ -430,7 +440,8 @@
"values": ["value", "percent"]
},
"tooltip": {
"mode": "multi"
"mode": "multi",
"maxHeight": 500
}
},
"targets": [
@@ -438,8 +449,8 @@
"datasource": {
"type": "prometheus"
},
"expr": "sum by (txq_status) (increase(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"txq.accept_tx\", txq_status=~\"$txq_status\"}[5m]))",
"legendFormat": "{{txq_status}}"
"expr": "sum by (txq_status, exported_instance) (increase(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=\"txq.accept_tx\", txq_status=~\"$txq_status\"}[5m]))",
"legendFormat": "{{txq_status}} [{{exported_instance}}]"
}
],
"fieldConfig": {
@@ -462,7 +473,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -476,7 +488,7 @@
"type": "prometheus"
},
"expr": "histogram_quantile(0.95, sum by (le, tx_type, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"tx.transactor\", tx_type=~\"$tx_type\"}[5m])))",
"legendFormat": "P95 {{tx_type}} [{{exported_instance}}]"
"legendFormat": "{{tx_type}} [{{exported_instance}}]"
}
],
"fieldConfig": {
@@ -506,7 +518,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -545,7 +558,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -584,7 +598,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -593,7 +608,7 @@
"type": "prometheus"
},
"expr": "histogram_quantile(0.95, sum by (le, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=\"txq.accept\"}[5m])))",
"legendFormat": "P95 Drain [{{exported_instance}}]"
"legendFormat": "Drain [{{exported_instance}}]"
}
],
"fieldConfig": {
@@ -623,7 +638,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
}
},
"targets": [
@@ -662,7 +678,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -675,7 +692,7 @@
"datasource": {
"type": "prometheus"
},
"expr": "sum by (stage, exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\"}[5m]))",
"expr": "label_replace(label_replace(label_replace(sum by (stage, exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\"}[5m])), \"stage\", \"Preflight\", \"stage\", \"preflight\"), \"stage\", \"Preclaim\", \"stage\", \"preclaim\"), \"stage\", \"Apply\", \"stage\", \"apply\")",
"legendFormat": "{{stage}} [{{exported_instance}}]"
}
],
@@ -706,7 +723,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -719,8 +737,8 @@
"datasource": {
"type": "prometheus"
},
"expr": "histogram_quantile(0.95, sum by (le, stage, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\"}[5m])))",
"legendFormat": "P95 {{stage}} [{{exported_instance}}]"
"expr": "label_replace(label_replace(label_replace(histogram_quantile(0.95, sum by (le, stage, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\"}[5m]))), \"stage\", \"Preflight\", \"stage\", \"preflight\"), \"stage\", \"Preclaim\", \"stage\", \"preclaim\"), \"stage\", \"Apply\", \"stage\", \"apply\")",
"legendFormat": "{{stage}} [{{exported_instance}}]"
}
],
"fieldConfig": {
@@ -750,7 +768,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -763,7 +782,7 @@
"datasource": {
"type": "prometheus"
},
"expr": "sum by (stage, exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\", ter_result!~\"tesSUCCESS|\"}[5m]))",
"expr": "label_replace(label_replace(label_replace(sum by (stage, exported_instance) (rate(traces_span_metrics_calls_total{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\", ter_result!~\"tesSUCCESS|\"}[5m])), \"stage\", \"Preflight\", \"stage\", \"preflight\"), \"stage\", \"Preclaim\", \"stage\", \"preclaim\"), \"stage\", \"Apply\", \"stage\", \"apply\")",
"legendFormat": "{{stage}} [{{exported_instance}}]"
}
],
@@ -794,7 +813,8 @@
"options": {
"tooltip": {
"mode": "multi",
"sort": "desc"
"sort": "desc",
"maxHeight": 500
},
"legend": {
"displayMode": "table",
@@ -807,8 +827,8 @@
"datasource": {
"type": "prometheus"
},
"expr": "histogram_quantile(0.95, sum by (le, tx_type, stage, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", tx_type=~\"$tx_type\", stage=~\"$stage\"}[5m])))",
"legendFormat": "P95 {{tx_type}} {{stage}} [{{exported_instance}}]"
"expr": "label_replace(label_replace(label_replace(histogram_quantile(0.95, sum by (le, tx_type, stage, exported_instance) (rate(traces_span_metrics_duration_milliseconds_bucket{exported_instance=~\"$node\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", tx_type=~\"$tx_type\", stage=~\"$stage\"}[5m]))), \"stage\", \"Preflight\", \"stage\", \"preflight\"), \"stage\", \"Preclaim\", \"stage\", \"preclaim\"), \"stage\", \"Apply\", \"stage\", \"apply\")",
"legendFormat": "{{tx_type}} [{{stage}}, {{exported_instance}}]"
}
],
"fieldConfig": {