mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-23 15:10:34 +00:00
Panel legends only showed the node (service_instance_id); the perf-iac
filter dimensions (xrpl_branch, xrpl_node_role) never appeared, so
baseline-vs-test series were indistinguishable.
Each node-referencing target now injects its curated name via
label_replace(...,"series",...) and uses the Prometheus "__auto" legend,
which shows only labels that vary across the displayed series. A
renameByRegex chain reshapes the auto output into
"Name [node, role]-[branch, work_item]", collapsing empty groups so a
dimension appears only when the filter widens it. Aggregating queries gain
xrpl_branch/xrpl_node_role in their by() so those labels survive; multi-
dimension legends keep their rich label set and append branch/role.
Quantile panels surfaced the quantile via the panel title (q$quantile),
since {{quantile}} is a dashboard variable, not a series label.
Timeseries panels now connect only null gaps shorter than 30m
(spanNulls=1800000): brief scrape gaps bridge, genuine outages stay broken.
Non-node panels (heatmaps, rows, tables, state timelines, category/bucket
series) are left unchanged. Applied to all 14 dashboards.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2174 lines
78 KiB
JSON
2174 lines
78 KiB
JSON
{
|
|
"annotations": {
|
|
"list": []
|
|
},
|
|
"description": "What this shows: Ledger data exchange and object-fetch traffic between this node and its peers: ledger sync, tree-node retrieval, and transaction-set exchange.\nUse it to: See how much ledger data the node is pulling or serving and spot catch-up activity.",
|
|
"editable": true,
|
|
"fiscalYearStartMonth": 0,
|
|
"graphTooltip": 1,
|
|
"id": null,
|
|
"links": [],
|
|
"panels": [
|
|
{
|
|
"title": "Ledger Data \u2014 Ledger",
|
|
"description": "###### What this is:\n*Inbound bytes for ledger-data message categories, split into aggregate get/share plus the transaction-set, transaction-node, and account-state-node sub-types the node receives from peers.*\n\n###### How it's computed:\n*Per-category inbound byte rate per node.*\n\n###### Reading it:\n*Normally low and flat once synced. Account-state-node traffic dominates during state sync; transaction-set-candidate traffic dominates during consensus catch-up.*\n\n###### Healthy range:\n*workload-dependent; low and steady on a synced node.*\n\n###### Watch for:\n*Sustained high account-state or tx-node inbound bytes on a node that should be caught up (repeated re-sync, missing history), or a single peer driving all traffic.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Ledger Data Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Ledger Data Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "Ledger Data \u2014 Transaction",
|
|
"description": "###### What this is:\n*Inbound bytes for ledger-data message categories, split into aggregate get/share plus the transaction-set, transaction-node, and account-state-node sub-types the node receives from peers.*\n\n###### How it's computed:\n*Per-category inbound byte rate per node.*\n\n###### Reading it:\n*Normally low and flat once synced. Account-state-node traffic dominates during state sync; transaction-set-candidate traffic dominates during consensus catch-up.*\n\n###### Healthy range:\n*workload-dependent; low and steady on a synced node.*\n\n###### Watch for:\n*Sustained high account-state or tx-node inbound bytes on a node that should be caught up (repeated re-sync, missing history), or a single peer driving all traffic.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 0
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_transaction_set_candidate_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Set Candidate Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_transaction_set_candidate_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Set Candidate Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_transaction_node_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Node Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_transaction_node_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Node Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "Ledger Data \u2014 Account State",
|
|
"description": "###### What this is:\n*Inbound bytes for ledger-data message categories, split into aggregate get/share plus the transaction-set, transaction-node, and account-state-node sub-types the node receives from peers.*\n\n###### How it's computed:\n*Per-category inbound byte rate per node.*\n\n###### Reading it:\n*Normally low and flat once synced. Account-state-node traffic dominates during state sync; transaction-set-candidate traffic dominates during consensus catch-up.*\n\n###### Healthy range:\n*workload-dependent; low and steady on a synced node.*\n\n###### Watch for:\n*Sustained high account-state or tx-node inbound bytes on a node that should be caught up (repeated re-sync, missing history), or a single peer driving all traffic.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 8
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_account_state_node_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Account State Node Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_data_account_state_node_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Account State Node Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "Ledger Traffic \u2014 Ledger",
|
|
"description": "###### What this is:\n*Inbound bytes for the older ledger share/get message categories and their tx-set, tx-node, and account-state sub-types.*\n\n###### How it's computed:\n*Per-category inbound byte rate per node.*\n\n###### Reading it:\n*Usually small; these legacy categories carry ledger-fetch traffic for peers using the older protocol.*\n\n###### Healthy range:\n*workload-dependent; low on a synced node.*\n\n###### Watch for:\n*Large sustained volumes indicating heavy fetch load or a peer repeatedly requesting the same data.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 8
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Ledger Get In\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Ledger Share In\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "Ledger Traffic \u2014 Transaction",
|
|
"description": "###### What this is:\n*Inbound bytes for the older ledger share/get message categories and their tx-set, tx-node, and account-state sub-types.*\n\n###### How it's computed:\n*Per-category inbound byte rate per node.*\n\n###### Reading it:\n*Usually small; these legacy categories carry ledger-fetch traffic for peers using the older protocol.*\n\n###### Healthy range:\n*workload-dependent; low on a synced node.*\n\n###### Watch for:\n*Large sustained volumes indicating heavy fetch load or a peer repeatedly requesting the same data.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 16
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_transaction_set_candidate_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Set Candidate Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_transaction_set_candidate_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Set Candidate Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_transaction_node_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Node Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_transaction_node_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Node Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "Ledger Traffic \u2014 Account State",
|
|
"description": "###### What this is:\n*Inbound bytes for the older ledger share/get message categories and their tx-set, tx-node, and account-state sub-types.*\n\n###### How it's computed:\n*Per-category inbound byte rate per node.*\n\n###### Reading it:\n*Usually small; these legacy categories carry ledger-fetch traffic for peers using the older protocol.*\n\n###### Healthy range:\n*workload-dependent; low on a synced node.*\n\n###### Watch for:\n*Large sustained volumes indicating heavy fetch load or a peer repeatedly requesting the same data.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 16
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_account_state_node_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Account State Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(ledger_account_state_node_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Account State Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject \u2014 Ledger",
|
|
"description": "###### What this is:\n*Inbound bytes for object-fetch traffic broken down by object type: ledger headers, individual transactions, transaction-tree nodes, and state-tree nodes.*\n\n###### How it's computed:\n*Per-type inbound byte rate per node.*\n\n###### Reading it:\n*Small during steady state; grows when the node fetches missing tree nodes.*\n\n###### Healthy range:\n*workload-dependent; low when synced.*\n\n###### Watch for:\n*A large share on state/tx nodes for long periods (persistent gap-filling), meaning the node keeps catching up.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 24
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_ledger_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Ledger Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_ledger_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Ledger Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject \u2014 Transaction",
|
|
"description": "###### What this is:\n*Inbound bytes for object-fetch traffic broken down by object type: ledger headers, individual transactions, transaction-tree nodes, and state-tree nodes.*\n\n###### How it's computed:\n*Per-type inbound byte rate per node.*\n\n###### Reading it:\n*Small during steady state; grows when the node fetches missing tree nodes.*\n\n###### Healthy range:\n*workload-dependent; low when synced.*\n\n###### Watch for:\n*A large share on state/tx nodes for long periods (persistent gap-filling), meaning the node keeps catching up.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 24
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transaction_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Transaction Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transaction_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Transaction Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transaction_node_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Node Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transaction_node_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Node Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject \u2014 Account State",
|
|
"description": "###### What this is:\n*Inbound bytes for object-fetch traffic broken down by object type: ledger headers, individual transactions, transaction-tree nodes, and state-tree nodes.*\n\n###### How it's computed:\n*Per-type inbound byte rate per node.*\n\n###### Reading it:\n*Small during steady state; grows when the node fetches missing tree nodes.*\n\n###### Healthy range:\n*workload-dependent; low when synced.*\n\n###### Watch for:\n*A large share on state/tx nodes for long periods (persistent gap-filling), meaning the node keeps catching up.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 32
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_account_state_node_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Account State Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_account_state_node_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Account State Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject Messages \u2014 Ledger",
|
|
"description": "###### What this is:\n*Count of individual object-fetch request/response messages per object type.*\n\n###### How it's computed:\n*Per-type inbound message rate per node.*\n\n###### Reading it:\n*Many messages with few bytes means small piecemeal fetches; few messages with many bytes means large batch transfers.*\n\n###### Healthy range:\n*workload-dependent.*\n\n###### Watch for:\n*High message counts with tiny payloads sustained over time (inefficient per-node fetching).*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 32
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_ledger_get_messages_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Ledger Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "cps",
|
|
"custom": {
|
|
"axisLabel": "Messages In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject Messages \u2014 Transaction",
|
|
"description": "###### What this is:\n*Count of individual object-fetch request/response messages per object type.*\n\n###### How it's computed:\n*Per-type inbound message rate per node.*\n\n###### Reading it:\n*Many messages with few bytes means small piecemeal fetches; few messages with many bytes means large batch transfers.*\n\n###### Healthy range:\n*workload-dependent.*\n\n###### Watch for:\n*High message counts with tiny payloads sustained over time (inefficient per-node fetching).*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 40
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transaction_get_messages_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Transaction Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transaction_node_get_messages_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"TX Node Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "cps",
|
|
"custom": {
|
|
"axisLabel": "Messages In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject Messages \u2014 Account State",
|
|
"description": "###### What this is:\n*Count of individual object-fetch request/response messages per object type.*\n\n###### How it's computed:\n*Per-type inbound message rate per node.*\n\n###### Reading it:\n*Many messages with few bytes means small piecemeal fetches; few messages with many bytes means large batch transfers.*\n\n###### Healthy range:\n*workload-dependent.*\n\n###### Watch for:\n*High message counts with tiny payloads sustained over time (inefficient per-node fetching).*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 40
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_account_state_node_get_messages_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Account State Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "cps",
|
|
"custom": {
|
|
"axisLabel": "Messages In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject Messages \u2014 Specials",
|
|
"description": "###### What this is:\n*Count of individual object-fetch request/response messages per object type.*\n\n###### How it's computed:\n*Per-type inbound message rate per node.*\n\n###### Reading it:\n*Many messages with few bytes means small piecemeal fetches; few messages with many bytes means large batch transfers.*\n\n###### Healthy range:\n*workload-dependent.*\n\n###### Watch for:\n*High message counts with tiny payloads sustained over time (inefficient per-node fetching).*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 48
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_cas_get_messages_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"CAS Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_fetch_pack_get_messages_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Fetch Pack Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transactions_get_messages_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Transactions Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "cps",
|
|
"custom": {
|
|
"axisLabel": "Messages In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "GetObject \u2014 Specials",
|
|
"description": "###### What this is:\n*Aggregate object-fetch inbound bytes plus special buckets: content-addressed storage fetches, bulk fetch-pack downloads used during catch-up, and bulk transaction fetches.*\n\n###### How it's computed:\n*Per-category inbound byte rate per node.*\n\n###### Reading it:\n*Fetch-pack rises sharply while catching up a range of ledgers; near zero when fully synced.*\n\n###### Healthy range:\n*workload-dependent; low when synced.*\n\n###### Watch for:\n*Continuous fetch-pack traffic (node never fully catches up) or unexpectedly high content-store volume.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "timeseries",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 12,
|
|
"y": 48
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_cas_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"CAS Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_cas_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"CAS Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_fetch_pack_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Fetch Pack Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_fetch_pack_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Fetch Pack Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_transactions_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Transactions Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_get_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Aggregate Get\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
},
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(rate(getobject_share_bytes_in{service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\"}[$__rate_interval]), \"series\", \"Aggregate Share\", \"\", \"\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "Bps",
|
|
"custom": {
|
|
"axisLabel": "Bytes In",
|
|
"spanNulls": 1800000,
|
|
"insertNulls": false,
|
|
"showPoints": "auto",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"title": "Overlay Traffic Heatmap (All Categories, Bytes In)",
|
|
"description": "###### What this is:\n*All overlay traffic categories ranked by inbound bytes, giving an at-a-glance view of which message types consume the most receive bandwidth.*\n\n###### How it's computed:\n*Top categories by latest inbound byte value across all traffic categories.*\n\n###### Reading it:\n*The longest bars are the biggest bandwidth consumers; on a synced node transactions, proposals, and validations usually lead.*\n\n###### Healthy range:\n*workload-dependent.*\n\n###### Watch for:\n*A single ledger-data or fetch category dominating (ongoing sync) or an unexpected category topping the list.*\n\n###### Source:\n[OverlayImpl.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/overlay/detail/OverlayImpl.cpp)\n\n###### Function:\n`OverlayImpl ctor (TrafficGauges)`",
|
|
"type": "bargauge",
|
|
"gridPos": {
|
|
"h": 8,
|
|
"w": 12,
|
|
"x": 0,
|
|
"y": 56
|
|
},
|
|
"options": {
|
|
"tooltip": {
|
|
"mode": "multi",
|
|
"sort": "desc"
|
|
},
|
|
"displayMode": "gradient",
|
|
"orientation": "horizontal",
|
|
"reduceOptions": {
|
|
"calcs": ["lastNotNull"],
|
|
"fields": "",
|
|
"values": false
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"expr": "label_replace(topk(20, {service_instance_id=~\"$node\", deployment_environment=~\"$deployment_environment\", xrpl_network_type=~\"$xrpl_network_type\", service_name=~\"$service_name\", xrpl_work_item=~\"$xrpl_work_item\", xrpl_branch=~\"$xrpl_branch\", xrpl_node_role=~\"$xrpl_node_role\", __name__=~\".*_bytes_in\", __name__!~\"total_.*\"}), \"series\", \"$1\", \"__name__\", \"(.*)\")",
|
|
"legendFormat": "__auto"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"unit": "decbytes",
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{
|
|
"color": "green",
|
|
"value": null
|
|
},
|
|
{
|
|
"color": "yellow",
|
|
"value": 1048576
|
|
},
|
|
{
|
|
"color": "red",
|
|
"value": 104857600
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"overrides": []
|
|
},
|
|
"transformations": [
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|le|__name__)=\"[^\"]*\",?\\s*/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\{(?:series=\"([^\"]*)\",?\\s*)?(?:service_instance_id=\"([^\"]*)\",?\\s*)?(?:xrpl_branch=\"([^\"]*)\",?\\s*)?(?:xrpl_node_role=\"([^\"]*)\",?\\s*)?(?:xrpl_work_item=\"([^\"]*)\",?\\s*)?\\}/g",
|
|
"renamePattern": "$1 [$2, $4]-[$3, $5]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/,\\s*\\]/g",
|
|
"renamePattern": "]"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[,\\s*/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]-\\[/g",
|
|
"renamePattern": "["
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/-\\[\\]/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\[\\]\\s*$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s*\\[\\]\\s*$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/\\s{2,}/g",
|
|
"renamePattern": " "
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^\\s+|\\s+$/g",
|
|
"renamePattern": ""
|
|
}
|
|
},
|
|
{
|
|
"id": "renameByRegex",
|
|
"options": {
|
|
"regex": "/^$/g",
|
|
"renamePattern": "all"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"schemaVersion": 39,
|
|
"tags": ["ledger", "sync"],
|
|
"templating": {
|
|
"list": [
|
|
{
|
|
"name": "DS_PROMETHEUS",
|
|
"type": "datasource",
|
|
"label": "Prometheus",
|
|
"query": "prometheus",
|
|
"regex": "",
|
|
"current": {},
|
|
"hide": 0,
|
|
"refresh": 1,
|
|
"includeAll": false,
|
|
"multi": false,
|
|
"options": []
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"label": "Service Name",
|
|
"description": "Filter by service.name (e.g. xrpld, xrpld-validator)",
|
|
"type": "query",
|
|
"query": "label_values(service_name)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"includeAll": true,
|
|
"allValue": ".*",
|
|
"current": {
|
|
"text": "xrpld",
|
|
"value": "xrpld"
|
|
},
|
|
"multi": true,
|
|
"refresh": 2,
|
|
"sort": 1
|
|
},
|
|
{
|
|
"name": "deployment_environment",
|
|
"label": "Environment",
|
|
"description": "Filter by deployment tier [local / ci / test / prod]",
|
|
"type": "query",
|
|
"query": "label_values(deployment_environment)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"includeAll": true,
|
|
"allValue": ".*",
|
|
"current": {
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"multi": true,
|
|
"refresh": 2,
|
|
"sort": 1
|
|
},
|
|
{
|
|
"name": "xrpl_network_type",
|
|
"label": "Network",
|
|
"description": "Filter by XRPL network [mainnet / testnet / devnet / perf / unknown]",
|
|
"type": "query",
|
|
"query": "label_values(xrpl_network_type)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"includeAll": true,
|
|
"allValue": ".*",
|
|
"current": {
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"multi": true,
|
|
"refresh": 2,
|
|
"sort": 1
|
|
},
|
|
{
|
|
"name": "xrpl_work_item",
|
|
"label": "Work Item",
|
|
"description": "Filter by perf-iac work item / ticket (e.g. RIPD-7455)",
|
|
"type": "query",
|
|
"query": "label_values(xrpl_work_item)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"includeAll": true,
|
|
"allValue": ".*",
|
|
"current": {
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"multi": true,
|
|
"refresh": 2,
|
|
"sort": 1
|
|
},
|
|
{
|
|
"name": "xrpl_branch",
|
|
"label": "Branch",
|
|
"description": "Filter by comparison side (baseline:<ref>:<commit> / test:<ref>:<commit>)",
|
|
"type": "query",
|
|
"query": "label_values(xrpl_branch)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"includeAll": true,
|
|
"allValue": ".*",
|
|
"current": {
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"multi": true,
|
|
"refresh": 2,
|
|
"sort": 1
|
|
},
|
|
{
|
|
"name": "xrpl_node_role",
|
|
"label": "Node Role",
|
|
"description": "Filter by node role (validator / peer)",
|
|
"type": "query",
|
|
"query": "label_values(xrpl_node_role)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"includeAll": true,
|
|
"allValue": ".*",
|
|
"current": {
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"multi": true,
|
|
"refresh": 2,
|
|
"sort": 1
|
|
},
|
|
{
|
|
"name": "node",
|
|
"label": "Node",
|
|
"description": "Filter by rippled node (service.instance.id)",
|
|
"type": "query",
|
|
"query": "label_values(target_info, service_instance_id)",
|
|
"datasource": {
|
|
"type": "prometheus",
|
|
"uid": "${DS_PROMETHEUS}"
|
|
},
|
|
"includeAll": true,
|
|
"allValue": ".*",
|
|
"current": {
|
|
"text": "All",
|
|
"value": "$__all"
|
|
},
|
|
"multi": true,
|
|
"refresh": 2,
|
|
"sort": 1
|
|
}
|
|
]
|
|
},
|
|
"time": {
|
|
"from": "now-1h",
|
|
"to": "now"
|
|
},
|
|
"title": "Ledger Data & Sync",
|
|
"uid": "ledger-data-sync",
|
|
"refresh": "10s"
|
|
}
|