Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill

This commit is contained in:
Pratik Mankawde
2026-07-14 19:08:53 +01:00
4 changed files with 82 additions and 370 deletions

View File

@@ -42,7 +42,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -54,16 +54,7 @@
},
"overrides": []
},
"id": 1,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 1
},
{
"title": "Ledger Data \u2014 Transaction",
@@ -110,7 +101,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -122,16 +113,7 @@
},
"overrides": []
},
"id": 2,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 2
},
{
"title": "Ledger Data \u2014 Account State",
@@ -166,7 +148,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -178,16 +160,7 @@
},
"overrides": []
},
"id": 3,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 3
},
{
"title": "Ledger Traffic \u2014 Ledger",
@@ -222,7 +195,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -234,16 +207,7 @@
},
"overrides": []
},
"id": 4,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 4
},
{
"title": "Ledger Traffic \u2014 Transaction",
@@ -290,7 +254,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -302,16 +266,7 @@
},
"overrides": []
},
"id": 5,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 5
},
{
"title": "Ledger Traffic \u2014 Account State",
@@ -346,7 +301,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -358,16 +313,7 @@
},
"overrides": []
},
"id": 6,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 6
},
{
"title": "GetObject \u2014 Ledger",
@@ -402,7 +348,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -414,16 +360,7 @@
},
"overrides": []
},
"id": 7,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 7
},
{
"title": "GetObject \u2014 Transaction",
@@ -470,7 +407,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -482,16 +419,7 @@
},
"overrides": []
},
"id": 8,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 8
},
{
"title": "GetObject \u2014 Account State",
@@ -526,7 +454,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -538,16 +466,7 @@
},
"overrides": []
},
"id": 9,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 9
},
{
"title": "GetObject Messages \u2014 Ledger",
@@ -576,7 +495,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages In",
@@ -588,16 +507,7 @@
},
"overrides": []
},
"id": 10,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 10
},
{
"title": "GetObject Messages \u2014 Transaction",
@@ -632,7 +542,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages In",
@@ -644,16 +554,7 @@
},
"overrides": []
},
"id": 11,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 11
},
{
"title": "GetObject Messages \u2014 Account State",
@@ -682,7 +583,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages In",
@@ -694,16 +595,7 @@
},
"overrides": []
},
"id": 12,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 12
},
{
"title": "GetObject Messages \u2014 Specials",
@@ -744,7 +636,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages In",
@@ -756,16 +648,7 @@
},
"overrides": []
},
"id": 13,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 13
},
{
"title": "GetObject \u2014 Specials",
@@ -830,7 +713,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes In",
@@ -842,16 +725,7 @@
},
"overrides": []
},
"id": 14,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 14
},
{
"title": "Overlay Traffic Heatmap (All Categories, Bytes In)",
@@ -887,7 +761,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "decbytes",
"thresholds": {
"mode": "absolute",
@@ -909,16 +783,7 @@
},
"overrides": []
},
"id": 15,
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
"id": 15
}
],
"schemaVersion": 39,

View File

@@ -42,7 +42,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "short",
"custom": {
"axisLabel": "Peers",
@@ -53,16 +53,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Peer Disconnects",
@@ -91,7 +82,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "short",
"custom": {
"axisLabel": "Disconnects per interval",
@@ -102,16 +93,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Total Network Bytes",
@@ -146,7 +128,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes",
@@ -157,16 +139,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Total Network Messages",
@@ -201,7 +174,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages",
@@ -212,16 +185,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Transaction Traffic",
@@ -262,7 +226,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages",
@@ -273,16 +237,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Proposal Traffic",
@@ -329,7 +284,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages",
@@ -340,16 +295,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Validation Traffic",
@@ -396,7 +342,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages",
@@ -407,16 +353,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Overlay Traffic by Category (Bytes In)",
@@ -772,7 +709,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Throughput",
@@ -783,16 +720,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "All Traffic Categories (Detail)",
@@ -821,7 +749,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Throughput",
@@ -832,16 +760,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
}
],
"schemaVersion": 39,

View File

@@ -66,7 +66,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages",
@@ -77,16 +77,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Overhead Traffic Breakdown (Bytes)",
@@ -145,7 +136,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes",
@@ -156,16 +147,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Validator List Traffic",
@@ -212,7 +194,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Count",
@@ -240,16 +222,7 @@
]
}
]
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Set Get/Share Traffic (Bytes)",
@@ -296,7 +269,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes",
@@ -307,16 +280,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Have/Requested Transactions (Messages)",
@@ -363,7 +327,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "cps",
"custom": {
"axisLabel": "Messages",
@@ -374,16 +338,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Unknown / Unclassified Traffic",
@@ -430,7 +385,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "short",
"custom": {
"axisLabel": "Count",
@@ -458,16 +413,7 @@
]
}
]
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Proof Path Traffic",
@@ -514,7 +460,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes",
@@ -525,16 +471,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
},
{
"title": "Replay Delta Traffic",
@@ -581,7 +518,7 @@
],
"fieldConfig": {
"defaults": {
"displayName": "${__field.labels.series} [${__field.labels.resource_group}] [${__field.labels.iac_group}]",
"displayName": "${__field.labels.series} ${__field.labels.resource_group} ${__field.labels.iac_group}",
"unit": "Bps",
"custom": {
"axisLabel": "Bytes",
@@ -592,16 +529,7 @@
}
},
"overrides": []
},
"transformations": [
{
"id": "renameByRegex",
"options": {
"regex": "/\\s*\\[\\]/g",
"renamePattern": ""
}
}
]
}
}
],
"schemaVersion": 39,

View File

@@ -109,28 +109,28 @@ processors:
- key: pathfind_dest_account
action: hash
# Build grouped legend labels from the tier / perf-iac resource attributes so
# dashboards reference one pre-built label per group instead of a per-panel
# renameByRegex chain. resource_to_telemetry_conversion (below) promotes these
# resource attributes to Prometheus labels automatically.
# - iac_group: the perf-iac branch/role/work-item. These three are stamped
# together by the perf-iac pipeline (all present, or all absent), so one
# guard covers them. Left UNSET outside perf runs -> Prometheus drops the
# empty label -> the dashboard legend shows nothing for it.
# - resource_group: node id, optionally suffixed with network type. The id
# is always present; network may be absent, so it is appended separately
# to avoid a trailing separator.
# Concat is guarded on presence (!= nil and != "") because OTTL Concat renders
# the literal text "<nil>" for an absent attribute and would emit a stray
# separator for an empty one. The perf-iac collector stamps these attributes
# with an empty-string default when a run has no work item, so the empty-string
# check matters, not just the nil check.
# dashboards reference one pre-built label per group. resource_to_telemetry_
# conversion (below) promotes these resource attributes to Prometheus labels.
# The BRACKETS and comma separators are baked into the label VALUE here (e.g.
# "[node, mainnet]") rather than added in the dashboard Display name. This is
# deliberate: a Display name template like "... [${__field.labels.iac_group}]"
# would render an empty "[]" when the label is absent, and Grafana's
# renameByRegex transform runs on the pre-interpolation template so it cannot
# strip that "[]". Baking the brackets into the value means an absent group is
# simply an absent label -> the Display name renders nothing for it.
# - iac_group: "[branch, role, work-item]", built only when all three are
# present (perf runs). Left UNSET otherwise.
# - resource_group: "[node]" or "[node, network]" when a network is present.
# Guards check != nil and != "" because OTTL Concat renders "<nil>" for an
# absent attribute, and the perf-iac collector stamps these with an empty-string
# default outside a comparison run.
transform/legendgroups:
metric_statements:
- context: resource
statements:
- set(attributes["iac_group"], Concat([attributes["xrpl.branch"], attributes["xrpl.node.role"], attributes["xrpl.work.item"]], "-")) where attributes["xrpl.branch"] != nil and attributes["xrpl.branch"] != "" and attributes["xrpl.node.role"] != nil and attributes["xrpl.node.role"] != "" and attributes["xrpl.work.item"] != nil and attributes["xrpl.work.item"] != ""
- set(attributes["resource_group"], attributes["service.instance.id"]) where attributes["service.instance.id"] != nil and attributes["service.instance.id"] != ""
- set(attributes["resource_group"], Concat([attributes["resource_group"], attributes["xrpl.network.type"]], "-")) where attributes["resource_group"] != nil and attributes["xrpl.network.type"] != nil and attributes["xrpl.network.type"] != ""
- set(attributes["iac_group"], Concat(["[", Concat([attributes["xrpl.branch"], attributes["xrpl.node.role"], attributes["xrpl.work.item"]], ", "), "]"], "")) where attributes["xrpl.branch"] != nil and attributes["xrpl.branch"] != "" and attributes["xrpl.node.role"] != nil and attributes["xrpl.node.role"] != "" and attributes["xrpl.work.item"] != nil and attributes["xrpl.work.item"] != ""
- set(attributes["resource_group"], Concat(["[", attributes["service.instance.id"], "]"], "")) where attributes["service.instance.id"] != nil and attributes["service.instance.id"] != ""
- set(attributes["resource_group"], Concat(["[", attributes["service.instance.id"], ", ", attributes["xrpl.network.type"], "]"], "")) where attributes["service.instance.id"] != nil and attributes["service.instance.id"] != "" and attributes["xrpl.network.type"] != nil and attributes["xrpl.network.type"] != ""
connectors:
spanmetrics: