diff --git a/docker/telemetry/grafana/dashboards/ledger-data-sync.json b/docker/telemetry/grafana/dashboards/ledger-data-sync.json index 71e2cb523c..b841c04920 100644 --- a/docker/telemetry/grafana/dashboards/ledger-data-sync.json +++ b/docker/telemetry/grafana/dashboards/ledger-data-sync.json @@ -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, diff --git a/docker/telemetry/grafana/dashboards/network-traffic.json b/docker/telemetry/grafana/dashboards/network-traffic.json index 984e193eb9..2a764dcb52 100644 --- a/docker/telemetry/grafana/dashboards/network-traffic.json +++ b/docker/telemetry/grafana/dashboards/network-traffic.json @@ -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, diff --git a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json index ea408f3278..a86b304741 100644 --- a/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json +++ b/docker/telemetry/grafana/dashboards/overlay-traffic-detail.json @@ -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, diff --git a/docker/telemetry/otel-collector-config.yaml b/docker/telemetry/otel-collector-config.yaml index d0e231f6d6..8df769316a 100644 --- a/docker/telemetry/otel-collector-config.yaml +++ b/docker/telemetry/otel-collector-config.yaml @@ -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 "" 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 "" 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: