From 8c34fd9f5a6e1f333b354c25a4ab0bea00e73604 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Tue, 14 Jul 2026 12:17:39 +0100 Subject: [PATCH 1/2] fix(telemetry): conditional filter-dimension legends + 30m span-nulls 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 injects its curated name via label_replace(...,"series",...) and uses the "__auto" legend, which shows only labels that vary across the displayed series. A word-boundary-anchored 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. Timeseries panels connect only null gaps shorter than 30m (spanNulls=1800000): brief scrape gaps bridge, genuine outages stay broken. Dashboards (stable panel set): ledger-data-sync, network-traffic, overlay-traffic-detail. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../grafana/dashboards/ledger-data-sync.json | 1427 +++++++++++++++-- .../grafana/dashboards/network-traffic.json | 932 ++++++++++- .../dashboards/overlay-traffic-detail.json | 808 +++++++++- 3 files changed, 2887 insertions(+), 280 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/ledger-data-sync.json b/docker/telemetry/grafana/dashboards/ledger-data-sync.json index 11868f5e15..31658ba322 100644 --- a/docker/telemetry/grafana/dashboards/ledger-data-sync.json +++ b/docker/telemetry/grafana/dashboards/ledger-data-sync.json @@ -10,7 +10,7 @@ "links": [], "panels": [ { - "title": "Ledger Data — Ledger", + "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": { @@ -30,15 +30,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Data Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Ledger Data Share [{{service_instance_id}}]" + "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": { @@ -46,7 +46,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -54,10 +54,89 @@ }, "overrides": [] }, - "id": 1 + "id": 1, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -77,29 +156,29 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Share [{{service_instance_id}}]" + "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": { @@ -107,7 +186,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -115,10 +194,89 @@ }, "overrides": [] }, - "id": 2 + "id": 2, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -138,15 +296,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Account State Node Share [{{service_instance_id}}]" + "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": { @@ -154,7 +312,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -162,10 +320,89 @@ }, "overrides": [] }, - "id": 3 + "id": 3, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Ledger", + "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": { @@ -185,15 +422,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Get In [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Ledger Share In [{{service_instance_id}}]" + "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": { @@ -201,7 +438,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -209,10 +446,89 @@ }, "overrides": [] }, - "id": 4 + "id": 4, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -232,29 +548,29 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Share [{{service_instance_id}}]" + "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": { @@ -262,7 +578,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -270,10 +586,89 @@ }, "overrides": [] }, - "id": 5 + "id": 5, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -293,15 +688,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Account State Share [{{service_instance_id}}]" + "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": { @@ -309,7 +704,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -317,10 +712,89 @@ }, "overrides": [] }, - "id": 6 + "id": 6, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Ledger", + "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": { @@ -340,15 +814,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Ledger Share [{{service_instance_id}}]" + "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": { @@ -356,7 +830,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -364,10 +838,89 @@ }, "overrides": [] }, - "id": 7 + "id": 7, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -387,29 +940,29 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Transaction Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Transaction Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Share [{{service_instance_id}}]" + "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": { @@ -417,7 +970,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -425,10 +978,89 @@ }, "overrides": [] }, - "id": 8 + "id": 8, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -448,15 +1080,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Account State Share [{{service_instance_id}}]" + "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": { @@ -464,7 +1096,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -472,10 +1104,89 @@ }, "overrides": [] }, - "id": 9 + "id": 9, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Ledger", + "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": { @@ -495,8 +1206,8 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Get [{{service_instance_id}}]" + "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": { @@ -504,7 +1215,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -512,10 +1223,89 @@ }, "overrides": [] }, - "id": 10 + "id": 10, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -535,15 +1325,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Transaction Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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": { @@ -551,7 +1341,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -559,10 +1349,89 @@ }, "overrides": [] }, - "id": 11 + "id": 11, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -582,8 +1451,8 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Get [{{service_instance_id}}]" + "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": { @@ -591,7 +1460,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -599,10 +1468,89 @@ }, "overrides": [] }, - "id": 12 + "id": 12, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Specials", + "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": { @@ -622,22 +1570,22 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "CAS Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Fetch Pack Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Transactions Get [{{service_instance_id}}]" + "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": { @@ -645,7 +1593,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -653,10 +1601,89 @@ }, "overrides": [] }, - "id": 13 + "id": 13, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Specials", + "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": { @@ -676,50 +1703,50 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "CAS Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "CAS Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Fetch Pack Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Fetch Pack Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Transactions Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Aggregate Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Aggregate Share [{{service_instance_id}}]" + "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": { @@ -727,7 +1754,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -735,7 +1762,86 @@ }, "overrides": [] }, - "id": 14 + "id": 14, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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)", @@ -765,8 +1871,8 @@ "datasource": { "type": "prometheus" }, - "expr": "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_.*\"})", - "legendFormat": "{{__name__}} [{{service_instance_id}}]" + "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": { @@ -792,7 +1898,86 @@ }, "overrides": [] }, - "id": 15 + "id": 15, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|__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, diff --git a/docker/telemetry/grafana/dashboards/network-traffic.json b/docker/telemetry/grafana/dashboards/network-traffic.json index bdc5a07b86..7627b0a592 100644 --- a/docker/telemetry/grafana/dashboards/network-traffic.json +++ b/docker/telemetry/grafana/dashboards/network-traffic.json @@ -30,15 +30,15 @@ "datasource": { "type": "prometheus" }, - "expr": "peer_finder_active_inbound_peers{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\"}", - "legendFormat": "Inbound Peers [{{service_instance_id}}]" + "expr": "label_replace(peer_finder_active_inbound_peers{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\"}, \"series\", \"Inbound Peers\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "peer_finder_active_outbound_peers{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\"}", - "legendFormat": "Outbound Peers [{{service_instance_id}}]" + "expr": "label_replace(peer_finder_active_outbound_peers{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\"}, \"series\", \"Outbound Peers\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -46,14 +46,93 @@ "unit": "short", "custom": { "axisLabel": "Peers", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Peer Disconnects", @@ -76,8 +155,8 @@ "datasource": { "type": "prometheus" }, - "expr": "increase(overlay_peer_disconnects{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])", - "legendFormat": "Disconnects [{{service_instance_id}}]" + "expr": "label_replace(increase(overlay_peer_disconnects{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\", \"Disconnects\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -85,14 +164,93 @@ "unit": "short", "custom": { "axisLabel": "Disconnects per interval", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Total Network Bytes", @@ -115,15 +273,15 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(total_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])", - "legendFormat": "Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(total_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\", \"Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(total_bytes_out{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])", - "legendFormat": "Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(total_bytes_out{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\", \"Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -131,14 +289,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Total Network Messages", @@ -161,15 +398,15 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(total_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])", - "legendFormat": "Messages In [{{service_instance_id}}]" + "expr": "label_replace(rate(total_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\", \"Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(total_messages_out{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])", - "legendFormat": "Messages Out [{{service_instance_id}}]" + "expr": "label_replace(rate(total_messages_out{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\", \"Messages Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -177,14 +414,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Transaction Traffic", @@ -207,22 +523,22 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_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])", - "legendFormat": "TX Messages In [{{service_instance_id}}]" + "expr": "label_replace(rate(transactions_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 Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_messages_out{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])", - "legendFormat": "TX Messages Out [{{service_instance_id}}]" + "expr": "label_replace(rate(transactions_messages_out{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 Messages Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_duplicate_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])", - "legendFormat": "TX Duplicate In [{{service_instance_id}}]" + "expr": "label_replace(rate(transactions_duplicate_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 Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -230,14 +546,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Proposal Traffic", @@ -260,29 +655,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_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])", - "legendFormat": "Proposals In [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_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\", \"Proposals In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_messages_out{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])", - "legendFormat": "Proposals Out [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_messages_out{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\", \"Proposals Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_untrusted_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])", - "legendFormat": "Untrusted In [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_untrusted_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\", \"Untrusted In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_duplicate_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])", - "legendFormat": "Duplicate In [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_duplicate_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\", \"Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -290,14 +685,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validation Traffic", @@ -320,29 +794,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(validations_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])", - "legendFormat": "Validations In [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_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\", \"Validations In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_messages_out{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])", - "legendFormat": "Validations Out [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_messages_out{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\", \"Validations Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_untrusted_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])", - "legendFormat": "Untrusted In [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_untrusted_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\", \"Untrusted In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_duplicate_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])", - "legendFormat": "Duplicate In [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_duplicate_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\", \"Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -350,14 +824,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 by Category (Bytes In)", @@ -380,8 +933,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, rate({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_.*\"}[$__rate_interval]))", - "legendFormat": "{{__name__}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, rate({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_.*\"}[$__rate_interval])), \"series\", \"$1\", \"__name__\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -654,7 +1207,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|__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" + } + } + ] }, { "title": "Duplicate Traffic (Wasted Bandwidth)", @@ -677,43 +1309,43 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_duplicate_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])", - "legendFormat": "TX Duplicate In" + "expr": "label_replace(rate(transactions_duplicate_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 Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_duplicate_bytes_out{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])", - "legendFormat": "TX Duplicate Out" + "expr": "label_replace(rate(transactions_duplicate_bytes_out{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 Duplicate Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_duplicate_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])", - "legendFormat": "Proposals Duplicate In" + "expr": "label_replace(rate(proposals_duplicate_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\", \"Proposals Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_duplicate_bytes_out{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])", - "legendFormat": "Proposals Duplicate Out" + "expr": "label_replace(rate(proposals_duplicate_bytes_out{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\", \"Proposals Duplicate Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_duplicate_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])", - "legendFormat": "Validations Duplicate In" + "expr": "label_replace(rate(validations_duplicate_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\", \"Validations Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_duplicate_bytes_out{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])", - "legendFormat": "Validations Duplicate Out" + "expr": "label_replace(rate(validations_duplicate_bytes_out{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\", \"Validations Duplicate Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -721,14 +1353,93 @@ "unit": "Bps", "custom": { "axisLabel": "Throughput", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "All Traffic Categories (Detail)", @@ -751,8 +1462,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(15, rate({__name__=~\".*_bytes_in\", __name__!~\"total_.*\", 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]))", - "legendFormat": "{{__name__}}" + "expr": "label_replace(topk(15, rate({__name__=~\".*_bytes_in\", __name__!~\"total_.*\", 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\", \"$1\", \"__name__\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -760,14 +1471,93 @@ "unit": "Bps", "custom": { "axisLabel": "Throughput", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|__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, diff --git a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json index 1f66d2cdf6..eb6fba98f8 100644 --- a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json +++ b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json @@ -30,43 +30,43 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_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])", - "legendFormat": "Squelch In [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_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\", \"Squelch In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_messages_out{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])", - "legendFormat": "Squelch Out [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_messages_out{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\", \"Squelch Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_suppressed_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])", - "legendFormat": "Suppressed In [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_suppressed_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\", \"Suppressed In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_suppressed_messages_out{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])", - "legendFormat": "Suppressed Out [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_suppressed_messages_out{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\", \"Suppressed Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_ignored_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])", - "legendFormat": "Ignored In [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_ignored_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\", \"Ignored In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_ignored_messages_out{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])", - "legendFormat": "Ignored Out [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_ignored_messages_out{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\", \"Ignored Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -74,14 +74,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Overhead Traffic Breakdown (Bytes)", @@ -104,43 +183,43 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_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])", - "legendFormat": "Base Overhead In [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_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\", \"Base Overhead In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_bytes_out{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])", - "legendFormat": "Base Overhead Out [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_bytes_out{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\", \"Base Overhead Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_cluster_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])", - "legendFormat": "Cluster In [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_cluster_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\", \"Cluster In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_cluster_bytes_out{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])", - "legendFormat": "Cluster Out [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_cluster_bytes_out{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\", \"Cluster Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_manifest_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])", - "legendFormat": "Manifest In [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_manifest_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\", \"Manifest In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_manifest_bytes_out{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])", - "legendFormat": "Manifest Out [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_manifest_bytes_out{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\", \"Manifest Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -148,14 +227,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validator List Traffic", @@ -178,29 +336,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_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])", - "legendFormat": "Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_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\", \"Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_bytes_out{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])", - "legendFormat": "Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_bytes_out{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\", \"Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_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])", - "legendFormat": "Messages In [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_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\", \"Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_messages_out{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])", - "legendFormat": "Messages Out [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_messages_out{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\", \"Messages Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -208,7 +366,7 @@ "unit": "cps", "custom": { "axisLabel": "Count", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -232,7 +390,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Set Get/Share Traffic (Bytes)", @@ -255,29 +492,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(set_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])", - "legendFormat": "Set Get In [{{service_instance_id}}]" + "expr": "label_replace(rate(set_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\", \"Set Get In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(set_get_bytes_out{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])", - "legendFormat": "Set Get Out [{{service_instance_id}}]" + "expr": "label_replace(rate(set_get_bytes_out{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\", \"Set Get Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(set_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])", - "legendFormat": "Set Share In [{{service_instance_id}}]" + "expr": "label_replace(rate(set_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\", \"Set Share In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(set_share_bytes_out{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])", - "legendFormat": "Set Share Out [{{service_instance_id}}]" + "expr": "label_replace(rate(set_share_bytes_out{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\", \"Set Share Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -285,14 +522,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Have/Requested Transactions (Messages)", @@ -315,29 +631,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(have_transactions_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])", - "legendFormat": "Have TX In [{{service_instance_id}}]" + "expr": "label_replace(rate(have_transactions_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\", \"Have TX In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(have_transactions_messages_out{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])", - "legendFormat": "Have TX Out [{{service_instance_id}}]" + "expr": "label_replace(rate(have_transactions_messages_out{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\", \"Have TX Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(requested_transactions_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])", - "legendFormat": "Requested TX In [{{service_instance_id}}]" + "expr": "label_replace(rate(requested_transactions_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\", \"Requested TX In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(requested_transactions_messages_out{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])", - "legendFormat": "Requested TX Out [{{service_instance_id}}]" + "expr": "label_replace(rate(requested_transactions_messages_out{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\", \"Requested TX Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -345,14 +661,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Unknown / Unclassified Traffic", @@ -375,29 +770,29 @@ "datasource": { "type": "prometheus" }, - "expr": "unknown_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\"}", - "legendFormat": "Unknown Bytes In [{{service_instance_id}}]" + "expr": "label_replace(unknown_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\"}, \"series\", \"Unknown Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "unknown_bytes_out{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\"}", - "legendFormat": "Unknown Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(unknown_bytes_out{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\"}, \"series\", \"Unknown Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "unknown_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\"}", - "legendFormat": "Unknown Messages In [{{service_instance_id}}]" + "expr": "label_replace(unknown_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\"}, \"series\", \"Unknown Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "unknown_messages_out{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\"}", - "legendFormat": "Unknown Messages Out [{{service_instance_id}}]" + "expr": "label_replace(unknown_messages_out{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\"}, \"series\", \"Unknown Messages Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -405,7 +800,7 @@ "unit": "short", "custom": { "axisLabel": "Count", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -429,7 +824,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Proof Path Traffic", @@ -452,29 +926,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_request_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])", - "legendFormat": "Request Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_request_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\", \"Request Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_request_bytes_out{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])", - "legendFormat": "Request Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_request_bytes_out{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\", \"Request Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_response_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])", - "legendFormat": "Response Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_response_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\", \"Response Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_response_bytes_out{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])", - "legendFormat": "Response Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_response_bytes_out{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\", \"Response Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -482,14 +956,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Replay Delta Traffic", @@ -512,29 +1065,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_request_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])", - "legendFormat": "Request Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_request_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\", \"Request Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_request_bytes_out{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])", - "legendFormat": "Request Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_request_bytes_out{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\", \"Request Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_response_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])", - "legendFormat": "Response Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_response_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\", \"Response Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_response_bytes_out{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])", - "legendFormat": "Response Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_response_bytes_out{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\", \"Response Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -542,14 +1095,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, From f8bc8dee48c2c4b3caf01c6940dbec6b523ded71 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Tue, 14 Jul 2026 12:18:04 +0100 Subject: [PATCH 2/2] fix(telemetry): conditional filter-dimension legends + 30m span-nulls 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 injects its curated name via label_replace(...,"series",...) and uses the "__auto" legend, which shows only labels that vary across the displayed series. A word-boundary-anchored 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 surface the quantile via the panel title (q$quantile), since {{quantile}} is a dashboard variable, not a series label. Timeseries panels 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) --- .../grafana/dashboards/consensus-health.json | 1217 ++++- .../grafana/dashboards/fee-market.json | 654 ++- .../grafana/dashboards/job-queue.json | 730 ++- .../grafana/dashboards/ledger-data-sync.json | 1427 +++++- .../grafana/dashboards/ledger-operations.json | 611 ++- .../grafana/dashboards/network-traffic.json | 932 +++- .../grafana/dashboards/node-health.json | 3981 ++++++++++++++++- .../dashboards/overlay-traffic-detail.json | 808 +++- .../grafana/dashboards/peer-network.json | 528 ++- .../grafana/dashboards/peer-quality.json | 518 ++- .../grafana/dashboards/rpc-pathfinding.json | 1141 ++++- .../grafana/dashboards/rpc-performance.json | 1428 +++++- .../dashboards/transaction-overview.json | 1254 +++++- .../grafana/dashboards/validator-health.json | 1467 +++++- 14 files changed, 15644 insertions(+), 1052 deletions(-) diff --git a/docker/telemetry/grafana/dashboards/consensus-health.json b/docker/telemetry/grafana/dashboards/consensus-health.json index 7ec4ff21e4..fa3d45e179 100644 --- a/docker/telemetry/grafana/dashboards/consensus-health.json +++ b/docker/telemetry/grafana/dashboards/consensus-health.json @@ -29,8 +29,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.validation.send\"}[$__rate_interval]))", - "legendFormat": "Validations / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.validation.send\"}[$__rate_interval])), \"series\", \"Validations / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -39,7 +39,86 @@ }, "overrides": [] }, - "id": 1 + "id": 1, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Consensus Mode Over Time", @@ -62,8 +141,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (consensus_mode, service_instance_id) (rate(span_calls_total{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.ledger_close\"}[$__rate_interval]))", - "legendFormat": "{{consensus_mode}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (consensus_mode, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.ledger_close\"}[$__rate_interval])), \"series\", \"$1\", \"consensus_mode\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -71,7 +150,7 @@ "unit": "ops", "custom": { "axisLabel": "Events / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -79,7 +158,86 @@ }, "overrides": [] }, - "id": 2 + "id": 2, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|consensus_mode)=\"[^\"]*\",?\\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": "Consensus Proposals Sent Rate", @@ -102,8 +260,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.proposal.send\"}[$__rate_interval]))", - "legendFormat": "Proposals / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.proposal.send\"}[$__rate_interval])), \"series\", \"Proposals / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -111,7 +269,7 @@ "unit": "ops", "custom": { "axisLabel": "Proposals / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -119,7 +277,86 @@ }, "overrides": [] }, - "id": 3 + "id": 3, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Accept vs Close Rate", @@ -142,15 +379,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.accept\"}[$__rate_interval]))", - "legendFormat": "Accepts / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.accept\"}[$__rate_interval])), \"series\", \"Accepts / Sec\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.ledger_close\"}[$__rate_interval]))", - "legendFormat": "Closes / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.ledger_close\"}[$__rate_interval])), \"series\", \"Closes / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -158,7 +395,7 @@ "unit": "ops", "custom": { "axisLabel": "Events / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -166,7 +403,86 @@ }, "overrides": [] }, - "id": 4 + "id": 4, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validation vs Close Rate", @@ -189,15 +505,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.validation.send\"}[$__rate_interval]))", - "legendFormat": "Validations / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.validation.send\"}[$__rate_interval])), \"series\", \"Validations / Sec\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.ledger_close\"}[$__rate_interval]))", - "legendFormat": "Closes / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.ledger_close\"}[$__rate_interval])), \"series\", \"Closes / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -205,7 +521,7 @@ "unit": "ops", "custom": { "axisLabel": "Events / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -213,7 +529,86 @@ }, "overrides": [] }, - "id": 5 + "id": 5, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Time to Reach Consensus (p50/p95)", @@ -258,7 +653,7 @@ "unit": "ms", "custom": { "axisLabel": "Time to Consensus (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -301,7 +696,7 @@ "unit": "ms", "custom": { "axisLabel": "Time to Consensus (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -350,7 +745,7 @@ "unit": "short", "custom": { "axisLabel": "Ledgers in Window", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -394,7 +789,7 @@ "unit": "ms", "custom": { "axisLabel": "Round Time (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -425,8 +820,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"consensus.update_positions\"}[5m])))", - "legendFormat": "P95 Update [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"consensus.update_positions\"}[5m]))), \"series\", \"P95 Update\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -434,7 +829,7 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -442,7 +837,86 @@ }, "overrides": [] }, - "id": 10 + "id": 10, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Close Duration", @@ -465,8 +939,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.ledger_close\"}[5m])))", - "legendFormat": "P95 Close Duration [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.ledger_close\"}[5m]))), \"series\", \"P95 Close Duration\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -474,7 +948,7 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -482,7 +956,86 @@ }, "overrides": [] }, - "id": 11 + "id": 11, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Apply Duration (doAccept)", @@ -499,8 +1052,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.accept.apply\"}[5m])))", - "legendFormat": "P95 Apply Duration [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", consensus_mode=~\"$consensus_mode\", span_name=\"consensus.accept.apply\"}[5m]))), \"series\", \"P95 Apply Duration\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -508,7 +1061,7 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -516,7 +1069,86 @@ }, "overrides": [] }, - "id": 12 + "id": 12, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Consensus Accept Duration Heatmap", @@ -570,8 +1202,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (close_time_correct, service_instance_id) (rate(span_calls_total{span_name=\"consensus.accept.apply\", consensus_mode=~\"$consensus_mode\", 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]))", - "legendFormat": "{{close_time_correct}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (close_time_correct, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{span_name=\"consensus.accept.apply\", consensus_mode=~\"$consensus_mode\", 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\", \"$1\", \"close_time_correct\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -579,7 +1211,7 @@ "unit": "ops", "custom": { "axisLabel": "Rounds / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -592,15 +1224,78 @@ { "id": "renameByRegex", "options": { - "regex": ".*true.*", - "renamePattern": "Agreed" + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|close_time_correct)=\"[^\"]*\",?\\s*/g", + "renamePattern": "" } }, { "id": "renameByRegex", "options": { - "regex": ".*false.*", - "renamePattern": "Disagreed" + "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" } } ] @@ -622,7 +1317,8 @@ "lineInterpolation": "stepAfter", "pointSize": 5, "showPoints": "auto", - "axisLabel": "Count / Milliseconds" + "axisLabel": "Count / Milliseconds", + "spanNulls": 1800000 }, "unit": "short" }, @@ -840,8 +1536,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (consensus_state) (increase(span_calls_total{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\", span_name=\"consensus.accept\", consensus_state!=\"\"}[$__rate_interval]))", - "legendFormat": "{{consensus_state}}" + "expr": "label_replace(sum by (consensus_state, xrpl_branch, xrpl_node_role) (increase(span_calls_total{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\", span_name=\"consensus.accept\", consensus_state!=\"\"}[$__rate_interval])), \"series\", \"$1\", \"consensus_state\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -855,29 +1551,78 @@ { "id": "renameByRegex", "options": { - "regex": "yes", - "renamePattern": "Agreed" + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|consensus_state)=\"[^\"]*\",?\\s*/g", + "renamePattern": "" } }, { "id": "renameByRegex", "options": { - "regex": "moved_on", - "renamePattern": "Moved On (partial)" + "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": "expired", - "renamePattern": "Expired (timeout)" + "regex": "/,\\s*\\]/g", + "renamePattern": "]" } }, { "id": "renameByRegex", "options": { - "regex": "^no$", - "renamePattern": "No Consensus" + "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" } } ] @@ -903,15 +1648,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.accept\", consensus_state=\"moved_on\"}[$__rate_interval]))", - "legendFormat": "moved_on [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.accept\", consensus_state=\"moved_on\"}[$__rate_interval])), \"series\", \"moved_on\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.accept\", consensus_state=\"expired\"}[$__rate_interval]))", - "legendFormat": "expired [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.accept\", consensus_state=\"expired\"}[$__rate_interval])), \"series\", \"expired\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -919,7 +1664,7 @@ "unit": "ops", "custom": { "axisLabel": "Failures / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -927,7 +1672,86 @@ }, "overrides": [] }, - "id": 19 + "id": 19, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Consensus Stall Rate", @@ -950,15 +1774,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.check\", consensus_stalled=\"true\"}[$__rate_interval]))", - "legendFormat": "Stalled [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.check\", consensus_stalled=\"true\"}[$__rate_interval])), \"series\", \"Stalled\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.check\", consensus_stalled=\"false\"}[$__rate_interval]))", - "legendFormat": "Not Stalled [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.check\", consensus_stalled=\"false\"}[$__rate_interval])), \"series\", \"Not Stalled\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -966,7 +1790,7 @@ "unit": "ops", "custom": { "axisLabel": "Checks / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -974,7 +1798,86 @@ }, "overrides": [] }, - "id": 20 + "id": 20, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Consensus Mode-Change Rate by Target Mode", @@ -997,8 +1900,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (mode_new, service_instance_id) (rate(span_calls_total{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\", span_name=\"consensus.mode_change\"}[$__rate_interval]))", - "legendFormat": "{{mode_new}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (mode_new, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"consensus.mode_change\"}[$__rate_interval])), \"series\", \"$1\", \"mode_new\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1006,7 +1909,7 @@ "unit": "ops", "custom": { "axisLabel": "Mode Changes / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -1014,7 +1917,86 @@ }, "overrides": [] }, - "id": 21 + "id": 21, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|mode_new)=\"[^\"]*\",?\\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 History Mismatch Rate by Reason", @@ -1037,8 +2019,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (reason, service_instance_id) (rate(ledger_history_mismatch_total{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]))", - "legendFormat": "{{reason}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (reason, service_instance_id, xrpl_branch, xrpl_node_role) (rate(ledger_history_mismatch_total{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\", \"$1\", \"reason\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1046,7 +2028,7 @@ "unit": "ops", "custom": { "axisLabel": "Mismatches / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -1054,7 +2036,86 @@ }, "overrides": [] }, - "id": 22 + "id": 22, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|reason)=\"[^\"]*\",?\\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, @@ -1184,7 +2245,7 @@ { "name": "node", "label": "Node", - "description": "Filter by rippled node (service.instance.id — e.g. Node-1)", + "description": "Filter by rippled node (service.instance.id \u2014 e.g. Node-1)", "type": "query", "query": "label_values(target_info, service_instance_id)", "datasource": { diff --git a/docker/telemetry/grafana/dashboards/fee-market.json b/docker/telemetry/grafana/dashboards/fee-market.json index c62c408ac9..c4c8015dd8 100644 --- a/docker/telemetry/grafana/dashboards/fee-market.json +++ b/docker/telemetry/grafana/dashboards/fee-market.json @@ -30,15 +30,15 @@ "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_count\"}", - "legendFormat": "Queue Depth [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_count\"}, \"series\", \"Queue Depth\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_max_size\"}", - "legendFormat": "Max Capacity [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_max_size\"}, \"series\", \"Max Capacity\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -48,14 +48,94 @@ "axisLabel": "Transactions", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Transactions Per Ledger", @@ -78,15 +158,15 @@ "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_in_ledger\"}", - "legendFormat": "In Ledger [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_in_ledger\"}, \"series\", \"In Ledger\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_per_ledger\"}", - "legendFormat": "Expected Per Ledger [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_per_ledger\"}, \"series\", \"Expected Per Ledger\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -96,14 +176,94 @@ "axisLabel": "Transactions", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Fee Escalation Levels", @@ -126,29 +286,29 @@ "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_reference_fee_level\"}", - "legendFormat": "Reference Fee Level [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_reference_fee_level\"}, \"series\", \"Reference Fee Level\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_min_processing_fee_level\"}", - "legendFormat": "Min Processing Fee Level [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_min_processing_fee_level\"}, \"series\", \"Min Processing Fee Level\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_med_fee_level\"}", - "legendFormat": "Median Fee Level [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_med_fee_level\"}, \"series\", \"Median Fee Level\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "txq_metrics{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\", metric=\"txq_open_ledger_fee_level\"}", - "legendFormat": "Open Ledger Fee Level [{{service_instance_id}}]" + "expr": "label_replace(txq_metrics{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\", metric=\"txq_open_ledger_fee_level\"}, \"series\", \"Open Ledger Fee Level\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -162,14 +322,94 @@ "scaleDistribution": { "type": "log", "log": 2 - } + }, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Load Factor Breakdown", @@ -192,29 +432,29 @@ "datasource": { "type": "prometheus" }, - "expr": "load_factor_metrics{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\", metric=\"load_factor\"}", - "legendFormat": "Combined Load Factor [{{service_instance_id}}]" + "expr": "label_replace(load_factor_metrics{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\", metric=\"load_factor\"}, \"series\", \"Combined Load Factor\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "load_factor_metrics{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\", metric=\"load_factor_server\"}", - "legendFormat": "Server [{{service_instance_id}}]" + "expr": "label_replace(load_factor_metrics{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\", metric=\"load_factor_server\"}, \"series\", \"Server\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "load_factor_metrics{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\", metric=\"load_factor_fee_escalation\"}", - "legendFormat": "Fee Escalation [{{service_instance_id}}]" + "expr": "label_replace(load_factor_metrics{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\", metric=\"load_factor_fee_escalation\"}, \"series\", \"Fee Escalation\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "load_factor_metrics{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\", metric=\"load_factor_fee_queue\"}", - "legendFormat": "Fee Queue [{{service_instance_id}}]" + "expr": "label_replace(load_factor_metrics{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\", metric=\"load_factor_fee_queue\"}, \"series\", \"Fee Queue\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -224,7 +464,8 @@ "axisLabel": "Multiplier", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 5 + "fillOpacity": 5, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" @@ -247,7 +488,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Load Factor Components", @@ -270,22 +590,22 @@ "datasource": { "type": "prometheus" }, - "expr": "load_factor_metrics{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\", metric=\"load_factor_local\"}", - "legendFormat": "Local [{{service_instance_id}}]" + "expr": "label_replace(load_factor_metrics{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\", metric=\"load_factor_local\"}, \"series\", \"Local\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "load_factor_metrics{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\", metric=\"load_factor_net\"}", - "legendFormat": "Network [{{service_instance_id}}]" + "expr": "label_replace(load_factor_metrics{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\", metric=\"load_factor_net\"}, \"series\", \"Network\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "load_factor_metrics{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\", metric=\"load_factor_cluster\"}", - "legendFormat": "Cluster [{{service_instance_id}}]" + "expr": "label_replace(load_factor_metrics{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\", metric=\"load_factor_cluster\"}, \"series\", \"Cluster\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -295,14 +615,94 @@ "axisLabel": "Multiplier", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 5 + "fillOpacity": 5, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Queue Abandonment Rate (Expired)", @@ -325,8 +725,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(txq_expired_total{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]))", - "legendFormat": "Expired / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(txq_expired_total{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\", \"Expired / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -334,14 +734,93 @@ "unit": "ops", "custom": { "axisLabel": "Expired / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Queue Admission Rejections (Dropped)", @@ -364,8 +843,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (reason, service_instance_id) (rate(txq_dropped_total{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]))", - "legendFormat": "{{reason}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (reason, service_instance_id, xrpl_branch, xrpl_node_role) (rate(txq_dropped_total{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\", \"$1\", \"reason\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -373,14 +852,93 @@ "unit": "ops", "custom": { "axisLabel": "Dropped / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|reason)=\"[^\"]*\",?\\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, diff --git a/docker/telemetry/grafana/dashboards/job-queue.json b/docker/telemetry/grafana/dashboards/job-queue.json index 21c764a4be..3c62ca6232 100644 --- a/docker/telemetry/grafana/dashboards/job-queue.json +++ b/docker/telemetry/grafana/dashboards/job-queue.json @@ -34,20 +34,20 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le) (rate(job_queued_us_bucket{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\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "p99 Wait" + "expr": "label_replace(histogram_quantile(0.99, sum by (le, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{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\", job_type=~\"$job_type\"}[5m]))), \"series\", \"p99 Wait\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "p99 Exec" + "expr": "label_replace(histogram_quantile(0.99, sum by (le, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m]))), \"series\", \"p99 Exec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { "defaults": { - "unit": "µs", + "unit": "\u00b5s", "min": 0, "thresholds": { "mode": "absolute", @@ -69,7 +69,86 @@ }, "overrides": [] }, - "id": 1 + "id": 1, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Job Throughput Rate (Per Second)", @@ -92,22 +171,22 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(job_queued_total{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\", job_type=~\"$job_type\"}[$__rate_interval]))", - "legendFormat": "Queued/s [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_total{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\", job_type=~\"$job_type\"}[$__rate_interval])), \"series\", \"Queued/s\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(job_started_total{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\", job_type=~\"$job_type\"}[$__rate_interval]))", - "legendFormat": "Started/s [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_started_total{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\", job_type=~\"$job_type\"}[$__rate_interval])), \"series\", \"Started/s\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(job_finished_total{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\", job_type=~\"$job_type\"}[$__rate_interval]))", - "legendFormat": "Finished/s [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_finished_total{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\", job_type=~\"$job_type\"}[$__rate_interval])), \"series\", \"Finished/s\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -118,7 +197,7 @@ "lineWidth": 2, "fillOpacity": 10, "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -129,7 +208,86 @@ }, "overrides": [] }, - "id": 2 + "id": 2, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Per-Job-Type Queued Rate", @@ -157,8 +315,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, rate(job_queued_total{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\", job_type=~\"$job_type\"}[$__rate_interval]))", - "legendFormat": "{{job_type}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, rate(job_queued_total{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\", job_type=~\"$job_type\"}[$__rate_interval])), \"series\", \"$1\", \"job_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -169,7 +327,7 @@ "lineWidth": 1, "fillOpacity": 5, "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -180,7 +338,86 @@ }, "overrides": [] }, - "id": 3 + "id": 3, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|job_type)=\"[^\"]*\",?\\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": "Per-Job-Type Finish Rate", @@ -208,8 +445,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, rate(job_finished_total{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\", job_type=~\"$job_type\"}[$__rate_interval]))", - "legendFormat": "{{job_type}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, rate(job_finished_total{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\", job_type=~\"$job_type\"}[$__rate_interval])), \"series\", \"$1\", \"job_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -220,7 +457,7 @@ "lineWidth": 1, "fillOpacity": 5, "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -231,7 +468,86 @@ }, "overrides": [] }, - "id": 4 + "id": 4, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|job_type)=\"[^\"]*\",?\\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": "Job Queue Wait Time", @@ -254,26 +570,26 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.75, sum by (le, service_instance_id) (rate(job_queued_us_bucket{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\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "p75 Wait [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.75, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{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\", job_type=~\"$job_type\"}[5m]))), \"series\", \"p75 Wait\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le, service_instance_id) (rate(job_queued_us_bucket{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\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "p99 Wait [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.99, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{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\", job_type=~\"$job_type\"}[5m]))), \"series\", \"p99 Wait\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { "defaults": { - "unit": "µs", + "unit": "\u00b5s", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 5, - "axisLabel": "Duration (μs)", - "spanNulls": true, + "axisLabel": "Duration (\u03bcs)", + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -284,7 +600,86 @@ }, "overrides": [] }, - "id": 5 + "id": 5, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Job Execution Time", @@ -307,26 +702,26 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.75, sum by (le, service_instance_id) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "p75 Exec [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.75, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m]))), \"series\", \"p75 Exec\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le, service_instance_id) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m])))", - "legendFormat": "p99 Exec [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.99, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m]))), \"series\", \"p99 Exec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { "defaults": { - "unit": "µs", + "unit": "\u00b5s", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 5, - "axisLabel": "Duration (μs)", - "spanNulls": true, + "axisLabel": "Duration (\u03bcs)", + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -337,7 +732,86 @@ }, "overrides": [] }, - "id": 6 + "id": 6, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Per-Job-Type Execution Time (p99)", @@ -365,19 +839,19 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, histogram_quantile(0.99, sum by (le, job_type, service_instance_id) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m]))))", - "legendFormat": "{{job_type}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, histogram_quantile(0.99, sum by (le, job_type, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{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\", job_type=~\"$job_type\"}[5m])))), \"series\", \"$1\", \"job_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { "defaults": { - "unit": "µs", + "unit": "\u00b5s", "custom": { "drawStyle": "line", "lineWidth": 1, "fillOpacity": 5, - "axisLabel": "Duration (μs)", - "spanNulls": true, + "axisLabel": "Duration (\u03bcs)", + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -388,11 +862,90 @@ }, "overrides": [] }, - "id": 7 + "id": 7, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|job_type)=\"[^\"]*\",?\\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": "Transaction Overflow Rate", - "description": "###### What this is:\n*Rate at which transaction jobs are shed when the queue's transaction limit is exceeded.*\n\n###### How it's computed:\n*Per-second rate of the overflow counter over the dashboard's rate interval, scaled to per minute. The counter is observed from the overlay's cumulative overflow tally.*\n\n###### Reading it:\n*Near zero is healthy; a rising rate means the job queue is shedding transaction work under load.*\n\n###### Healthy range:\n*0 overflows per minute.*\n\n###### Watch for:\n*Any sustained non-zero rate — the node is dropping transaction jobs because the queue is saturated.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`registerParityCounters (observed from Overlay::getJqTransOverflow)`", + "description": "###### What this is:\n*Rate at which transaction jobs are shed when the queue's transaction limit is exceeded.*\n\n###### How it's computed:\n*Per-second rate of the overflow counter over the dashboard's rate interval, scaled to per minute. The counter is observed from the overlay's cumulative overflow tally.*\n\n###### Reading it:\n*Near zero is healthy; a rising rate means the job queue is shedding transaction work under load.*\n\n###### Healthy range:\n*0 overflows per minute.*\n\n###### Watch for:\n*Any sustained non-zero rate \u2014 the node is dropping transaction jobs because the queue is saturated.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`registerParityCounters (observed from Overlay::getJqTransOverflow)`", "type": "timeseries", "gridPos": { "h": 8, @@ -411,8 +964,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(jq_trans_overflow_total{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]) * 60", - "legendFormat": "Overflows/min [{{service_instance_id}}]" + "expr": "label_replace(rate(jq_trans_overflow_total{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]) * 60, \"series\", \"Overflows/min\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -439,7 +992,7 @@ "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -450,7 +1003,86 @@ }, "overrides": [] }, - "id": 8 + "id": 8, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, diff --git a/docker/telemetry/grafana/dashboards/ledger-data-sync.json b/docker/telemetry/grafana/dashboards/ledger-data-sync.json index 11868f5e15..31658ba322 100644 --- a/docker/telemetry/grafana/dashboards/ledger-data-sync.json +++ b/docker/telemetry/grafana/dashboards/ledger-data-sync.json @@ -10,7 +10,7 @@ "links": [], "panels": [ { - "title": "Ledger Data — Ledger", + "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": { @@ -30,15 +30,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Data Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Ledger Data Share [{{service_instance_id}}]" + "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": { @@ -46,7 +46,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -54,10 +54,89 @@ }, "overrides": [] }, - "id": 1 + "id": 1, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -77,29 +156,29 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Share [{{service_instance_id}}]" + "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": { @@ -107,7 +186,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -115,10 +194,89 @@ }, "overrides": [] }, - "id": 2 + "id": 2, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -138,15 +296,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Account State Node Share [{{service_instance_id}}]" + "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": { @@ -154,7 +312,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -162,10 +320,89 @@ }, "overrides": [] }, - "id": 3 + "id": 3, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Ledger", + "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": { @@ -185,15 +422,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Get In [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Ledger Share In [{{service_instance_id}}]" + "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": { @@ -201,7 +438,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -209,10 +446,89 @@ }, "overrides": [] }, - "id": 4 + "id": 4, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -232,29 +548,29 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Set Candidate Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Share [{{service_instance_id}}]" + "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": { @@ -262,7 +578,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -270,10 +586,89 @@ }, "overrides": [] }, - "id": 5 + "id": 5, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -293,15 +688,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Account State Share [{{service_instance_id}}]" + "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": { @@ -309,7 +704,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -317,10 +712,89 @@ }, "overrides": [] }, - "id": 6 + "id": 6, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Ledger", + "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": { @@ -340,15 +814,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Ledger Share [{{service_instance_id}}]" + "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": { @@ -356,7 +830,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -364,10 +838,89 @@ }, "overrides": [] }, - "id": 7 + "id": 7, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -387,29 +940,29 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Transaction Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Transaction Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Share [{{service_instance_id}}]" + "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": { @@ -417,7 +970,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -425,10 +978,89 @@ }, "overrides": [] }, - "id": 8 + "id": 8, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -448,15 +1080,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Account State Share [{{service_instance_id}}]" + "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": { @@ -464,7 +1096,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -472,10 +1104,89 @@ }, "overrides": [] }, - "id": 9 + "id": 9, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Ledger", + "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": { @@ -495,8 +1206,8 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Ledger Get [{{service_instance_id}}]" + "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": { @@ -504,7 +1215,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -512,10 +1223,89 @@ }, "overrides": [] }, - "id": 10 + "id": 10, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Transaction", + "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": { @@ -535,15 +1325,15 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Transaction Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "TX Node Get [{{service_instance_id}}]" + "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": { @@ -551,7 +1341,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -559,10 +1349,89 @@ }, "overrides": [] }, - "id": 11 + "id": 11, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Account State", + "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": { @@ -582,8 +1451,8 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "Account State Get [{{service_instance_id}}]" + "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": { @@ -591,7 +1460,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -599,10 +1468,89 @@ }, "overrides": [] }, - "id": 12 + "id": 12, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Specials", + "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": { @@ -622,22 +1570,22 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "CAS Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Fetch Pack Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Transactions Get [{{service_instance_id}}]" + "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": { @@ -645,7 +1593,7 @@ "unit": "cps", "custom": { "axisLabel": "Messages In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -653,10 +1601,89 @@ }, "overrides": [] }, - "id": 13 + "id": 13, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 — Specials", + "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": { @@ -676,50 +1703,50 @@ "datasource": { "type": "prometheus" }, - "expr": "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])", - "legendFormat": "CAS Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "CAS Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Fetch Pack Share [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Fetch Pack Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Transactions Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Aggregate Get [{{service_instance_id}}]" + "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" }, - "expr": "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])", - "legendFormat": "Aggregate Share [{{service_instance_id}}]" + "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": { @@ -727,7 +1754,7 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes In", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -735,7 +1762,86 @@ }, "overrides": [] }, - "id": 14 + "id": 14, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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)", @@ -765,8 +1871,8 @@ "datasource": { "type": "prometheus" }, - "expr": "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_.*\"})", - "legendFormat": "{{__name__}} [{{service_instance_id}}]" + "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": { @@ -792,7 +1898,86 @@ }, "overrides": [] }, - "id": 15 + "id": 15, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|__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, diff --git a/docker/telemetry/grafana/dashboards/ledger-operations.json b/docker/telemetry/grafana/dashboards/ledger-operations.json index 2231eb2096..c243337c7d 100644 --- a/docker/telemetry/grafana/dashboards/ledger-operations.json +++ b/docker/telemetry/grafana/dashboards/ledger-operations.json @@ -29,8 +29,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"ledger.build\"}[$__rate_interval]))", - "legendFormat": "Builds / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"ledger.build\"}[$__rate_interval])), \"series\", \"Builds / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -38,7 +38,86 @@ "unit": "ops" }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Build Duration", @@ -61,8 +140,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"ledger.build\"}[5m])))", - "legendFormat": "P95 Build Duration [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"ledger.build\"}[5m]))), \"series\", \"P95 Build Duration\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -70,14 +149,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Validation Rate", @@ -100,8 +258,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"ledger.validate\"}[$__rate_interval]))", - "legendFormat": "Validations / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"ledger.validate\"}[$__rate_interval])), \"series\", \"Validations / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -109,7 +267,86 @@ "unit": "ops" }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Build Duration Heatmap", @@ -168,8 +405,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.apply\"}[5m])))", - "legendFormat": "P95 tx.apply [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.apply\"}[5m]))), \"series\", \"P95 tx.apply\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -177,14 +414,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Transaction Apply Rate", @@ -207,8 +523,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"tx.apply\"}[$__rate_interval]))", - "legendFormat": "tx.apply / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"tx.apply\"}[$__rate_interval])), \"series\", \"tx.apply / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -216,14 +532,93 @@ "unit": "ops", "custom": { "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Store Rate", @@ -246,8 +641,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"ledger.store\"}[$__rate_interval]))", - "legendFormat": "Stores / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"ledger.store\"}[$__rate_interval])), \"series\", \"Stores / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -255,11 +650,90 @@ "unit": "ops" }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Build vs Close Duration", - "description": "###### What this is:\n*Ledger build time compared with the total consensus ledger-close time, both at the 95th percentile.*\n\n###### How it's computed:\n*Two 95th-percentile duration series over 5 minutes: ledger construction and the full consensus close, per node.*\n\n###### Reading it:\n*Build should sit below close; the gap is consensus overhead outside construction.*\n\n###### Healthy range:\n*Close a bit above build; both workload-dependent and under the round interval.*\n\n###### Watch for:\n*A widening gap (consensus-pipeline overhead growing) or build time approaching close time.*\n\n###### Source:\n[BuildLedger.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/app/ledger/detail/BuildLedger.cpp) · [RCLConsensus.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/app/consensus/RCLConsensus.cpp)\n\n###### Function:\n`buildLedgerImpl ; RCLConsensus::Adaptor::onClose`", + "description": "###### What this is:\n*Ledger build time compared with the total consensus ledger-close time, both at the 95th percentile.*\n\n###### How it's computed:\n*Two 95th-percentile duration series over 5 minutes: ledger construction and the full consensus close, per node.*\n\n###### Reading it:\n*Build should sit below close; the gap is consensus overhead outside construction.*\n\n###### Healthy range:\n*Close a bit above build; both workload-dependent and under the round interval.*\n\n###### Watch for:\n*A widening gap (consensus-pipeline overhead growing) or build time approaching close time.*\n\n###### Source:\n[BuildLedger.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/app/ledger/detail/BuildLedger.cpp) \u00b7 [RCLConsensus.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/app/consensus/RCLConsensus.cpp)\n\n###### Function:\n`buildLedgerImpl ; RCLConsensus::Adaptor::onClose`", "type": "timeseries", "gridPos": { "h": 8, @@ -278,15 +752,15 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"ledger.build\"}[5m])))", - "legendFormat": "P95 ledger.build [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"ledger.build\"}[5m]))), \"series\", \"P95 ledger.build\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"consensus.ledger_close\"}[5m])))", - "legendFormat": "P95 consensus.ledger_close [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"consensus.ledger_close\"}[5m]))), \"series\", \"P95 consensus.ledger_close\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -294,14 +768,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, @@ -431,7 +984,7 @@ { "name": "node", "label": "Node", - "description": "Filter by rippled node (service.instance.id — e.g. Node-1)", + "description": "Filter by rippled node (service.instance.id \u2014 e.g. Node-1)", "type": "query", "query": "label_values(target_info, service_instance_id)", "datasource": { diff --git a/docker/telemetry/grafana/dashboards/network-traffic.json b/docker/telemetry/grafana/dashboards/network-traffic.json index bdc5a07b86..7627b0a592 100644 --- a/docker/telemetry/grafana/dashboards/network-traffic.json +++ b/docker/telemetry/grafana/dashboards/network-traffic.json @@ -30,15 +30,15 @@ "datasource": { "type": "prometheus" }, - "expr": "peer_finder_active_inbound_peers{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\"}", - "legendFormat": "Inbound Peers [{{service_instance_id}}]" + "expr": "label_replace(peer_finder_active_inbound_peers{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\"}, \"series\", \"Inbound Peers\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "peer_finder_active_outbound_peers{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\"}", - "legendFormat": "Outbound Peers [{{service_instance_id}}]" + "expr": "label_replace(peer_finder_active_outbound_peers{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\"}, \"series\", \"Outbound Peers\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -46,14 +46,93 @@ "unit": "short", "custom": { "axisLabel": "Peers", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Peer Disconnects", @@ -76,8 +155,8 @@ "datasource": { "type": "prometheus" }, - "expr": "increase(overlay_peer_disconnects{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])", - "legendFormat": "Disconnects [{{service_instance_id}}]" + "expr": "label_replace(increase(overlay_peer_disconnects{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\", \"Disconnects\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -85,14 +164,93 @@ "unit": "short", "custom": { "axisLabel": "Disconnects per interval", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Total Network Bytes", @@ -115,15 +273,15 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(total_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])", - "legendFormat": "Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(total_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\", \"Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(total_bytes_out{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])", - "legendFormat": "Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(total_bytes_out{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\", \"Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -131,14 +289,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Total Network Messages", @@ -161,15 +398,15 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(total_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])", - "legendFormat": "Messages In [{{service_instance_id}}]" + "expr": "label_replace(rate(total_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\", \"Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(total_messages_out{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])", - "legendFormat": "Messages Out [{{service_instance_id}}]" + "expr": "label_replace(rate(total_messages_out{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\", \"Messages Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -177,14 +414,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Transaction Traffic", @@ -207,22 +523,22 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_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])", - "legendFormat": "TX Messages In [{{service_instance_id}}]" + "expr": "label_replace(rate(transactions_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 Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_messages_out{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])", - "legendFormat": "TX Messages Out [{{service_instance_id}}]" + "expr": "label_replace(rate(transactions_messages_out{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 Messages Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_duplicate_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])", - "legendFormat": "TX Duplicate In [{{service_instance_id}}]" + "expr": "label_replace(rate(transactions_duplicate_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 Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -230,14 +546,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Proposal Traffic", @@ -260,29 +655,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_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])", - "legendFormat": "Proposals In [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_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\", \"Proposals In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_messages_out{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])", - "legendFormat": "Proposals Out [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_messages_out{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\", \"Proposals Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_untrusted_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])", - "legendFormat": "Untrusted In [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_untrusted_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\", \"Untrusted In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_duplicate_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])", - "legendFormat": "Duplicate In [{{service_instance_id}}]" + "expr": "label_replace(rate(proposals_duplicate_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\", \"Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -290,14 +685,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validation Traffic", @@ -320,29 +794,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(validations_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])", - "legendFormat": "Validations In [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_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\", \"Validations In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_messages_out{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])", - "legendFormat": "Validations Out [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_messages_out{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\", \"Validations Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_untrusted_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])", - "legendFormat": "Untrusted In [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_untrusted_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\", \"Untrusted In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_duplicate_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])", - "legendFormat": "Duplicate In [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_duplicate_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\", \"Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -350,14 +824,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 by Category (Bytes In)", @@ -380,8 +933,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, rate({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_.*\"}[$__rate_interval]))", - "legendFormat": "{{__name__}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, rate({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_.*\"}[$__rate_interval])), \"series\", \"$1\", \"__name__\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -654,7 +1207,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|__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" + } + } + ] }, { "title": "Duplicate Traffic (Wasted Bandwidth)", @@ -677,43 +1309,43 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_duplicate_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])", - "legendFormat": "TX Duplicate In" + "expr": "label_replace(rate(transactions_duplicate_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 Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(transactions_duplicate_bytes_out{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])", - "legendFormat": "TX Duplicate Out" + "expr": "label_replace(rate(transactions_duplicate_bytes_out{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 Duplicate Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_duplicate_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])", - "legendFormat": "Proposals Duplicate In" + "expr": "label_replace(rate(proposals_duplicate_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\", \"Proposals Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proposals_duplicate_bytes_out{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])", - "legendFormat": "Proposals Duplicate Out" + "expr": "label_replace(rate(proposals_duplicate_bytes_out{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\", \"Proposals Duplicate Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_duplicate_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])", - "legendFormat": "Validations Duplicate In" + "expr": "label_replace(rate(validations_duplicate_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\", \"Validations Duplicate In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validations_duplicate_bytes_out{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])", - "legendFormat": "Validations Duplicate Out" + "expr": "label_replace(rate(validations_duplicate_bytes_out{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\", \"Validations Duplicate Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -721,14 +1353,93 @@ "unit": "Bps", "custom": { "axisLabel": "Throughput", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "All Traffic Categories (Detail)", @@ -751,8 +1462,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(15, rate({__name__=~\".*_bytes_in\", __name__!~\"total_.*\", 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]))", - "legendFormat": "{{__name__}}" + "expr": "label_replace(topk(15, rate({__name__=~\".*_bytes_in\", __name__!~\"total_.*\", 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\", \"$1\", \"__name__\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -760,14 +1471,93 @@ "unit": "Bps", "custom": { "axisLabel": "Throughput", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|__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, diff --git a/docker/telemetry/grafana/dashboards/node-health.json b/docker/telemetry/grafana/dashboards/node-health.json index 869bd1b4c4..df4fd807d3 100644 --- a/docker/telemetry/grafana/dashboards/node-health.json +++ b/docker/telemetry/grafana/dashboards/node-health.json @@ -30,8 +30,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledgermaster_validated_ledger_age{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\"}", - "legendFormat": "Validated Age [{{service_instance_id}}]" + "expr": "label_replace(ledgermaster_validated_ledger_age{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\"}, \"series\", \"Validated Age\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -56,7 +56,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Published Ledger Age", @@ -79,8 +158,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledgermaster_published_ledger_age{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\"}", - "legendFormat": "Published Age [{{service_instance_id}}]" + "expr": "label_replace(ledgermaster_published_ledger_age{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\"}, \"series\", \"Published Age\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -105,7 +184,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Operating Mode (Time Share)", @@ -128,36 +286,36 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(state_accounting_full_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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]))", - "legendFormat": "Full [{{service_instance_id}}]" + "expr": "label_replace(rate(state_accounting_full_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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\", \"Full\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(state_accounting_tracking_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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]))", - "legendFormat": "Tracking [{{service_instance_id}}]" + "expr": "label_replace(rate(state_accounting_tracking_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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\", \"Tracking\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(state_accounting_syncing_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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]))", - "legendFormat": "Syncing [{{service_instance_id}}]" + "expr": "label_replace(rate(state_accounting_syncing_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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\", \"Syncing\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(state_accounting_connected_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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]))", - "legendFormat": "Connected [{{service_instance_id}}]" + "expr": "label_replace(rate(state_accounting_connected_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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\", \"Connected\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(state_accounting_disconnected_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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]))", - "legendFormat": "Disconnected [{{service_instance_id}}]" + "expr": "label_replace(rate(state_accounting_disconnected_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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\", \"Disconnected\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -167,14 +325,93 @@ "max": 1, "custom": { "axisLabel": "Time Share", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Operating Mode Transitions", @@ -197,36 +434,36 @@ "datasource": { "type": "prometheus" }, - "expr": "state_accounting_full_transitions{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\"}", - "legendFormat": "Full [{{service_instance_id}}]" + "expr": "label_replace(state_accounting_full_transitions{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\"}, \"series\", \"Full\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "state_accounting_tracking_transitions{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\"}", - "legendFormat": "Tracking [{{service_instance_id}}]" + "expr": "label_replace(state_accounting_tracking_transitions{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\"}, \"series\", \"Tracking\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "state_accounting_syncing_transitions{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\"}", - "legendFormat": "Syncing [{{service_instance_id}}]" + "expr": "label_replace(state_accounting_syncing_transitions{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\"}, \"series\", \"Syncing\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "state_accounting_connected_transitions{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\"}", - "legendFormat": "Connected [{{service_instance_id}}]" + "expr": "label_replace(state_accounting_connected_transitions{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\"}, \"series\", \"Connected\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "state_accounting_disconnected_transitions{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\"}", - "legendFormat": "Disconnected [{{service_instance_id}}]" + "expr": "label_replace(state_accounting_disconnected_transitions{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\"}, \"series\", \"Disconnected\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -234,14 +471,93 @@ "unit": "short", "custom": { "axisLabel": "Transitions", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "I/O Latency", @@ -264,8 +580,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(ios_latency_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P95 I/O Latency [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(ios_latency_milliseconds_bucket{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\"}[5m]))), \"series\", \"P95 I/O Latency\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -273,14 +589,93 @@ "unit": "ms", "custom": { "axisLabel": "Latency (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Job Queue Depth", @@ -303,8 +698,8 @@ "datasource": { "type": "prometheus" }, - "expr": "job_count{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\"}", - "legendFormat": "Job Queue Depth [{{service_instance_id}}]" + "expr": "label_replace(job_count{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\"}, \"series\", \"Job Queue Depth\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -312,14 +707,93 @@ "unit": "short", "custom": { "axisLabel": "Jobs", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Fetch Rate", @@ -342,8 +816,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(ledger_fetches_total{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])", - "legendFormat": "Fetches / Sec [{{service_instance_id}}]" + "expr": "label_replace(rate(ledger_fetches_total{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\", \"Fetches / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -352,7 +826,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 History Mismatches", @@ -375,8 +928,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(ledger_history_mismatch_total{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])", - "legendFormat": "Mismatches / Sec [{{service_instance_id}}]" + "expr": "label_replace(rate(ledger_history_mismatch_total{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\", \"Mismatches / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -397,7 +950,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "NodeStore I/O", @@ -432,24 +1064,24 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(nodestore_state{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\", metric=\"node_reads_total\"}[$__rate_interval])", - "legendFormat": "Reads Total [{{service_instance_id}}]", + "expr": "label_replace(rate(nodestore_state{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\", metric=\"node_reads_total\"}[$__rate_interval]), \"series\", \"Reads Total\", \"\", \"\")", + "legendFormat": "__auto", "refId": "A" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(nodestore_state{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\", metric=\"node_reads_hit\"}[$__rate_interval])", - "legendFormat": "Reads Hit (cache) [{{service_instance_id}}]", + "expr": "label_replace(rate(nodestore_state{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\", metric=\"node_reads_hit\"}[$__rate_interval]), \"series\", \"Reads Hit (cache)\", \"\", \"\")", + "legendFormat": "__auto", "refId": "B" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(nodestore_state{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\", metric=\"node_writes\"}[$__rate_interval])", - "legendFormat": "Writes Total [{{service_instance_id}}]", + "expr": "label_replace(rate(nodestore_state{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\", metric=\"node_writes\"}[$__rate_interval]), \"series\", \"Writes Total\", \"\", \"\")", + "legendFormat": "__auto", "refId": "C" } ], @@ -460,14 +1092,94 @@ "axisLabel": "Operations / Sec", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "NodeStore Cache Hit Ratio", @@ -491,8 +1203,8 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "rate(nodestore_state{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\", metric=\"node_reads_hit\"}[$__rate_interval]) / ignoring(metric) rate(nodestore_state{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\", metric=\"node_reads_total\"}[$__rate_interval])", - "legendFormat": "Cache Hit Ratio [{{service_instance_id}}]", + "expr": "label_replace(rate(nodestore_state{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\", metric=\"node_reads_hit\"}[$__rate_interval]) / ignoring(metric) rate(nodestore_state{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\", metric=\"node_reads_total\"}[$__rate_interval]), \"series\", \"Cache Hit Ratio\", \"\", \"\")", + "legendFormat": "__auto", "refId": "A" } ], @@ -503,14 +1215,94 @@ "axisLabel": "Operations / Sec", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "NodeStore Write Load & Read Queue", @@ -533,15 +1325,15 @@ "datasource": { "type": "prometheus" }, - "expr": "nodestore_state{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\", metric=\"write_load\"}", - "legendFormat": "Write Load [{{service_instance_id}}]" + "expr": "label_replace(nodestore_state{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\", metric=\"write_load\"}, \"series\", \"Write Load\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "nodestore_state{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\", metric=\"read_queue\"}", - "legendFormat": "Read Queue [{{service_instance_id}}]" + "expr": "label_replace(nodestore_state{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\", metric=\"read_queue\"}, \"series\", \"Read Queue\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -551,7 +1343,8 @@ "axisLabel": "Count", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" @@ -574,7 +1367,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "NodeStore Bytes Read/Written", @@ -597,15 +1469,15 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(nodestore_state{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\", metric=\"node_read_bytes\"}[$__rate_interval])", - "legendFormat": "Bytes Read [{{service_instance_id}}]" + "expr": "label_replace(rate(nodestore_state{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\", metric=\"node_read_bytes\"}[$__rate_interval]), \"series\", \"Bytes Read\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(nodestore_state{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\", metric=\"node_written_bytes\"}[$__rate_interval])", - "legendFormat": "Bytes Written [{{service_instance_id}}]" + "expr": "label_replace(rate(nodestore_state{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\", metric=\"node_written_bytes\"}[$__rate_interval]), \"series\", \"Bytes Written\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -615,14 +1487,94 @@ "axisLabel": "Throughput", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "NodeStore Read Threads", @@ -645,24 +1597,24 @@ "datasource": { "type": "prometheus" }, - "expr": "nodestore_state{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\", metric=\"read_threads_running\"}", - "legendFormat": "Read Threads Running [{{service_instance_id}}]", + "expr": "label_replace(nodestore_state{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\", metric=\"read_threads_running\"}, \"series\", \"Read Threads Running\", \"\", \"\")", + "legendFormat": "__auto", "refId": "A" }, { "datasource": { "type": "prometheus" }, - "expr": "nodestore_state{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\", metric=\"read_threads_total\"}", - "legendFormat": "Read Threads Total [{{service_instance_id}}]", + "expr": "label_replace(nodestore_state{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\", metric=\"read_threads_total\"}, \"series\", \"Read Threads Total\", \"\", \"\")", + "legendFormat": "__auto", "refId": "B" }, { "datasource": { "type": "prometheus" }, - "expr": "nodestore_state{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\", metric=\"read_request_bundle\"}", - "legendFormat": "Read Request Bundle [{{service_instance_id}}]", + "expr": "label_replace(nodestore_state{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\", metric=\"read_request_bundle\"}, \"series\", \"Read Request Bundle\", \"\", \"\")", + "legendFormat": "__auto", "refId": "C" } ], @@ -673,14 +1625,94 @@ "axisLabel": "Threads / Bundle", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "NodeStore Read Busy Ratio", @@ -703,8 +1735,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(nodestore_state{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\", metric=\"node_reads_duration_us\"}[$__rate_interval]) / 1e6", - "legendFormat": "Read Busy Ratio [{{service_instance_id}}]", + "expr": "label_replace(rate(nodestore_state{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\", metric=\"node_reads_duration_us\"}[$__rate_interval]) / 1e6, \"series\", \"Read Busy Ratio\", \"\", \"\")", + "legendFormat": "__auto", "refId": "A" } ], @@ -715,14 +1747,94 @@ "axisLabel": "Threads / Bundle", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Cache Hit Rates", @@ -757,22 +1869,22 @@ "datasource": { "type": "prometheus" }, - "expr": "cache_metrics{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\", metric=\"SLE_hit_rate\"}", - "legendFormat": "SLE Hit Rate [{{service_instance_id}}]" + "expr": "label_replace(cache_metrics{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\", metric=\"SLE_hit_rate\"}, \"series\", \"SLE Hit Rate\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "cache_metrics{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\", metric=\"ledger_hit_rate\"}", - "legendFormat": "Ledger Hit Rate [{{service_instance_id}}]" + "expr": "label_replace(cache_metrics{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\", metric=\"ledger_hit_rate\"}, \"series\", \"Ledger Hit Rate\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "cache_metrics{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\", metric=\"AL_hit_rate\"}", - "legendFormat": "AcceptedLedger Hit Rate [{{service_instance_id}}]" + "expr": "label_replace(cache_metrics{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\", metric=\"AL_hit_rate\"}, \"series\", \"AcceptedLedger Hit Rate\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -785,7 +1897,7 @@ "lineWidth": 2, "fillOpacity": 10, "axisLabel": "Hit Rate", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -795,7 +1907,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Cache Sizes", @@ -818,29 +2009,29 @@ "datasource": { "type": "prometheus" }, - "expr": "cache_metrics{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\", metric=\"treenode_cache_size\"}", - "legendFormat": "TreeNode Cache [{{service_instance_id}}]" + "expr": "label_replace(cache_metrics{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\", metric=\"treenode_cache_size\"}, \"series\", \"TreeNode Cache\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "cache_metrics{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\", metric=\"treenode_track_size\"}", - "legendFormat": "TreeNode Track [{{service_instance_id}}]" + "expr": "label_replace(cache_metrics{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\", metric=\"treenode_track_size\"}, \"series\", \"TreeNode Track\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "cache_metrics{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\", metric=\"fullbelow_size\"}", - "legendFormat": "FullBelow [{{service_instance_id}}]" + "expr": "label_replace(cache_metrics{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\", metric=\"fullbelow_size\"}, \"series\", \"FullBelow\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "cache_metrics{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\", metric=\"AL_size\"}", - "legendFormat": "AcceptedLedger Size [{{service_instance_id}}]" + "expr": "label_replace(cache_metrics{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\", metric=\"AL_size\"}, \"series\", \"AcceptedLedger Size\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -850,14 +2041,94 @@ "axisLabel": "Entries", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Object Instance Counts", @@ -897,8 +2168,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(15, object_count{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\", type=~\"$type\"})", - "legendFormat": "{{type}} [{{service_instance_id}}]" + "expr": "label_replace(topk(15, object_count{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\", type=~\"$type\"}), \"series\", \"$1\", \"type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -908,14 +2179,94 @@ "axisLabel": "Instances", "drawStyle": "line", "lineWidth": 1, - "fillOpacity": 5 + "fillOpacity": 5, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|type)=\"[^\"]*\",?\\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": "Server Info", @@ -950,8 +2301,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"server_state\"}", - "legendFormat": "State [{{service_instance_id}}]" + "expr": "label_replace(server_info{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\", metric=\"server_state\"}, \"series\", \"State\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1007,7 +2358,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Uptime", @@ -1030,8 +2460,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"uptime\"}", - "legendFormat": "Uptime [{{service_instance_id}}]" + "expr": "label_replace(server_info{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\", metric=\"uptime\"}, \"series\", \"Uptime\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1040,7 +2470,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Peer Count", @@ -1063,8 +2572,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"peers\"}", - "legendFormat": "Peers [{{service_instance_id}}]" + "expr": "label_replace(server_info{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\", metric=\"peers\"}, \"series\", \"Peers\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1073,7 +2582,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validated Ledger Seq", @@ -1096,8 +2684,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"validated_ledger_seq\"}", - "legendFormat": "Seq [{{service_instance_id}}]" + "expr": "label_replace(server_info{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\", metric=\"validated_ledger_seq\"}, \"series\", \"Seq\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1106,7 +2694,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Last Close \u2014 Proposers", @@ -1129,8 +2796,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"last_close_proposers\"}", - "legendFormat": "Proposers [{{service_instance_id}}]", + "expr": "label_replace(server_info{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\", metric=\"last_close_proposers\"}, \"series\", \"Proposers\", \"\", \"\")", + "legendFormat": "__auto", "refId": "A" } ], @@ -1141,14 +2808,94 @@ "axisLabel": "Proposers", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Last Close \u2014 Converge Time", @@ -1171,8 +2918,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"last_close_converge_time_ms\"}", - "legendFormat": "Converge Time ms [{{service_instance_id}}]", + "expr": "label_replace(server_info{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\", metric=\"last_close_converge_time_ms\"}, \"series\", \"Converge Time ms\", \"\", \"\")", + "legendFormat": "__auto", "refId": "A" } ], @@ -1183,14 +2930,94 @@ "axisLabel": "Proposers", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Build Version", @@ -1247,8 +3074,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"ledger_current_index\"}", - "legendFormat": "Current Ledger [{{service_instance_id}}]" + "expr": "label_replace(server_info{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\", metric=\"ledger_current_index\"}, \"series\", \"Current Ledger\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1257,7 +3084,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "NuDB Storage Size", @@ -1280,8 +3186,8 @@ "datasource": { "type": "prometheus" }, - "expr": "storage_detail{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\", metric=\"nudb_bytes\"}", - "legendFormat": "NuDB Size [{{service_instance_id}}]" + "expr": "label_replace(storage_detail{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\", metric=\"nudb_bytes\"}, \"series\", \"NuDB Size\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1291,14 +3197,94 @@ "axisLabel": "Size", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Complete Ledgers & DB", @@ -1365,22 +3351,22 @@ "datasource": { "type": "prometheus" }, - "expr": "db_metrics{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\", metric=\"db_kb_total\"}", - "legendFormat": "Total KB [{{service_instance_id}}]" + "expr": "label_replace(db_metrics{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\", metric=\"db_kb_total\"}, \"series\", \"Total KB\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "db_metrics{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\", metric=\"db_kb_ledger\"}", - "legendFormat": "Ledger KB [{{service_instance_id}}]" + "expr": "label_replace(db_metrics{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\", metric=\"db_kb_ledger\"}, \"series\", \"Ledger KB\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "db_metrics{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\", metric=\"db_kb_transaction\"}", - "legendFormat": "Transaction KB [{{service_instance_id}}]" + "expr": "label_replace(db_metrics{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\", metric=\"db_kb_transaction\"}, \"series\", \"Transaction KB\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1390,14 +3376,94 @@ "axisLabel": "Size (KB)", "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Historical Fetch Rate", @@ -1420,8 +3486,8 @@ "datasource": { "type": "prometheus" }, - "expr": "db_metrics{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\", metric=\"historical_perminute\"}", - "legendFormat": "Fetches/min [{{service_instance_id}}]" + "expr": "label_replace(db_metrics{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\", metric=\"historical_perminute\"}, \"series\", \"Fetches/min\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1430,7 +3496,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Peer Disconnects (Resources)", @@ -1453,8 +3598,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{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\", metric=\"peer_disconnects_resources\"}", - "legendFormat": "Resource Disconnects [{{service_instance_id}}]" + "expr": "label_replace(server_info{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\", metric=\"peer_disconnects_resources\"}, \"series\", \"Resource Disconnects\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1463,14 +3608,94 @@ "custom": { "drawStyle": "line", "lineWidth": 2, - "fillOpacity": 10 + "fillOpacity": 10, + "spanNulls": 1800000 }, "color": { "mode": "palette-classic" } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Economy", @@ -1505,8 +3730,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledger_economy{metric=\"base_fee_xrp\",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\"}", - "legendFormat": "Base Fee [{{service_instance_id}}]" + "expr": "label_replace(ledger_economy{metric=\"base_fee_xrp\",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\"}, \"series\", \"Base Fee\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1515,7 +3740,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Reserve Base (drops)", @@ -1538,8 +3842,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledger_economy{metric=\"reserve_base_xrp\",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\"}", - "legendFormat": "Reserve Base [{{service_instance_id}}]" + "expr": "label_replace(ledger_economy{metric=\"reserve_base_xrp\",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\"}, \"series\", \"Reserve Base\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1548,7 +3852,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Reserve Inc (drops)", @@ -1571,8 +3954,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledger_economy{metric=\"reserve_inc_xrp\",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\"}", - "legendFormat": "Reserve Inc [{{service_instance_id}}]" + "expr": "label_replace(ledger_economy{metric=\"reserve_inc_xrp\",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\"}, \"series\", \"Reserve Inc\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1581,7 +3964,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Age", @@ -1604,8 +4066,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledger_economy{metric=\"ledger_age_seconds\",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\"}", - "legendFormat": "Ledger Age [{{service_instance_id}}]" + "expr": "label_replace(ledger_economy{metric=\"ledger_age_seconds\",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\"}, \"series\", \"Ledger Age\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1632,7 +4094,7 @@ "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3, @@ -1642,7 +4104,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Transaction Rate", @@ -1665,8 +4206,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledger_economy{metric=\"transaction_rate\",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\"}", - "legendFormat": "Tx Rate [{{service_instance_id}}]" + "expr": "label_replace(ledger_economy{metric=\"transaction_rate\",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\"}, \"series\", \"Tx Rate\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1677,7 +4218,7 @@ "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -1687,7 +4228,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Extended Metrics", @@ -1702,7 +4322,7 @@ "panels": [] }, { - "title": "Key Jobs Execution Time", + "title": "Key Jobs Execution Time (q$quantile)", "description": "###### What this is:\n*Execution time for the most critical job types at the selected quantile.*\n\n###### How it's computed:\n*Per-job-type execution durations aggregated to the chosen quantile per node over a 5-minute window.*\n\n###### Reading it:\n*Lower is better; each line is one job type's run time.*\n\n###### Healthy range:\n*A few to tens of milliseconds for most jobs; workload-dependent.*\n\n###### Watch for:\n*Spikes on key jobs (accept, transaction, write) indicate processing bottlenecks.*\n\n###### Source:\n[JobTypeData.h](https://github.com/XRPLF/rippled/blob/develop/include/xrpl/core/JobTypeData.h)\n\n###### Function:\n`JobTypeData`", "type": "timeseries", "gridPos": { @@ -1722,78 +4342,78 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"acceptLedger\", 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\"}[5m])))", - "legendFormat": "Accept Ledger [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"acceptLedger\", 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\"}[5m]))), \"series\", \"Accept Ledger\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"advanceLedger\", 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\"}[5m])))", - "legendFormat": "Advance Ledger [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"advanceLedger\", 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\"}[5m]))), \"series\", \"Advance Ledger\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"transaction\", 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\"}[5m])))", - "legendFormat": "Transaction [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"transaction\", 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\"}[5m]))), \"series\", \"Transaction\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"writeObjects\", 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\"}[5m])))", - "legendFormat": "Write Objects [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"writeObjects\", 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\"}[5m]))), \"series\", \"Write Objects\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"heartbeat\", 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\"}[5m])))", - "legendFormat": "Heartbeat [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"heartbeat\", 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\"}[5m]))), \"series\", \"Heartbeat\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"sweep\", 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\"}[5m])))", - "legendFormat": "Sweep [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"sweep\", 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\"}[5m]))), \"series\", \"Sweep\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"trustedValidation\", 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\"}[5m])))", - "legendFormat": "Trusted Validation [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"trustedValidation\", 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\"}[5m]))), \"series\", \"Trusted Validation\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"trustedProposal\", 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\"}[5m])))", - "legendFormat": "Trusted Proposal [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"trustedProposal\", 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\"}[5m]))), \"series\", \"Trusted Proposal\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"publishNewLedger\", 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\"}[5m])))", - "legendFormat": "Publish New Ledger [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"publishNewLedger\", 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\"}[5m]))), \"series\", \"Publish New Ledger\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"clientRPC\", 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\"}[5m])))", - "legendFormat": "Client RPC [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"clientRPC\", 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\"}[5m]))), \"series\", \"Client RPC\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_running_us_bucket{job_type=\"ledgerData\", 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\"}[5m])))", - "legendFormat": "Ledger Data [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{job_type=\"ledgerData\", 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\"}[5m]))), \"series\", \"Ledger Data\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1801,17 +4421,96 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Key Jobs Dequeue Wait Time", + "title": "Key Jobs Dequeue Wait Time (q$quantile)", "description": "###### What this is:\n*Time critical jobs wait in the queue before running, at the selected quantile.*\n\n###### How it's computed:\n*Per-job-type queue-wait durations aggregated to the chosen quantile per node over a 5-minute window.*\n\n###### Reading it:\n*Lower is better; each line is one job type's wait time.*\n\n###### Healthy range:\n*Near zero to a few milliseconds when the queue is keeping up.*\n\n###### Watch for:\n*High waits mean the queue is backlogged and jobs are scheduled late.*\n\n###### Source:\n[JobTypeData.h](https://github.com/XRPLF/rippled/blob/develop/include/xrpl/core/JobTypeData.h)\n\n###### Function:\n`JobTypeData`", "type": "timeseries", "gridPos": { @@ -1831,78 +4530,78 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"acceptLedger\", 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\"}[5m])))", - "legendFormat": "Accept Ledger [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"acceptLedger\", 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\"}[5m]))), \"series\", \"Accept Ledger\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"advanceLedger\", 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\"}[5m])))", - "legendFormat": "Advance Ledger [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"advanceLedger\", 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\"}[5m]))), \"series\", \"Advance Ledger\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"transaction\", 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\"}[5m])))", - "legendFormat": "Transaction [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"transaction\", 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\"}[5m]))), \"series\", \"Transaction\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"writeObjects\", 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\"}[5m])))", - "legendFormat": "Write Objects [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"writeObjects\", 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\"}[5m]))), \"series\", \"Write Objects\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"heartbeat\", 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\"}[5m])))", - "legendFormat": "Heartbeat [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"heartbeat\", 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\"}[5m]))), \"series\", \"Heartbeat\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"sweep\", 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\"}[5m])))", - "legendFormat": "Sweep [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"sweep\", 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\"}[5m]))), \"series\", \"Sweep\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"trustedValidation\", 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\"}[5m])))", - "legendFormat": "Trusted Validation [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"trustedValidation\", 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\"}[5m]))), \"series\", \"Trusted Validation\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"trustedProposal\", 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\"}[5m])))", - "legendFormat": "Trusted Proposal [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"trustedProposal\", 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\"}[5m]))), \"series\", \"Trusted Proposal\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"publishNewLedger\", 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\"}[5m])))", - "legendFormat": "Publish New Ledger [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"publishNewLedger\", 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\"}[5m]))), \"series\", \"Publish New Ledger\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"clientRPC\", 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\"}[5m])))", - "legendFormat": "Client RPC [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"clientRPC\", 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\"}[5m]))), \"series\", \"Client RPC\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, service_instance_id) (rate(job_queued_us_bucket{job_type=\"ledgerData\", 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\"}[5m])))", - "legendFormat": "Ledger Data [{{quantile}}]" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{job_type=\"ledgerData\", 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\"}[5m]))), \"series\", \"Ledger Data\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1910,14 +4609,93 @@ "unit": "ms", "custom": { "axisLabel": "Wait Time (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "FullBelowCache Size", @@ -1940,8 +4718,8 @@ "datasource": { "type": "prometheus" }, - "expr": "node_family_full_below_cache_size{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\"}", - "legendFormat": "FullBelowCache Size" + "expr": "label_replace(node_family_full_below_cache_size{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\"}, \"series\", \"FullBelowCache Size\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -1949,14 +4727,93 @@ "unit": "short", "custom": { "axisLabel": "Entries", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "FullBelowCache Hit Rate", @@ -1979,8 +4836,8 @@ "datasource": { "type": "prometheus" }, - "expr": "node_family_full_below_cache_hit_rate{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\"}", - "legendFormat": "Hit Rate" + "expr": "label_replace(node_family_full_below_cache_hit_rate{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\"}, \"series\", \"Hit Rate\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2006,7 +4863,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Publish Gap", @@ -2029,8 +4965,8 @@ "datasource": { "type": "prometheus" }, - "expr": "ledgermaster_published_ledger_age{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\"} - ledgermaster_validated_ledger_age{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\"}", - "legendFormat": "Publish Gap" + "expr": "label_replace(ledgermaster_published_ledger_age{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\"} - ledgermaster_validated_ledger_age{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\"}, \"series\", \"Publish Gap\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2054,7 +4990,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "State Duration Rate (Full vs Tracking)", @@ -2077,15 +5092,15 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(state_accounting_full_duration{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]) / 1000000", - "legendFormat": "Full Mode Rate" + "expr": "label_replace(rate(state_accounting_full_duration{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]) / 1000000, \"series\", \"Full Mode Rate\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(state_accounting_tracking_duration{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]) / 1000000", - "legendFormat": "Tracking Mode Rate" + "expr": "label_replace(rate(state_accounting_tracking_duration{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]) / 1000000, \"series\", \"Tracking Mode Rate\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2093,14 +5108,93 @@ "unit": "short", "custom": { "axisLabel": "Rate (s/s)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "All Jobs Execution Time (Detail)", @@ -2123,8 +5217,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, job_type) (rate(job_running_us_bucket{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\"}[5m])))", - "legendFormat": "{{job_type}}" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, job_type, xrpl_branch, xrpl_node_role) (rate(job_running_us_bucket{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\"}[5m]))), \"series\", \"$1\", \"job_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2132,14 +5226,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|job_type)=\"[^\"]*\",?\\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": "All Jobs Dequeue Wait (Detail)", @@ -2162,8 +5335,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile($quantile, sum by (le, job_type) (rate(job_queued_us_bucket{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\"}[5m])))", - "legendFormat": "{{job_type}}" + "expr": "label_replace(histogram_quantile($quantile, sum by (le, job_type, xrpl_branch, xrpl_node_role) (rate(job_queued_us_bucket{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\"}[5m]))), \"series\", \"$1\", \"job_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2171,14 +5344,93 @@ "unit": "ms", "custom": { "axisLabel": "Wait Time (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|job_type)=\"[^\"]*\",?\\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 Acquire Duration (Inbound Fetch)", @@ -2201,8 +5453,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"ledger.acquire\"}[5m])))", - "legendFormat": "P95 Acquire [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"ledger.acquire\"}[5m]))), \"series\", \"P95 Acquire\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2210,14 +5462,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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 Acquire Rate by Outcome", @@ -2240,8 +5571,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (outcome, service_instance_id) (rate(span_calls_total{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\", span_name=\"ledger.acquire\"}[$__rate_interval]))", - "legendFormat": "{{outcome}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (outcome, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"ledger.acquire\"}[$__rate_interval])), \"series\", \"$1\", \"outcome\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2249,14 +5580,93 @@ "unit": "ops", "custom": { "axisLabel": "Acquisitions / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|outcome)=\"[^\"]*\",?\\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": "Operating Mode (State Timeline)", @@ -2376,8 +5786,8 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "rate(state_accounting_full_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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]))", - "legendFormat": "% Time in Full [{{service_instance_id}}]" + "expr": "label_replace(rate(state_accounting_full_duration{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]) / (rate(state_accounting_disconnected_duration{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]) + rate(state_accounting_connected_duration{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]) + rate(state_accounting_syncing_duration{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]) + rate(state_accounting_tracking_duration{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]) + rate(state_accounting_full_duration{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\", \"% Time in Full\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -2405,7 +5815,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, diff --git a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json index 1f66d2cdf6..eb6fba98f8 100644 --- a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json +++ b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json @@ -30,43 +30,43 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_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])", - "legendFormat": "Squelch In [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_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\", \"Squelch In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_messages_out{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])", - "legendFormat": "Squelch Out [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_messages_out{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\", \"Squelch Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_suppressed_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])", - "legendFormat": "Suppressed In [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_suppressed_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\", \"Suppressed In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_suppressed_messages_out{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])", - "legendFormat": "Suppressed Out [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_suppressed_messages_out{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\", \"Suppressed Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_ignored_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])", - "legendFormat": "Ignored In [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_ignored_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\", \"Ignored In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(squelch_ignored_messages_out{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])", - "legendFormat": "Ignored Out [{{service_instance_id}}]" + "expr": "label_replace(rate(squelch_ignored_messages_out{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\", \"Ignored Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -74,14 +74,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Overhead Traffic Breakdown (Bytes)", @@ -104,43 +183,43 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_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])", - "legendFormat": "Base Overhead In [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_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\", \"Base Overhead In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_bytes_out{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])", - "legendFormat": "Base Overhead Out [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_bytes_out{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\", \"Base Overhead Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_cluster_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])", - "legendFormat": "Cluster In [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_cluster_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\", \"Cluster In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_cluster_bytes_out{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])", - "legendFormat": "Cluster Out [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_cluster_bytes_out{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\", \"Cluster Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_manifest_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])", - "legendFormat": "Manifest In [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_manifest_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\", \"Manifest In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(overhead_manifest_bytes_out{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])", - "legendFormat": "Manifest Out [{{service_instance_id}}]" + "expr": "label_replace(rate(overhead_manifest_bytes_out{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\", \"Manifest Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -148,14 +227,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validator List Traffic", @@ -178,29 +336,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_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])", - "legendFormat": "Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_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\", \"Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_bytes_out{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])", - "legendFormat": "Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_bytes_out{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\", \"Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_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])", - "legendFormat": "Messages In [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_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\", \"Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validator_lists_messages_out{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])", - "legendFormat": "Messages Out [{{service_instance_id}}]" + "expr": "label_replace(rate(validator_lists_messages_out{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\", \"Messages Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -208,7 +366,7 @@ "unit": "cps", "custom": { "axisLabel": "Count", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -232,7 +390,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Set Get/Share Traffic (Bytes)", @@ -255,29 +492,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(set_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])", - "legendFormat": "Set Get In [{{service_instance_id}}]" + "expr": "label_replace(rate(set_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\", \"Set Get In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(set_get_bytes_out{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])", - "legendFormat": "Set Get Out [{{service_instance_id}}]" + "expr": "label_replace(rate(set_get_bytes_out{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\", \"Set Get Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(set_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])", - "legendFormat": "Set Share In [{{service_instance_id}}]" + "expr": "label_replace(rate(set_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\", \"Set Share In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(set_share_bytes_out{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])", - "legendFormat": "Set Share Out [{{service_instance_id}}]" + "expr": "label_replace(rate(set_share_bytes_out{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\", \"Set Share Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -285,14 +522,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Have/Requested Transactions (Messages)", @@ -315,29 +631,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(have_transactions_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])", - "legendFormat": "Have TX In [{{service_instance_id}}]" + "expr": "label_replace(rate(have_transactions_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\", \"Have TX In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(have_transactions_messages_out{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])", - "legendFormat": "Have TX Out [{{service_instance_id}}]" + "expr": "label_replace(rate(have_transactions_messages_out{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\", \"Have TX Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(requested_transactions_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])", - "legendFormat": "Requested TX In [{{service_instance_id}}]" + "expr": "label_replace(rate(requested_transactions_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\", \"Requested TX In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(requested_transactions_messages_out{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])", - "legendFormat": "Requested TX Out [{{service_instance_id}}]" + "expr": "label_replace(rate(requested_transactions_messages_out{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\", \"Requested TX Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -345,14 +661,93 @@ "unit": "cps", "custom": { "axisLabel": "Messages", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Unknown / Unclassified Traffic", @@ -375,29 +770,29 @@ "datasource": { "type": "prometheus" }, - "expr": "unknown_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\"}", - "legendFormat": "Unknown Bytes In [{{service_instance_id}}]" + "expr": "label_replace(unknown_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\"}, \"series\", \"Unknown Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "unknown_bytes_out{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\"}", - "legendFormat": "Unknown Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(unknown_bytes_out{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\"}, \"series\", \"Unknown Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "unknown_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\"}", - "legendFormat": "Unknown Messages In [{{service_instance_id}}]" + "expr": "label_replace(unknown_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\"}, \"series\", \"Unknown Messages In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "unknown_messages_out{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\"}", - "legendFormat": "Unknown Messages Out [{{service_instance_id}}]" + "expr": "label_replace(unknown_messages_out{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\"}, \"series\", \"Unknown Messages Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -405,7 +800,7 @@ "unit": "short", "custom": { "axisLabel": "Count", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -429,7 +824,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Proof Path Traffic", @@ -452,29 +926,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_request_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])", - "legendFormat": "Request Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_request_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\", \"Request Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_request_bytes_out{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])", - "legendFormat": "Request Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_request_bytes_out{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\", \"Request Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_response_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])", - "legendFormat": "Response Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_response_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\", \"Response Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(proof_path_response_bytes_out{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])", - "legendFormat": "Response Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(proof_path_response_bytes_out{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\", \"Response Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -482,14 +956,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Replay Delta Traffic", @@ -512,29 +1065,29 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_request_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])", - "legendFormat": "Request Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_request_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\", \"Request Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_request_bytes_out{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])", - "legendFormat": "Request Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_request_bytes_out{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\", \"Request Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_response_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])", - "legendFormat": "Response Bytes In [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_response_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\", \"Response Bytes In\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(replay_delta_response_bytes_out{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])", - "legendFormat": "Response Bytes Out [{{service_instance_id}}]" + "expr": "label_replace(rate(replay_delta_response_bytes_out{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\", \"Response Bytes Out\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -542,14 +1095,93 @@ "unit": "Bps", "custom": { "axisLabel": "Bytes", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, diff --git a/docker/telemetry/grafana/dashboards/peer-network.json b/docker/telemetry/grafana/dashboards/peer-network.json index 6bb5714ab9..6cc8a485ae 100644 --- a/docker/telemetry/grafana/dashboards/peer-network.json +++ b/docker/telemetry/grafana/dashboards/peer-network.json @@ -30,8 +30,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"peer.proposal.receive\"}[$__rate_interval]))", - "legendFormat": "Proposals Received / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"peer.proposal.receive\"}[$__rate_interval])), \"series\", \"Proposals Received / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -39,14 +39,93 @@ "unit": "ops", "custom": { "axisLabel": "Proposals / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Peer Validation Receive Rate", @@ -69,8 +148,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"peer.validation.receive\"}[$__rate_interval]))", - "legendFormat": "Validations Received / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"peer.validation.receive\"}[$__rate_interval])), \"series\", \"Validations Received / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -78,14 +157,93 @@ "unit": "ops", "custom": { "axisLabel": "Validations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Proposals Trusted vs Untrusted", @@ -108,8 +266,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (proposal_trusted, service_instance_id) (rate(span_calls_total{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\", proposal_trusted=~\"$proposal_trusted\", span_name=\"peer.proposal.receive\"}[$__rate_interval]))", - "legendFormat": "Trusted = {{proposal_trusted}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (proposal_trusted, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", proposal_trusted=~\"$proposal_trusted\", span_name=\"peer.proposal.receive\"}[$__rate_interval])), \"series\", \"Trusted = $1\", \"proposal_trusted\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -117,7 +275,86 @@ "unit": "ops" }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|proposal_trusted)=\"[^\"]*\",?\\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": "Validations Trusted vs Untrusted", @@ -140,8 +377,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (validation_trusted, service_instance_id) (rate(span_calls_total{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\", validation_trusted=~\"$validation_trusted\", span_name=\"peer.validation.receive\"}[$__rate_interval]))", - "legendFormat": "Trusted = {{validation_trusted}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (validation_trusted, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", validation_trusted=~\"$validation_trusted\", span_name=\"peer.validation.receive\"}[$__rate_interval])), \"series\", \"Trusted = $1\", \"validation_trusted\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -149,7 +386,86 @@ "unit": "ops" }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|validation_trusted)=\"[^\"]*\",?\\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": "Reduce-Relay Peer Selection", @@ -172,22 +488,22 @@ "datasource": { "type": "prometheus" }, - "expr": "reduce_relay_metrics{metric=\"selected_peers\",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\"}", - "legendFormat": "Selected [{{service_instance_id}}]" + "expr": "label_replace(reduce_relay_metrics{metric=\"selected_peers\",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\"}, \"series\", \"Selected\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "reduce_relay_metrics{metric=\"suppressed_peers\",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\"}", - "legendFormat": "Suppressed [{{service_instance_id}}]" + "expr": "label_replace(reduce_relay_metrics{metric=\"suppressed_peers\",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\"}, \"series\", \"Suppressed\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "reduce_relay_metrics{metric=\"not_enabled_peers\",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\"}", - "legendFormat": "Not Enabled [{{service_instance_id}}]" + "expr": "label_replace(reduce_relay_metrics{metric=\"not_enabled_peers\",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\"}, \"series\", \"Not Enabled\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -195,14 +511,93 @@ "unit": "short", "custom": { "axisLabel": "Peer Count", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Reduce-Relay Missing-Tx Frequency", @@ -225,8 +620,8 @@ "datasource": { "type": "prometheus" }, - "expr": "reduce_relay_metrics{metric=\"missing_tx_freq\",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\"}", - "legendFormat": "Missing Tx Freq [{{service_instance_id}}]" + "expr": "label_replace(reduce_relay_metrics{metric=\"missing_tx_freq\",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\"}, \"series\", \"Missing Tx Freq\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -234,14 +629,93 @@ "unit": "short", "custom": { "axisLabel": "Frequency", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, @@ -371,7 +845,7 @@ { "name": "node", "label": "Node", - "description": "Filter by rippled node (service.instance.id — e.g. Node-1)", + "description": "Filter by rippled node (service.instance.id \u2014 e.g. Node-1)", "type": "query", "query": "label_values(target_info, service_instance_id)", "datasource": { diff --git a/docker/telemetry/grafana/dashboards/peer-quality.json b/docker/telemetry/grafana/dashboards/peer-quality.json index 976b7b5edd..a85dffab1b 100644 --- a/docker/telemetry/grafana/dashboards/peer-quality.json +++ b/docker/telemetry/grafana/dashboards/peer-quality.json @@ -30,8 +30,8 @@ "datasource": { "type": "prometheus" }, - "expr": "peer_quality{metric=\"peer_latency_p90_ms\",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\"}", - "legendFormat": "P90 Latency [{{service_instance_id}}]" + "expr": "label_replace(peer_quality{metric=\"peer_latency_p90_ms\",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\"}, \"series\", \"P90 Latency\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -42,7 +42,7 @@ "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -68,7 +68,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Insane/Diverged Peers", @@ -91,8 +170,8 @@ "datasource": { "type": "prometheus" }, - "expr": "peer_quality{metric=\"peers_insane_count\",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\"}", - "legendFormat": "Insane Peers [{{service_instance_id}}]" + "expr": "label_replace(peer_quality{metric=\"peers_insane_count\",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\"}, \"series\", \"Insane Peers\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -117,7 +196,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Higher Version Peers %", @@ -140,8 +298,8 @@ "datasource": { "type": "prometheus" }, - "expr": "peer_quality{metric=\"peers_higher_version_pct\",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\"}", - "legendFormat": "Higher Version % [{{service_instance_id}}]" + "expr": "label_replace(peer_quality{metric=\"peers_higher_version_pct\",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\"}, \"series\", \"Higher Version %\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -168,7 +326,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Upgrade Recommended", @@ -191,8 +428,8 @@ "datasource": { "type": "prometheus" }, - "expr": "peer_quality{metric=\"upgrade_recommended\",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\"}", - "legendFormat": "Upgrade [{{service_instance_id}}]" + "expr": "label_replace(peer_quality{metric=\"upgrade_recommended\",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\"}, \"series\", \"Upgrade\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -233,7 +470,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Resource Disconnects", @@ -256,8 +572,8 @@ "datasource": { "type": "prometheus" }, - "expr": "server_info{metric=\"peer_disconnects_resources\",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\"}", - "legendFormat": "Disconnects [{{service_instance_id}}]" + "expr": "label_replace(server_info{metric=\"peer_disconnects_resources\",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\"}, \"series\", \"Disconnects\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -268,7 +584,7 @@ "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -278,7 +594,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Inbound vs Outbound Peers", @@ -303,15 +698,15 @@ "datasource": { "type": "prometheus" }, - "expr": "peer_finder_active_inbound_peers{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\"}", - "legendFormat": "Inbound [{{service_instance_id}}]" + "expr": "label_replace(peer_finder_active_inbound_peers{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\"}, \"series\", \"Inbound\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "peer_finder_active_outbound_peers{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\"}", - "legendFormat": "Outbound [{{service_instance_id}}]" + "expr": "label_replace(peer_finder_active_outbound_peers{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\"}, \"series\", \"Outbound\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -359,7 +754,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, diff --git a/docker/telemetry/grafana/dashboards/rpc-pathfinding.json b/docker/telemetry/grafana/dashboards/rpc-pathfinding.json index 8d2ee439c9..46972bfb37 100644 --- a/docker/telemetry/grafana/dashboards/rpc-pathfinding.json +++ b/docker/telemetry/grafana/dashboards/rpc-pathfinding.json @@ -30,8 +30,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(rpc_requests_total{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])", - "legendFormat": "Requests / Sec [{{service_instance_id}}]" + "expr": "label_replace(rate(rpc_requests_total{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\", \"Requests / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -39,7 +39,86 @@ "unit": "reqps" }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "RPC Response Time", @@ -62,8 +141,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(rpc_time_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P95 Response Time [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_time_milliseconds_bucket{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\"}[5m]))), \"series\", \"P95 Response Time\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -71,18 +150,97 @@ "unit": "ms", "custom": { "axisLabel": "Latency (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "RPC Response Size", - "description": "⚠ Instrument mismatch — values unreliable. Response size is recorded through the millisecond-scaled event histogram (rpc_size_milliseconds_bucket), so byte values saturate at the top time bucket (5000) and the percentiles are not true byte sizes. A dedicated byte-unit histogram is needed to fix this; tracked separately. Treat this panel as indicative only until then.\n\n###### What this is:\n*The 95th-percentile size of RPC response payloads in bytes.*\n\n###### How it's computed:\n*95th-percentile of response payload sizes over the dashboard rate interval, per node.*\n\n###### Reading it:\n*Smaller is cheaper; large responses cost bandwidth and memory.*\n\n###### Healthy range:\n*Workload-dependent; small for status queries, large for bulk data queries.*\n\n###### Watch for:\n*Growth in large responses, consistent with expensive queries or API misuse.*\n\n###### Source:\n[ServerHandler.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/rpc/detail/ServerHandler.cpp)\n\n###### Function:\n`ServerHandler ctor`", + "description": "\u26a0 Instrument mismatch \u2014 values unreliable. Response size is recorded through the millisecond-scaled event histogram (rpc_size_milliseconds_bucket), so byte values saturate at the top time bucket (5000) and the percentiles are not true byte sizes. A dedicated byte-unit histogram is needed to fix this; tracked separately. Treat this panel as indicative only until then.\n\n###### What this is:\n*The 95th-percentile size of RPC response payloads in bytes.*\n\n###### How it's computed:\n*95th-percentile of response payload sizes over the dashboard rate interval, per node.*\n\n###### Reading it:\n*Smaller is cheaper; large responses cost bandwidth and memory.*\n\n###### Healthy range:\n*Workload-dependent; small for status queries, large for bulk data queries.*\n\n###### Watch for:\n*Growth in large responses, consistent with expensive queries or API misuse.*\n\n###### Source:\n[ServerHandler.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/rpc/detail/ServerHandler.cpp)\n\n###### Function:\n`ServerHandler ctor`", "type": "timeseries", "gridPos": { "h": 8, @@ -101,8 +259,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(rpc_size_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P95 Response Size [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_size_milliseconds_bucket{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\"}[5m]))), \"series\", \"P95 Response Size\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -110,14 +268,93 @@ "unit": "decbytes", "custom": { "axisLabel": "Size (Bytes)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "RPC Response Time Distribution", @@ -140,22 +377,22 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.9, sum by (le, service_instance_id) (rate(rpc_time_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P90 [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.9, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_time_milliseconds_bucket{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\"}[5m]))), \"series\", \"P90\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(rpc_time_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P95 [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_time_milliseconds_bucket{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\"}[5m]))), \"series\", \"P95\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le, service_instance_id) (rate(rpc_time_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P99 [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.99, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_time_milliseconds_bucket{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\"}[5m]))), \"series\", \"P99\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -163,14 +400,93 @@ "unit": "ms", "custom": { "axisLabel": "Latency (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Pathfinding Fast Duration", @@ -193,8 +509,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(pathfind_fast_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P95 Fast Pathfind [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(pathfind_fast_milliseconds_bucket{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\"}[5m]))), \"series\", \"P95 Fast Pathfind\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -202,14 +518,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Pathfinding Full Duration", @@ -232,8 +627,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(pathfind_full_milliseconds_bucket{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\"}[5m])))", - "legendFormat": "P95 Full Pathfind [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(pathfind_full_milliseconds_bucket{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\"}[5m]))), \"series\", \"P95 Full Pathfind\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -241,14 +636,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Resource Warnings Rate", @@ -271,8 +745,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(warn_total{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])", - "legendFormat": "Warnings / Sec [{{service_instance_id}}]" + "expr": "label_replace(rate(warn_total{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\", \"Warnings / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -296,7 +770,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Resource Drops Rate", @@ -319,8 +872,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(drop_total{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])", - "legendFormat": "Drops / Sec [{{service_instance_id}}]" + "expr": "label_replace(rate(drop_total{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\", \"Drops / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -344,7 +897,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "gRPC Request Rate by Method (Spans)", @@ -367,8 +999,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (method, service_instance_id) (rate(span_calls_total{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\", method=~\"$grpc_method\", span_name=~\"grpc\\\\..*\"}[$__rate_interval]))", - "legendFormat": "{{method}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (method, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", method=~\"$grpc_method\", span_name=~\"grpc\\\\..*\"}[$__rate_interval])), \"series\", \"$1\", \"method\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -376,14 +1008,93 @@ "unit": "ops", "custom": { "axisLabel": "Calls / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|method)=\"[^\"]*\",?\\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": "gRPC Latency P95 by Method (Spans)", @@ -406,8 +1117,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, method, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", method=~\"$grpc_method\", span_name=~\"grpc\\\\..*\"}[5m])))", - "legendFormat": "{{method}} [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, method, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", method=~\"$grpc_method\", span_name=~\"grpc\\\\..*\"}[5m]))), \"series\", \"$1\", \"method\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -415,14 +1126,93 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|method)=\"[^\"]*\",?\\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": "gRPC Error Rate by Status (Spans)", @@ -445,8 +1235,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (grpc_status, service_instance_id) (rate(span_calls_total{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\", span_name=~\"grpc\\\\..*\", grpc_status!=\"\"}[$__rate_interval]))", - "legendFormat": "{{grpc_status}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (grpc_status, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=~\"grpc\\\\..*\", grpc_status!=\"\"}[$__rate_interval])), \"series\", \"$1\", \"grpc_status\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -454,14 +1244,93 @@ "unit": "ops", "custom": { "axisLabel": "Calls / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|grpc_status)=\"[^\"]*\",?\\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": "Pathfinding Compute Duration (Spans)", @@ -484,8 +1353,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"pathfind.compute\"}[5m])))", - "legendFormat": "P95 Compute [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"pathfind.compute\"}[5m]))), \"series\", \"P95 Compute\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -493,18 +1362,97 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Pathfinding Request & Discovery Rate (Spans)", - "description": "###### What this is:\n*The rate of client path requests versus path-discovery passes.*\n\n###### How it's computed:\n*Per-second rates of path requests and discovery passes over 5 minutes, per node.*\n\n###### Reading it:\n*Discovery cost tracks request demand; useful for subscription-heavy nodes.*\n\n###### Healthy range:\n*Workload-dependent; both zero without pathfinding clients.*\n\n###### Watch for:\n*Discovery rate climbing out of proportion to requests, a cost driver for subscription-heavy nodes.*\n\n###### Source:\n[PathFind.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/rpc/handlers/orderbook/PathFind.cpp) · [PathRequest.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/rpc/detail/PathRequest.cpp)\n\n###### Function:\n`doPathFind ; PathRequest::findPaths`", + "description": "###### What this is:\n*The rate of client path requests versus path-discovery passes.*\n\n###### How it's computed:\n*Per-second rates of path requests and discovery passes over 5 minutes, per node.*\n\n###### Reading it:\n*Discovery cost tracks request demand; useful for subscription-heavy nodes.*\n\n###### Healthy range:\n*Workload-dependent; both zero without pathfinding clients.*\n\n###### Watch for:\n*Discovery rate climbing out of proportion to requests, a cost driver for subscription-heavy nodes.*\n\n###### Source:\n[PathFind.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/rpc/handlers/orderbook/PathFind.cpp) \u00b7 [PathRequest.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/rpc/detail/PathRequest.cpp)\n\n###### Function:\n`doPathFind ; PathRequest::findPaths`", "type": "timeseries", "gridPos": { "h": 8, @@ -523,15 +1471,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"pathfind.request\"}[$__rate_interval]))", - "legendFormat": "Requests / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"pathfind.request\"}[$__rate_interval])), \"series\", \"Requests / Sec\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"pathfind.discover\"}[$__rate_interval]))", - "legendFormat": "Discoveries / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"pathfind.discover\"}[$__rate_interval])), \"series\", \"Discoveries / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -539,14 +1487,93 @@ "unit": "ops", "custom": { "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, diff --git a/docker/telemetry/grafana/dashboards/rpc-performance.json b/docker/telemetry/grafana/dashboards/rpc-performance.json index ae95a8522e..7eaea718ce 100644 --- a/docker/telemetry/grafana/dashboards/rpc-performance.json +++ b/docker/telemetry/grafana/dashboards/rpc-performance.json @@ -42,8 +42,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (command, service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[$__rate_interval]))", - "legendFormat": "{{command}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (command, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[$__rate_interval])), \"series\", \"$1\", \"command\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -51,7 +51,7 @@ "unit": "reqps", "custom": { "axisLabel": "Requests / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -59,7 +59,86 @@ }, "overrides": [] }, - "id": 1 + "id": 1, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|command)=\"[^\"]*\",?\\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": "RPC Latency P95 by Command", @@ -82,8 +161,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, command, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[5m])))", - "legendFormat": "P95 {{command}} [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, command, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[5m]))), \"series\", \"P95 $1\", \"command\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -91,7 +170,7 @@ "unit": "ms", "custom": { "axisLabel": "Latency (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -99,7 +178,86 @@ }, "overrides": [] }, - "id": 2 + "id": 2, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|command)=\"[^\"]*\",?\\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": "RPC Error Rate", @@ -122,8 +280,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (command, service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\", status_code=\"STATUS_CODE_ERROR\"}[$__rate_interval])) / sum by (command, service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[$__rate_interval])) * 100", - "legendFormat": "{{command}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (command, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\", status_code=\"STATUS_CODE_ERROR\"}[$__rate_interval])) / sum by (command, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[$__rate_interval])) * 100, \"series\", \"$1\", \"command\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -148,7 +306,86 @@ }, "overrides": [] }, - "id": 3 + "id": 3, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|command)=\"[^\"]*\",?\\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": "RPC Latency Heatmap", @@ -208,15 +445,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=\"rpc.http_request\"}[$__rate_interval]))", - "legendFormat": "rpc.http_request / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=\"rpc.http_request\"}[$__rate_interval])), \"series\", \"rpc.http_request / Sec\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=\"rpc.process\"}[$__rate_interval]))", - "legendFormat": "rpc.process / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=\"rpc.process\"}[$__rate_interval])), \"series\", \"rpc.process / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -224,7 +461,7 @@ "unit": "reqps", "custom": { "axisLabel": "Requests / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -232,7 +469,86 @@ }, "overrides": [] }, - "id": 5 + "id": 5, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "RPC Success vs Error", @@ -255,15 +571,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\", status_code=\"STATUS_CODE_OK\"}[$__rate_interval]))", - "legendFormat": "Success [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\", status_code=\"STATUS_CODE_OK\"}[$__rate_interval])), \"series\", \"Success\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\", status_code=\"STATUS_CODE_ERROR\"}[$__rate_interval]))", - "legendFormat": "Error [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\", status_code=\"STATUS_CODE_ERROR\"}[$__rate_interval])), \"series\", \"Error\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -271,7 +587,7 @@ "unit": "ops", "custom": { "axisLabel": "Commands / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -279,7 +595,86 @@ }, "overrides": [] }, - "id": 6 + "id": 6, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Top Commands by Volume", @@ -302,8 +697,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, sum by (command, service_instance_id) (increase(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[$__rate_interval])))", - "legendFormat": "{{command}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, sum by (command, service_instance_id, xrpl_branch, xrpl_node_role) (increase(span_calls_total{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\", command=~\"$command\", span_name=~\"rpc.command.*\"}[$__rate_interval]))), \"series\", \"$1\", \"command\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -312,7 +707,86 @@ }, "overrides": [] }, - "id": 7 + "id": 7, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|command)=\"[^\"]*\",?\\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": "WebSocket Message Rate", @@ -335,8 +809,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", command=~\"$command\", span_name=\"rpc.ws_message\"}[$__rate_interval]))", - "legendFormat": "WS Messages / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", command=~\"$command\", span_name=\"rpc.ws_message\"}[$__rate_interval])), \"series\", \"WS Messages / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -345,7 +819,86 @@ }, "overrides": [] }, - "id": 8 + "id": 8, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "RPC Resource Cost by Command", @@ -373,8 +926,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (load_type) (rate(span_calls_total{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\", span_name=~\"rpc.command.*\", load_type!=\"\"}[$__rate_interval]))", - "legendFormat": "{{load_type}}" + "expr": "label_replace(sum by (load_type, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=~\"rpc.command.*\", load_type!=\"\"}[$__rate_interval])), \"series\", \"$1\", \"load_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -382,7 +935,7 @@ "unit": "ops", "custom": { "axisLabel": "Requests / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -390,7 +943,86 @@ }, "overrides": [] }, - "id": 9 + "id": 9, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|load_type)=\"[^\"]*\",?\\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": "Batch vs Single RPC Requests", @@ -413,15 +1045,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"rpc.process\", is_batch=\"true\"}[$__rate_interval]))", - "legendFormat": "Batch [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"rpc.process\", is_batch=\"true\"}[$__rate_interval])), \"series\", \"Batch\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"rpc.process\", is_batch=\"false\"}[$__rate_interval]))", - "legendFormat": "Single [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"rpc.process\", is_batch=\"false\"}[$__rate_interval])), \"series\", \"Single\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -429,7 +1061,7 @@ "unit": "ops", "custom": { "axisLabel": "Requests / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -437,7 +1069,86 @@ }, "overrides": [] }, - "id": 10 + "id": 10, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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" + } + } + ] }, { "id": 12, @@ -454,7 +1165,7 @@ }, { "title": "RPC Call Rate (All Methods)", - "description": "###### What this is:\n*Overall rate of RPC method calls that started, finished, and errored, across all methods.*\n\n###### How it's computed:\n*Per-second rate of each counter over a 5-minute window, summed per node.*\n\n###### Reading it:\n*Started should closely track finished; errored should be a small fraction.*\n\n###### Healthy range:\n*Workload-dependent; started ≈ finished, errored near zero.*\n\n###### Watch for:\n*A growing gap between started and finished (calls hanging), or an errored line that rises with load.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcStarted / recordRpcFinished / recordRpcErrored`", + "description": "###### What this is:\n*Overall rate of RPC method calls that started, finished, and errored, across all methods.*\n\n###### How it's computed:\n*Per-second rate of each counter over a 5-minute window, summed per node.*\n\n###### Reading it:\n*Started should closely track finished; errored should be a small fraction.*\n\n###### Healthy range:\n*Workload-dependent; started \u2248 finished, errored near zero.*\n\n###### Watch for:\n*A growing gap between started and finished (calls hanging), or an errored line that rises with load.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcStarted / recordRpcFinished / recordRpcErrored`", "type": "timeseries", "gridPos": { "h": 8, @@ -473,22 +1184,22 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(rpc_method_started_total{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\", method=~\"$method\"}[$__rate_interval]))", - "legendFormat": "Started/s [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_method_started_total{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\", method=~\"$method\"}[$__rate_interval])), \"series\", \"Started/s\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(rpc_method_finished_total{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\", method=~\"$method\"}[$__rate_interval]))", - "legendFormat": "Finished/s [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_method_finished_total{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\", method=~\"$method\"}[$__rate_interval])), \"series\", \"Finished/s\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(rpc_method_errored_total{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\", method=~\"$method\"}[$__rate_interval]))", - "legendFormat": "Errored/s [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_method_errored_total{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\", method=~\"$method\"}[$__rate_interval])), \"series\", \"Errored/s\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -499,7 +1210,7 @@ "lineWidth": 2, "fillOpacity": 10, "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -510,7 +1221,86 @@ }, "overrides": [] }, - "id": 13 + "id": 13, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Per-Method Call Rate (Top 10)", @@ -538,8 +1328,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, rate(rpc_method_started_total{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\", method=~\"$method\"}[$__rate_interval]))", - "legendFormat": "{{method}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, rate(rpc_method_started_total{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\", method=~\"$method\"}[$__rate_interval])), \"series\", \"$1\", \"method\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -550,7 +1340,7 @@ "lineWidth": 1, "fillOpacity": 5, "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -561,11 +1351,90 @@ }, "overrides": [] }, - "id": 14 + "id": 14, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|method)=\"[^\"]*\",?\\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": "Per-Method Error Rate (Top 10)", - "description": "###### What this is:\n*The ten RPC methods producing the most errors.*\n\n###### How it's computed:\n*Per-second error rate over 5 minutes, per method, top ten.*\n\n###### Reading it:\n*Normally near zero; persistent errors point to a specific failing method.*\n\n###### Healthy range:\n*Near zero for well-behaved traffic.*\n\n###### Watch for:\n*Sustained errors concentrated on one method — a broken client, a bad input, or probing.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcErrored`", + "description": "###### What this is:\n*The ten RPC methods producing the most errors.*\n\n###### How it's computed:\n*Per-second error rate over 5 minutes, per method, top ten.*\n\n###### Reading it:\n*Normally near zero; persistent errors point to a specific failing method.*\n\n###### Healthy range:\n*Near zero for well-behaved traffic.*\n\n###### Watch for:\n*Sustained errors concentrated on one method \u2014 a broken client, a bad input, or probing.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcErrored`", "type": "timeseries", "gridPos": { "h": 8, @@ -589,8 +1458,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, rate(rpc_method_errored_total{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\", method=~\"$method\"}[$__rate_interval]))", - "legendFormat": "{{method}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, rate(rpc_method_errored_total{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\", method=~\"$method\"}[$__rate_interval])), \"series\", \"$1\", \"method\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -601,7 +1470,7 @@ "lineWidth": 1, "fillOpacity": 5, "axisLabel": "Operations / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -612,11 +1481,90 @@ }, "overrides": [] }, - "id": 15 + "id": 15, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|method)=\"[^\"]*\",?\\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": "RPC Latency - All Methods", - "description": "###### What this is:\n*Aggregate RPC handler latency across all methods (p75 and p99).*\n\n###### How it's computed:\n*Percentiles of the method-duration histogram over a 5-minute window.*\n\n###### Reading it:\n*p75 reflects typical responsiveness; p99 captures the slow tail.*\n\n###### Healthy range:\n*Sub-millisecond to low-millisecond for light commands; heavier commands run longer.*\n\n###### Watch for:\n*A rising p99 while p75 stays flat — a subset of calls degrading, often from expensive queries.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcFinished`", + "description": "###### What this is:\n*Aggregate RPC handler latency across all methods (p75 and p99).*\n\n###### How it's computed:\n*Percentiles of the method-duration histogram over a 5-minute window.*\n\n###### Reading it:\n*p75 reflects typical responsiveness; p99 captures the slow tail.*\n\n###### Healthy range:\n*Sub-millisecond to low-millisecond for light commands; heavier commands run longer.*\n\n###### Watch for:\n*A rising p99 while p75 stays flat \u2014 a subset of calls degrading, often from expensive queries.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcFinished`", "type": "timeseries", "gridPos": { "h": 8, @@ -635,26 +1583,26 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.75, sum by (le, service_instance_id) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m])))", - "legendFormat": "p75 [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.75, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m]))), \"series\", \"p75\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le, service_instance_id) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m])))", - "legendFormat": "p99 [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.99, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m]))), \"series\", \"p99\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { "defaults": { - "unit": "µs", + "unit": "\u00b5s", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 5, - "axisLabel": "Duration (μs)", - "spanNulls": true, + "axisLabel": "Duration (\u03bcs)", + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -665,7 +1613,86 @@ }, "overrides": [] }, - "id": 16 + "id": 16, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Per-Method Latency (p99, Top 10 Slowest)", @@ -693,19 +1720,19 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, histogram_quantile(0.99, sum by (le, method, service_instance_id) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m]))))", - "legendFormat": "{{method}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, histogram_quantile(0.99, sum by (le, method, service_instance_id, xrpl_branch, xrpl_node_role) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m])))), \"series\", \"$1\", \"method\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { "defaults": { - "unit": "µs", + "unit": "\u00b5s", "custom": { "drawStyle": "line", "lineWidth": 1, "fillOpacity": 5, - "axisLabel": "Duration (μs)", - "spanNulls": true, + "axisLabel": "Duration (\u03bcs)", + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -716,11 +1743,90 @@ }, "overrides": [] }, - "id": 17 + "id": 17, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|method)=\"[^\"]*\",?\\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": "RPC Error Ratio by Method", - "description": "###### What this is:\n*The methods with the highest error rates, for spotting failure hotspots.*\n\n###### How it's computed:\n*Per-second error rate over 5 minutes, per method, top ten.*\n\n###### Reading it:\n*Highlights where failures concentrate.*\n\n###### Healthy range:\n*Near zero.*\n\n###### Watch for:\n*One method with a persistently high error rate — malformed requests or targeted probing.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcErrored`", + "description": "###### What this is:\n*The methods with the highest error rates, for spotting failure hotspots.*\n\n###### How it's computed:\n*Per-second error rate over 5 minutes, per method, top ten.*\n\n###### Reading it:\n*Highlights where failures concentrate.*\n\n###### Healthy range:\n*Near zero.*\n\n###### Watch for:\n*One method with a persistently high error rate \u2014 malformed requests or targeted probing.*\n\n###### Source:\n[MetricsRegistry.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/telemetry/MetricsRegistry.cpp)\n\n###### Function:\n`recordRpcErrored`", "type": "timeseries", "gridPos": { "h": 8, @@ -744,8 +1850,8 @@ "datasource": { "type": "prometheus" }, - "expr": "topk(10, rate(rpc_method_errored_total{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\", method=~\"$method\"}[$__rate_interval]) / (rate(rpc_method_started_total{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\", method=~\"$method\"}[$__rate_interval]) > 0))", - "legendFormat": "{{method}} [{{service_instance_id}}]" + "expr": "label_replace(topk(10, rate(rpc_method_errored_total{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\", method=~\"$method\"}[$__rate_interval]) / (rate(rpc_method_started_total{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\", method=~\"$method\"}[$__rate_interval]) > 0)), \"series\", \"$1\", \"method\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -758,7 +1864,7 @@ "lineWidth": 1, "fillOpacity": 5, "axisLabel": "Error Ratio", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -785,7 +1891,86 @@ }, "overrides": [] }, - "id": 18 + "id": 18, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|method)=\"[^\"]*\",?\\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": "Current RPC Latency (p99 Gauge)", @@ -812,13 +1997,13 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.99, sum by (le) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m])))", - "legendFormat": "p99 Latency" + "expr": "label_replace(histogram_quantile(0.99, sum by (le, xrpl_branch, xrpl_node_role) (rate(rpc_method_us_bucket{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\", method=~\"$method\"}[5m]))), \"series\", \"p99 Latency\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { "defaults": { - "unit": "µs", + "unit": "\u00b5s", "min": 0, "thresholds": { "mode": "absolute", @@ -840,7 +2025,86 @@ }, "overrides": [] }, - "id": 19 + "id": 19, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, @@ -970,7 +2234,7 @@ { "name": "node", "label": "Node", - "description": "Filter by rippled node (service.instance.id — e.g. Node-1)", + "description": "Filter by rippled node (service.instance.id \u2014 e.g. Node-1)", "type": "query", "query": "label_values(target_info, service_instance_id)", "datasource": { diff --git a/docker/telemetry/grafana/dashboards/transaction-overview.json b/docker/telemetry/grafana/dashboards/transaction-overview.json index 818b49f40a..e64125b536 100644 --- a/docker/telemetry/grafana/dashboards/transaction-overview.json +++ b/docker/telemetry/grafana/dashboards/transaction-overview.json @@ -10,7 +10,7 @@ "panels": [ { "title": "Transaction Apply Failed Rate", - "description": "###### What this is:\n*Transactions that fail during the apply (transactor) stage, per second — i.e. the transactor ran but the result was not tesSUCCESS.*\n\n###### How it's computed:\n*Per-second rate of tx.transactor spans at the apply stage whose ter_result is not tesSUCCESS, over the dashboard rate interval, per node.*\n\n###### Reading it:\n*A steady low background is normal (tefPAST_SEQ, tecUNFUNDED, etc.); the transactor legitimately rejects many transactions.*\n\n###### Healthy range:\n*A low, stable rate; workload-dependent.*\n\n###### Watch for:\n*A sharp rise above baseline, which points to a submission pattern that is systematically failing at apply.*\n\n###### Source:\n[Transactor.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/app/tx/detail/Transactor.cpp)\n\n###### Function:\n`Transactor::operator()`", + "description": "###### What this is:\n*Transactions that fail during the apply (transactor) stage, per second \u2014 i.e. the transactor ran but the result was not tesSUCCESS.*\n\n###### How it's computed:\n*Per-second rate of tx.transactor spans at the apply stage whose ter_result is not tesSUCCESS, over the dashboard rate interval, per node.*\n\n###### Reading it:\n*A steady low background is normal (tefPAST_SEQ, tecUNFUNDED, etc.); the transactor legitimately rejects many transactions.*\n\n###### Healthy range:\n*A low, stable rate; workload-dependent.*\n\n###### Watch for:\n*A sharp rise above baseline, which points to a submission pattern that is systematically failing at apply.*\n\n###### Source:\n[Transactor.cpp](https://github.com/XRPLF/rippled/blob/develop/src/xrpld/app/tx/detail/Transactor.cpp)\n\n###### Function:\n`Transactor::operator()`", "type": "stat", "gridPos": { "h": 4, @@ -30,8 +30,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"tx.transactor\", stage=\"apply\", ter_result!~\"tesSUCCESS|\"}[$__rate_interval]))", - "legendFormat": "Failed / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"tx.transactor\", stage=\"apply\", ter_result!~\"tesSUCCESS|\"}[$__rate_interval])), \"series\", \"Failed / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -56,7 +56,86 @@ }, "overrides": [] }, - "id": 1 + "id": 1, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Transaction Processing Latency by Type", @@ -85,8 +164,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, tx_type, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[5m])))", - "legendFormat": "{{tx_type}} [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, tx_type, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[5m]))), \"series\", \"$1\", \"tx_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -94,7 +173,7 @@ "unit": "ms", "custom": { "axisLabel": "Latency (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -102,7 +181,86 @@ }, "overrides": [] }, - "id": 2 + "id": 2, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|tx_type)=\"[^\"]*\",?\\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": "Transaction Rate by Type", @@ -131,8 +289,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (tx_type, service_instance_id) (rate(span_calls_total{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[$__rate_interval]))", - "legendFormat": "{{tx_type}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (tx_type, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[$__rate_interval])), \"series\", \"$1\", \"tx_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -140,7 +298,7 @@ "unit": "ops", "custom": { "axisLabel": "TX / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -148,7 +306,86 @@ }, "overrides": [] }, - "id": 3 + "id": 3, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|tx_type)=\"[^\"]*\",?\\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": "Transaction Results by Type", @@ -177,8 +414,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (tx_type, ter_result, service_instance_id) (rate(span_calls_total{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\", ter_result=~\"$ter_result\", ter_result!=\"tesSUCCESS\"}[$__rate_interval]))", - "legendFormat": "{{tx_type}} [{{ter_result}}, {{service_instance_id}}]" + "expr": "sum by (tx_type, ter_result, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\", ter_result=~\"$ter_result\", ter_result!=\"tesSUCCESS\"}[$__rate_interval]))", + "legendFormat": "{{tx_type}} [{{ter_result}}, {{service_instance_id}}] [{{xrpl_branch}}, {{xrpl_node_role}}]" } ], "fieldConfig": { @@ -186,7 +423,7 @@ "unit": "ops", "custom": { "axisLabel": "Failed TX / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -218,8 +455,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (suppressed, service_instance_id) (rate(span_calls_total{span_name=\"tx.receive\", tx_type=~\"$tx_type\", 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]))", - "legendFormat": "Suppressed [{{suppressed}}, {{service_instance_id}}]" + "expr": "label_replace(sum by (suppressed, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{span_name=\"tx.receive\", tx_type=~\"$tx_type\", 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\", \"Suppressed $1\", \"suppressed\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -227,7 +464,7 @@ "unit": "ops", "custom": { "axisLabel": "Transactions / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -235,7 +472,86 @@ }, "overrides": [] }, - "id": 5 + "id": 5, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|suppressed)=\"[^\"]*\",?\\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": "Transaction Processing Rate", @@ -259,15 +575,15 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[$__rate_interval]))", - "legendFormat": "tx.process / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[$__rate_interval])), \"series\", \"tx.process / Sec\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"tx.receive\", tx_type=~\"$tx_type\"}[$__rate_interval]))", - "legendFormat": "tx.receive / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"tx.receive\", tx_type=~\"$tx_type\"}[$__rate_interval])), \"series\", \"tx.receive / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -275,7 +591,7 @@ "unit": "ops", "custom": { "axisLabel": "Transactions / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -283,7 +599,86 @@ }, "overrides": [] }, - "id": 6 + "id": 6, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Transaction Path Distribution", @@ -313,11 +708,90 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (local, service_instance_id) (rate(span_calls_total{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\", local=~\"$tx_origin\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[$__rate_interval]))", - "legendFormat": "Local [{{local}}, {{service_instance_id}}]" + "expr": "label_replace(sum by (local, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", local=~\"$tx_origin\", span_name=\"tx.process\", tx_type=~\"$tx_type\"}[$__rate_interval])), \"series\", \"Local $1\", \"local\", \"(.*)\")", + "legendFormat": "__auto" } ], - "id": 7 + "id": 7, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|local)=\"[^\"]*\",?\\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": "Transaction Processing Duration Heatmap", @@ -384,8 +858,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, tx_type, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.transactor\", tx_type=~\"$tx_type\"}[5m])))", - "legendFormat": "{{tx_type}} [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, tx_type, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.transactor\", tx_type=~\"$tx_type\"}[5m]))), \"series\", \"$1\", \"tx_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -393,7 +867,7 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -401,7 +875,86 @@ }, "overrides": [] }, - "id": 10 + "id": 10, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|tx_type)=\"[^\"]*\",?\\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": "TxQ Accept: Applied Ratio per Node (State Timeline)", @@ -419,17 +972,12 @@ "alignValue": "center", "rowHeight": 0.85, "tooltip": { - "mode": "multi", - "sort": "desc", - "maxHeight": 500 + "mode": "single" }, "legend": { "displayMode": "list", "placement": "bottom", "showLegend": true - }, - "tooltip": { - "mode": "single" } }, "targets": [ @@ -453,9 +1001,18 @@ "thresholds": { "mode": "absolute", "steps": [ - { "color": "red", "value": 0 }, - { "color": "yellow", "value": 0.7 }, - { "color": "green", "value": 0.9 } + { + "color": "red", + "value": 0 + }, + { + "color": "yellow", + "value": 0.7 + }, + { + "color": "green", + "value": 0.9 + } ] }, "custom": { @@ -494,8 +1051,8 @@ "datasource": { "type": "prometheus" }, - "expr": "label_replace(label_replace(label_replace(histogram_quantile(0.95, sum by (le, stage, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", 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}} [{{service_instance_id}}]" + "expr": "label_replace(label_replace(label_replace(label_replace(histogram_quantile(0.95, sum by (le, stage, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\"}[5m]))), \"stage\", \"Preflight\", \"stage\", \"preflight\"), \"stage\", \"Preclaim\", \"stage\", \"preclaim\"), \"stage\", \"Apply\", \"stage\", \"apply\"), \"series\", \"$1\", \"stage\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -503,7 +1060,7 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -511,7 +1068,86 @@ }, "overrides": [] }, - "id": 12 + "id": 12, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|stage)=\"[^\"]*\",?\\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": "Tx Apply Pipeline Failure Rate by Stage", @@ -540,8 +1176,8 @@ "datasource": { "type": "prometheus" }, - "expr": "label_replace(label_replace(label_replace(sum by (stage, service_instance_id) (rate(span_calls_total{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\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\", ter_result!~\"tesSUCCESS|\"}[$__rate_interval])), \"stage\", \"Preflight\", \"stage\", \"preflight\"), \"stage\", \"Preclaim\", \"stage\", \"preclaim\"), \"stage\", \"Apply\", \"stage\", \"apply\")", - "legendFormat": "{{stage}} [{{service_instance_id}}]" + "expr": "label_replace(label_replace(label_replace(label_replace(sum by (stage, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=~\"tx.preflight|tx.preclaim|tx.transactor\", stage=~\"$stage\", ter_result!~\"tesSUCCESS|\"}[$__rate_interval])), \"stage\", \"Preflight\", \"stage\", \"preflight\"), \"stage\", \"Preclaim\", \"stage\", \"preclaim\"), \"stage\", \"Apply\", \"stage\", \"apply\"), \"series\", \"$1\", \"stage\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -549,7 +1185,7 @@ "unit": "ops", "custom": { "axisLabel": "Failed Spans / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -557,7 +1193,86 @@ }, "overrides": [] }, - "id": 13 + "id": 13, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|stage)=\"[^\"]*\",?\\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": "Tx Apply Pipeline Latency by Type and Stage (p95)", @@ -586,8 +1301,8 @@ "datasource": { "type": "prometheus" }, - "expr": "label_replace(label_replace(label_replace(histogram_quantile(0.95, sum by (le, tx_type, stage, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", 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}}, {{service_instance_id}}]" + "expr": "label_replace(label_replace(label_replace(histogram_quantile(0.95, sum by (le, tx_type, stage, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", 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}}, {{service_instance_id}}] [{{xrpl_branch}}, {{xrpl_node_role}}]" } ], "fieldConfig": { @@ -595,7 +1310,7 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -627,8 +1342,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.apply\"}[5m])))", - "legendFormat": "tx.apply [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"tx.apply\"}[5m]))), \"series\", \"tx.apply\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -636,7 +1351,7 @@ "unit": "ms", "custom": { "axisLabel": "Latency (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -644,7 +1359,86 @@ }, "overrides": [] }, - "id": 15 + "id": 15, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "TxQ Enqueue Rate by Transaction Type", @@ -668,8 +1462,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (tx_type, service_instance_id) (rate(span_calls_total{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\", span_name=\"txq.enqueue\"}[$__rate_interval]))", - "legendFormat": "{{tx_type}} [{{service_instance_id}}]" + "expr": "label_replace(sum by (tx_type, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"txq.enqueue\"}[$__rate_interval])), \"series\", \"$1\", \"tx_type\", \"(.*)\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -677,7 +1471,7 @@ "unit": "ops", "custom": { "axisLabel": "Enqueues / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -685,7 +1479,86 @@ }, "overrides": [] }, - "id": 16 + "id": 16, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type|tx_type)=\"[^\"]*\",?\\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": "Queue Bypass Ratio (Direct Apply vs Enqueue)", @@ -709,8 +1582,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"txq.apply_direct\"}[$__rate_interval])) / clamp_min(sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"txq.apply_direct\"}[$__rate_interval])) + sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"txq.enqueue\"}[$__rate_interval])), 1)", - "legendFormat": "Direct-Apply Fraction [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"txq.apply_direct\"}[$__rate_interval])) / clamp_min(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"txq.apply_direct\"}[$__rate_interval])) + sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"txq.enqueue\"}[$__rate_interval])), 1), \"series\", \"Direct-Apply Fraction\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -718,7 +1591,7 @@ "unit": "percentunit", "custom": { "axisLabel": "Bypass Fraction", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -726,7 +1599,86 @@ }, "overrides": [] }, - "id": 18 + "id": 18, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Queue Accept (Drain) Duration per Ledger", @@ -750,8 +1702,8 @@ "datasource": { "type": "prometheus" }, - "expr": "histogram_quantile(0.95, sum by (le, service_instance_id) (rate(span_duration_milliseconds_bucket{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\", span_name=\"txq.accept\"}[5m])))", - "legendFormat": "Drain [{{service_instance_id}}]" + "expr": "label_replace(histogram_quantile(0.95, sum by (le, service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_duration_milliseconds_bucket{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\", span_name=\"txq.accept\"}[5m]))), \"series\", \"Drain\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -759,7 +1711,7 @@ "unit": "ms", "custom": { "axisLabel": "Duration (ms)", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -767,7 +1719,86 @@ }, "overrides": [] }, - "id": 19 + "id": 19, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Queue Cleanup Rate (Expired Entries)", @@ -791,8 +1822,8 @@ "datasource": { "type": "prometheus" }, - "expr": "sum by (service_instance_id) (rate(span_calls_total{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\", span_name=\"txq.cleanup\"}[$__rate_interval]))", - "legendFormat": "Cleanups / Sec [{{service_instance_id}}]" + "expr": "label_replace(sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(span_calls_total{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\", span_name=\"txq.cleanup\"}[$__rate_interval])), \"series\", \"Cleanups / Sec\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -800,7 +1831,7 @@ "unit": "ops", "custom": { "axisLabel": "Cleanups / Sec", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -808,7 +1839,86 @@ }, "overrides": [] }, - "id": 20 + "id": 20, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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, diff --git a/docker/telemetry/grafana/dashboards/validator-health.json b/docker/telemetry/grafana/dashboards/validator-health.json index 101915cc86..04a5cae7f5 100644 --- a/docker/telemetry/grafana/dashboards/validator-health.json +++ b/docker/telemetry/grafana/dashboards/validator-health.json @@ -42,8 +42,8 @@ "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"agreement_pct_1h\",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\"}", - "legendFormat": "Agreement 1h [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"agreement_pct_1h\",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\"}, \"series\", \"Agreement 1h\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -70,7 +70,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Agreement % (24h)", @@ -93,8 +172,8 @@ "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"agreement_pct_24h\",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\"}", - "legendFormat": "Agreement 24h [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"agreement_pct_24h\",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\"}, \"series\", \"Agreement 24h\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -121,7 +200,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Agreements vs Missed (1h)", @@ -146,15 +304,15 @@ "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"agreements_1h\",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\"}", - "legendFormat": "Agreements 1h [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"agreements_1h\",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\"}, \"series\", \"Agreements 1h\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"missed_1h\",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\"}", - "legendFormat": "Missed 1h [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"missed_1h\",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\"}, \"series\", \"Missed 1h\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -187,7 +345,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Agreements vs Missed (24h)", @@ -212,15 +449,15 @@ "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"agreements_24h\",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\"}", - "legendFormat": "Agreements 24h [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"agreements_24h\",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\"}, \"series\", \"Agreements 24h\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"missed_24h\",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\"}", - "legendFormat": "Missed 24h [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"missed_24h\",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\"}, \"series\", \"Missed 24h\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -253,7 +490,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validation Rates", @@ -288,8 +604,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(validations_sent_total{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]) * 60", - "legendFormat": "Sent/min [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_sent_total{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]) * 60, \"series\", \"Sent/min\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -314,7 +630,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Validations Checked Rate", @@ -337,8 +732,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(validations_checked_total{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]) * 60", - "legendFormat": "Checked/min [{{service_instance_id}}]" + "expr": "label_replace(rate(validations_checked_total{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]) * 60, \"series\", \"Checked/min\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -347,7 +742,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Amendment Blocked", @@ -370,8 +844,8 @@ "datasource": { "type": "prometheus" }, - "expr": "validator_health{metric=\"amendment_blocked\",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\"}", - "legendFormat": "Blocked [{{service_instance_id}}]" + "expr": "label_replace(validator_health{metric=\"amendment_blocked\",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\"}, \"series\", \"Blocked\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -412,7 +886,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "UNL Expiry (days)", @@ -435,8 +988,8 @@ "datasource": { "type": "prometheus" }, - "expr": "validator_health{metric=\"unl_expiry_days\",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\"}", - "legendFormat": "UNL Expiry [{{service_instance_id}}]" + "expr": "label_replace(validator_health{metric=\"unl_expiry_days\",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\"}, \"series\", \"UNL Expiry\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -461,7 +1014,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "UNL Blocked", @@ -484,8 +1116,8 @@ "datasource": { "type": "prometheus" }, - "expr": "validator_health{metric=\"unl_blocked\",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\"}", - "legendFormat": "UNL Blocked [{{service_instance_id}}]" + "expr": "label_replace(validator_health{metric=\"unl_blocked\",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\"}, \"series\", \"UNL Blocked\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -526,7 +1158,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Agreement/Missed Counters (Rate)", @@ -549,15 +1260,15 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(validation_agreements_total{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]) * 60", - "legendFormat": "Agreements/min [{{service_instance_id}}]" + "expr": "label_replace(rate(validation_agreements_total{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]) * 60, \"series\", \"Agreements/min\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "rate(validation_missed_total{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]) * 60", - "legendFormat": "Missed/min [{{service_instance_id}}]" + "expr": "label_replace(rate(validation_missed_total{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]) * 60, \"series\", \"Missed/min\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -568,7 +1279,7 @@ "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -594,7 +1305,86 @@ ] } ] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Server State & Consensus", @@ -629,8 +1419,8 @@ "datasource": { "type": "prometheus" }, - "expr": "validator_health{metric=\"validation_quorum\",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\"}", - "legendFormat": "Quorum [{{service_instance_id}}]" + "expr": "label_replace(validator_health{metric=\"validation_quorum\",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\"}, \"series\", \"Quorum\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -639,7 +1429,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "State Value Timeline", @@ -662,8 +1531,8 @@ "datasource": { "type": "prometheus" }, - "expr": "state_tracking{metric=\"state_value\",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\"}", - "legendFormat": "State [{{service_instance_id}}]" + "expr": "label_replace(state_tracking{metric=\"state_value\",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\"}, \"series\", \"State\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -674,7 +1543,7 @@ "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 @@ -684,7 +1553,86 @@ } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Time in Current State", @@ -707,8 +1655,8 @@ "datasource": { "type": "prometheus" }, - "expr": "state_tracking{metric=\"time_in_current_state_seconds\",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\"}", - "legendFormat": "Time in State [{{service_instance_id}}]" + "expr": "label_replace(state_tracking{metric=\"time_in_current_state_seconds\",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\"}, \"series\", \"Time in State\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -717,7 +1665,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "State Changes Rate", @@ -740,8 +1767,8 @@ "datasource": { "type": "prometheus" }, - "expr": "3600 * sum by (service_instance_id) (rate(state_changes_total{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]))", - "legendFormat": "Changes/hr [{{service_instance_id}}]" + "expr": "label_replace(3600 * sum by (service_instance_id, xrpl_branch, xrpl_node_role) (rate(state_changes_total{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\", \"Changes/hr\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -766,7 +1793,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Ledgers Closed Rate", @@ -789,8 +1895,8 @@ "datasource": { "type": "prometheus" }, - "expr": "rate(ledgers_closed_total{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]) * 60", - "legendFormat": "Closed/min [{{service_instance_id}}]" + "expr": "label_replace(rate(ledgers_closed_total{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]) * 60, \"series\", \"Closed/min\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -815,7 +1921,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Agreement % (7d)", @@ -838,8 +2023,8 @@ "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"agreement_pct_7d\",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\"}", - "legendFormat": "Agreement 7d [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"agreement_pct_7d\",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\"}, \"series\", \"Agreement 7d\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -866,7 +2051,86 @@ "custom": {} }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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": "Agreements vs Missed (7d)", @@ -889,15 +2153,15 @@ "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"agreements_7d\",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\"}", - "legendFormat": "Agreements 7d [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"agreements_7d\",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\"}, \"series\", \"Agreements 7d\", \"\", \"\")", + "legendFormat": "__auto" }, { "datasource": { "type": "prometheus" }, - "expr": "validation_agreement{metric=\"missed_7d\",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\"}", - "legendFormat": "Missed 7d [{{service_instance_id}}]" + "expr": "label_replace(validation_agreement{metric=\"missed_7d\",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\"}, \"series\", \"Missed 7d\", \"\", \"\")", + "legendFormat": "__auto" } ], "fieldConfig": { @@ -905,14 +2169,93 @@ "unit": "short", "custom": { "axisLabel": "Count", - "spanNulls": true, + "spanNulls": 1800000, "insertNulls": false, "showPoints": "auto", "pointSize": 3 } }, "overrides": [] - } + }, + "transformations": [ + { + "id": "renameByRegex", + "options": { + "regex": "/\\b(?:__name__|job|metric|service_name|service_version|deployment_environment|instance|xrpl_network_type)=\"[^\"]*\",?\\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,