From 32f14748778542974d9b57cef0b3bb75c4be0f71 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Thu, 30 Jul 2026 11:33:16 +0200 Subject: [PATCH 01/12] STAC-25469: language field in service + service-instance highlight --- .../open-telemetry-0.1.1-cli-test.10000.sts | Bin 0 -> 70655 bytes .../presentations/service-instances.sty | 6 ++++++ .../settings/presentations/services.sty | 6 ++++++ stackpacks/open-telemetry/stackpack.yaml | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 stackpacks/open-telemetry-0.1.1-cli-test.10000.sts diff --git a/stackpacks/open-telemetry-0.1.1-cli-test.10000.sts b/stackpacks/open-telemetry-0.1.1-cli-test.10000.sts new file mode 100644 index 0000000000000000000000000000000000000000..475c0ad29874334d9c9ee003b445200cd221f45a GIT binary patch literal 70655 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 n|Io literal 0 HcmV?d00001 diff --git a/stackpacks/open-telemetry/settings/presentations/service-instances.sty b/stackpacks/open-telemetry/settings/presentations/service-instances.sty index 4f75d3b..bc7f826 100644 --- a/stackpacks/open-telemetry/settings/presentations/service-instances.sty +++ b/stackpacks/open-telemetry/settings/presentations/service-instances.sty @@ -107,6 +107,12 @@ nodes: _type: ComponentLinkProjection name: "tags.singleValue('service.name')" identifier: "'urn:opentelemetry:namespace/' + tags.singleValue('service.namespace') + ':service/' + tags.singleValue('service.name')" + - fieldId: "language" + title: "Language" + order: 80.0 + projection: + _type: TextProjection + value: "tags.singleValue('telemetry.sdk.language')" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:service-instance'" showConfiguration: false diff --git a/stackpacks/open-telemetry/settings/presentations/services.sty b/stackpacks/open-telemetry/settings/presentations/services.sty index 3a40cd2..4dad3c6 100644 --- a/stackpacks/open-telemetry/settings/presentations/services.sty +++ b/stackpacks/open-telemetry/settings/presentations/services.sty @@ -93,6 +93,12 @@ nodes: _type: ComponentLinkProjection name: tags.singleValue('service.namespace') identifier: "'urn:opentelemetry:namespace/' + tags.singleValue('service.namespace')" + - fieldId: "language" + title: "Language" + order: 82.5 + projection: + _type: TextProjection + value: "tags.singleValue('telemetry.sdk.language')" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:service'" showConfiguration: false diff --git a/stackpacks/open-telemetry/stackpack.yaml b/stackpacks/open-telemetry/stackpack.yaml index bbc1fab..a7f6778 100644 --- a/stackpacks/open-telemetry/stackpack.yaml +++ b/stackpacks/open-telemetry/stackpack.yaml @@ -1,5 +1,5 @@ name: "open-telemetry" -version: "0.1.1" +version: "0.1.2" schemaVersion: "2.0" displayName: "Open Telemetry" categories: [ "Open Telemetry" ] From 3ea240931fb64e5a08eaf13acd418f8ff7e2bc80 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Thu, 30 Jul 2026 11:56:13 +0200 Subject: [PATCH 02/12] STAC-25469: K8s cluster + namespace fields in overview/highlight for service + service instance --- .../open-telemetry-0.1.1-cli-test.10000.sts | Bin 70655 -> 0 bytes .../presentations/service-instances.sty | 31 ++++++++++++++++-- .../settings/presentations/services.sty | 31 ++++++++++++++++-- stackpacks/open-telemetry/stackpack.yaml | 2 +- 4 files changed, 59 insertions(+), 5 deletions(-) delete mode 100644 stackpacks/open-telemetry-0.1.1-cli-test.10000.sts diff --git a/stackpacks/open-telemetry-0.1.1-cli-test.10000.sts b/stackpacks/open-telemetry-0.1.1-cli-test.10000.sts deleted file mode 100644 index 475c0ad29874334d9c9ee003b445200cd221f45a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70655 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 n|Io diff --git a/stackpacks/open-telemetry/settings/presentations/service-instances.sty b/stackpacks/open-telemetry/settings/presentations/service-instances.sty index bc7f826..be643e3 100644 --- a/stackpacks/open-telemetry/settings/presentations/service-instances.sty +++ b/stackpacks/open-telemetry/settings/presentations/service-instances.sty @@ -36,6 +36,19 @@ nodes: - columnId: otel_name title: Service Instance - columnId: otel_namespace + title: OTel Namespace + - columnId: otel_k8s_namespace + title: "Kubernetes Namespace" + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" + - columnId: otel_k8s_cluster + title: "Kubernetes Cluster" + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('cluster-name')" + identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" - columnId: otel_service title: "Service" projection: @@ -91,10 +104,10 @@ nodes: - columnId: health - columnId: otel_name highlight: - title: "Otel service" + title: "OTel service" fields: - fieldId: "namespace" - title: "Namespace" + title: "OTel Namespace" order: 85.0 projection: _type: ComponentLinkProjection @@ -113,6 +126,20 @@ nodes: projection: _type: TextProjection value: "tags.singleValue('telemetry.sdk.language')" + - fieldId: "k8s_namespace" + title: "K8s Namespace" + order: 77.5 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" + - fieldId: "k8s_cluster" + title: "K8s Cluster" + order: 75.0 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('cluster-name')" + identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:service-instance'" showConfiguration: false diff --git a/stackpacks/open-telemetry/settings/presentations/services.sty b/stackpacks/open-telemetry/settings/presentations/services.sty index 4dad3c6..55412f8 100644 --- a/stackpacks/open-telemetry/settings/presentations/services.sty +++ b/stackpacks/open-telemetry/settings/presentations/services.sty @@ -35,6 +35,19 @@ nodes: - columnId: otel_name title: Service - columnId: otel_namespace + title: "OTel Namespace" + - columnId: otel_k8s_namespace + title: "Kubernetes Namespace" + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" + - columnId: otel_k8s_cluster + title: "Kubernetes Cluster" + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('cluster-name')" + identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" - columnId: otel_service_span_error_percent_summary title: Span error % projection: @@ -84,10 +97,10 @@ nodes: - columnId: health - columnId: otel_name highlight: - title: "Otel service" + title: "OTel service" fields: - fieldId: "namespace" - title: "Otel Namespace" + title: "OTel Namespace" order: 85.0 projection: _type: ComponentLinkProjection @@ -99,6 +112,20 @@ nodes: projection: _type: TextProjection value: "tags.singleValue('telemetry.sdk.language')" + - fieldId: "k8s_namespace" + title: "K8s Namespace" + order: 80.0 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" + - fieldId: "k8s_cluster" + title: "K8s Cluster" + order: 77.5 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('cluster-name')" + identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:service'" showConfiguration: false diff --git a/stackpacks/open-telemetry/stackpack.yaml b/stackpacks/open-telemetry/stackpack.yaml index a7f6778..1a0e778 100644 --- a/stackpacks/open-telemetry/stackpack.yaml +++ b/stackpacks/open-telemetry/stackpack.yaml @@ -1,5 +1,5 @@ name: "open-telemetry" -version: "0.1.2" +version: "0.1.3" schemaVersion: "2.0" displayName: "Open Telemetry" categories: [ "Open Telemetry" ] From 2ad327883b687a4f41d8b8115de2fa90e0ed0348 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Thu, 30 Jul 2026 12:18:31 +0200 Subject: [PATCH 03/12] STAC-25469: related pods <-> service instance --- .../settings/presentations/k8s-pods.sty | 19 +++++++++++++++++++ .../presentations/service-instances.sty | 6 ++++++ 2 files changed, 25 insertions(+) create mode 100644 stackpacks/open-telemetry/settings/presentations/k8s-pods.sty diff --git a/stackpacks/open-telemetry/settings/presentations/k8s-pods.sty b/stackpacks/open-telemetry/settings/presentations/k8s-pods.sty new file mode 100644 index 0000000..c67f1c5 --- /dev/null +++ b/stackpacks/open-telemetry/settings/presentations/k8s-pods.sty @@ -0,0 +1,19 @@ +nodes: + - _type: ComponentPresentation + name: "Otel Pod Extension" + description: "Extends the Pod presentation for OTel pods with related service instances" + identifier: urn:stackpack:open-telemetry:component-presentation:pod + binding: + _type: ComponentPresentationQueryBinding + query: (label = "stackpack:open-telemetry" and type = "pod") + rank: + specificity: 10 + presentation: + highlight: + relatedResources: + - resourceId: "otel_pod_service_instances" + title: "Related service instances" + order: 1.0 + topologyQuery: >- + type = "otel service instance" AND label = "cluster-name:${tags.singleValue('cluster-name')}" AND label = "namespace:${tags.singleValue('namespace')}" + presentationIdentifier: "urn:stackpack:open-telemetry:component-presentation:service-instance" diff --git a/stackpacks/open-telemetry/settings/presentations/service-instances.sty b/stackpacks/open-telemetry/settings/presentations/service-instances.sty index be643e3..f81c9f2 100644 --- a/stackpacks/open-telemetry/settings/presentations/service-instances.sty +++ b/stackpacks/open-telemetry/settings/presentations/service-instances.sty @@ -155,6 +155,12 @@ nodes: order: 1.0 topologyQuery: '(withNeighborsOf(direction = "up", components = (withNeighborsOf(direction = "both", components = (identifier = "${identifiers[0]}"), levels = "1") and type = "otel service instance") , levels = "1") and type = "otel service")' presentationIdentifier: "urn:stackpack:open-telemetry:component-presentation:service" + - resourceId: "otel_service_instance_pods" + title: "Related pods" + order: 3.0 + topologyQuery: >- + type = "pod" AND label = "cluster-name:${tags.singleValue('cluster-name')}" AND label = "namespace:${tags.singleValue('namespace')}" + presentationIdentifier: "urn:stackpack:open-telemetry:view-type:pod-link" events: showEvents: true relatedResourcesQuery: | From 4ca35277daa1b47f56b8526f988b8f9b5e4dbbde Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Thu, 30 Jul 2026 12:45:38 +0200 Subject: [PATCH 04/12] STAC-25469: related hosts <-> service instance --- .../settings/presentations/k8s-hosts.sty | 19 +++++++++++++++++++ .../presentations/service-instances.sty | 6 ++++++ 2 files changed, 25 insertions(+) create mode 100644 stackpacks/open-telemetry/settings/presentations/k8s-hosts.sty diff --git a/stackpacks/open-telemetry/settings/presentations/k8s-hosts.sty b/stackpacks/open-telemetry/settings/presentations/k8s-hosts.sty new file mode 100644 index 0000000..19549f3 --- /dev/null +++ b/stackpacks/open-telemetry/settings/presentations/k8s-hosts.sty @@ -0,0 +1,19 @@ +nodes: + - _type: ComponentPresentation + name: "Otel Host Extension" + description: "Extends the Host presentation for OTel hosts with related service instances" + identifier: urn:stackpack:open-telemetry:component-presentation:host + binding: + _type: ComponentPresentationQueryBinding + query: (label = "source-type:host") + rank: + specificity: 10 + presentation: + highlight: + relatedResources: + - resourceId: "otel_host_service_instances" + title: "Related service instances" + order: 1.0 + topologyQuery: >- + type = "otel service instance" AND label = "k8s.node.name:${name}" + presentationIdentifier: "urn:stackpack:open-telemetry:component-presentation:service-instance" diff --git a/stackpacks/open-telemetry/settings/presentations/service-instances.sty b/stackpacks/open-telemetry/settings/presentations/service-instances.sty index f81c9f2..37fce48 100644 --- a/stackpacks/open-telemetry/settings/presentations/service-instances.sty +++ b/stackpacks/open-telemetry/settings/presentations/service-instances.sty @@ -161,6 +161,12 @@ nodes: topologyQuery: >- type = "pod" AND label = "cluster-name:${tags.singleValue('cluster-name')}" AND label = "namespace:${tags.singleValue('namespace')}" presentationIdentifier: "urn:stackpack:open-telemetry:view-type:pod-link" + - resourceId: "otel_service_instance_hosts" + title: "Related hosts" + order: 4.0 + topologyQuery: >- + label = "source-type:host" AND label = "source-name:${tags.singleValue('k8s.node.name')}" + presentationIdentifier: "urn:stackpack:open-telemetry:view-type:host-link" events: showEvents: true relatedResourcesQuery: | From bffff613c3627b64a46d27c3337c906c18f8c62b Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Thu, 30 Jul 2026 12:49:30 +0200 Subject: [PATCH 05/12] STAC-25469: related pods -> service --- .../open-telemetry/settings/presentations/services.sty | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stackpacks/open-telemetry/settings/presentations/services.sty b/stackpacks/open-telemetry/settings/presentations/services.sty index 55412f8..6febd40 100644 --- a/stackpacks/open-telemetry/settings/presentations/services.sty +++ b/stackpacks/open-telemetry/settings/presentations/services.sty @@ -141,6 +141,11 @@ nodes: order: 1.0 topologyQuery: '(withNeighborsOf(direction = "up", components = (withNeighborsOf(direction = "both", components = (withNeighborsOf(direction = "down", components = (identifier = "${identifiers[0]}"), levels = "1") and type = "otel service instance"), levels = "1") and type = "otel service instance") , levels = "1") and type = "otel service")' presentationIdentifier: "urn:stackpack:open-telemetry:component-presentation:service" + - resourceId: "otel_service_pods" + title: "Related pods" + order: 3.0 + topologyQuery: '(withNeighborsOf(direction = "both", components = (withNeighborsOf(direction = "down", components = (identifier = "${identifiers[0]}"), levels = "1") and type = "otel service instance"), levels = "1")) and type = "pod"' + presentationIdentifier: "urn:stackpack:open-telemetry:view-type:pod-link" events: showEvents: true relatedResourcesQuery: | From 4d27f3d857866ca28b40d1c13c24ae20b0e65029 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Thu, 30 Jul 2026 13:14:40 +0200 Subject: [PATCH 06/12] STAC-25469: fix related pods -> service instance --- stackpacks/open-telemetry/settings/presentations/k8s-pods.sty | 2 +- .../open-telemetry/settings/presentations/service-instances.sty | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stackpacks/open-telemetry/settings/presentations/k8s-pods.sty b/stackpacks/open-telemetry/settings/presentations/k8s-pods.sty index c67f1c5..233433e 100644 --- a/stackpacks/open-telemetry/settings/presentations/k8s-pods.sty +++ b/stackpacks/open-telemetry/settings/presentations/k8s-pods.sty @@ -15,5 +15,5 @@ nodes: title: "Related service instances" order: 1.0 topologyQuery: >- - type = "otel service instance" AND label = "cluster-name:${tags.singleValue('cluster-name')}" AND label = "namespace:${tags.singleValue('namespace')}" + type = "otel service instance" AND label = "k8s.pod.name:${name}" presentationIdentifier: "urn:stackpack:open-telemetry:component-presentation:service-instance" diff --git a/stackpacks/open-telemetry/settings/presentations/service-instances.sty b/stackpacks/open-telemetry/settings/presentations/service-instances.sty index 37fce48..adbbe4f 100644 --- a/stackpacks/open-telemetry/settings/presentations/service-instances.sty +++ b/stackpacks/open-telemetry/settings/presentations/service-instances.sty @@ -159,7 +159,7 @@ nodes: title: "Related pods" order: 3.0 topologyQuery: >- - type = "pod" AND label = "cluster-name:${tags.singleValue('cluster-name')}" AND label = "namespace:${tags.singleValue('namespace')}" + label = "source-name:${tags.singleValue('k8s.pod.name')}" presentationIdentifier: "urn:stackpack:open-telemetry:view-type:pod-link" - resourceId: "otel_service_instance_hosts" title: "Related hosts" From 07f81caf23f23aff99c5145e01eb531de0914427 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Fri, 31 Jul 2026 14:21:53 +0200 Subject: [PATCH 07/12] STAC-25469: enrich database attributes --- .../settings/component-mappings/databases.sty | 44 +++++++++++++++++++ .../settings/presentations/databases.sty | 22 +++++++++- stackpacks/open-telemetry/stackpack.yaml | 2 +- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/stackpacks/open-telemetry/settings/component-mappings/databases.sty b/stackpacks/open-telemetry/settings/component-mappings/databases.sty index f9006da..613dc2b 100644 --- a/stackpacks/open-telemetry/settings/component-mappings/databases.sty +++ b/stackpacks/open-telemetry/settings/component-mappings/databases.sty @@ -42,3 +42,47 @@ nodes: expireAfter: 900000 rank: specificity: 200 + - _type: "OtelComponentMapping" + name: "Database (span enrichment DB system)" + description: "Enriches database components with db.system and connection details from spans" + identifier: "urn:stackpack:open-telemetry:otel-component-mapping:database-span-enrichment-db-system" + input: + signal: + - "TRACES" + resource: + condition: "'service.namespace' in resource.attributes && 'service.name' in resource.attributes" + scope: + span: + action: "'CREATE'" + condition: "'db.system' in span.attributes" + vars: + - name: "clientServiceNamespace" + value: "resource.attributes['service.namespace']" + - name: "client" + value: "resource.attributes['service.name']" + - name: "server" + value: >- + 'peer.service' in span.attributes ? span.attributes['peer.service'] : + 'db.name' in span.attributes ? span.attributes['db.name'] : + span.attributes['db.system'] + output: + identifier: >- + 'urn:opentelemetry:namespace/' + vars.clientServiceNamespace + ':service/' + vars.client + ':database/span/' + vars.server + name: "vars.server" + typeName: "'database'" + required: + additionalIdentifiers: + - >- + 'urn:opentelemetry:namespace/' + vars.clientServiceNamespace + ':service/' + vars.client + ':database/' + vars.server + tags: + - source: "'open-telemetry'" + target: "stackpack" + - source: "resource.attributes" + pattern: "(.*)" + target: "${1}" + - source: "span.attributes" + pattern: "db.(.*)" + target: "db.${1}" + expireAfter: 900000 + rank: + specificity: 190 diff --git a/stackpacks/open-telemetry/settings/presentations/databases.sty b/stackpacks/open-telemetry/settings/presentations/databases.sty index ded5cb4..60c562b 100644 --- a/stackpacks/open-telemetry/settings/presentations/databases.sty +++ b/stackpacks/open-telemetry/settings/presentations/databases.sty @@ -77,7 +77,25 @@ nodes: - columnId: otel_name highlight: title: "Otel database" - fields: [] + fields: + - fieldId: otel_db_system + title: "Database type" + order: 1 + projection: + _type: TextProjection + value: "tags.singleValue('db.system')" + - fieldId: otel_db_server_address + title: "Server address" + order: 2 + projection: + _type: TextProjection + value: "'server.address' in tags ? tags.singleValue('server.address') : 'net.peer.name' in tags ? tags.singleValue('net.peer.name') : ''" + - fieldId: otel_db_server_port + title: "Server port" + order: 3 + projection: + _type: TextProjection + value: "'server.port' in tags ? tags.singleValue('server.port') : 'net.peer.port' in tags ? tags.singleValue('net.peer.port') : ''" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:database'" showConfiguration: false @@ -88,7 +106,7 @@ nodes: order: 2.0 topologyQuery: '(withNeighborsOf(direction = "both", components = (identifier = "${identifiers[0]}"), levels = "1")) and type = "otel service instance"' presentationIdentifier: "urn:stackpack:open-telemetry:component-presentation:service-instance" - - resourceId: "otel_datbase_services" + - resourceId: "otel_database_services" title: "Related services" order: 1.0 topologyQuery: '(withNeighborsOf(direction = "up", components = (withNeighborsOf(direction = "both", components = (identifier = "${identifiers[0]}"), levels = "1") and type = "otel service instance") , levels = "1") and type = "otel service")' diff --git a/stackpacks/open-telemetry/stackpack.yaml b/stackpacks/open-telemetry/stackpack.yaml index 1a0e778..5be5b50 100644 --- a/stackpacks/open-telemetry/stackpack.yaml +++ b/stackpacks/open-telemetry/stackpack.yaml @@ -1,5 +1,5 @@ name: "open-telemetry" -version: "0.1.3" +version: "0.1.4" schemaVersion: "2.0" displayName: "Open Telemetry" categories: [ "Open Telemetry" ] From 6c4cbcdb63d1b6cc4a367bdf66a29ce5facc4d2d Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Fri, 31 Jul 2026 18:15:02 +0200 Subject: [PATCH 08/12] STAC-25469: add tracesPerspective to service and service instance --- .../settings/presentations/service-instances.sty | 7 +++++++ .../open-telemetry/settings/presentations/services.sty | 6 ++++++ stackpacks/open-telemetry/stackpack.yaml | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/stackpacks/open-telemetry/settings/presentations/service-instances.sty b/stackpacks/open-telemetry/settings/presentations/service-instances.sty index adbbe4f..1022dc5 100644 --- a/stackpacks/open-telemetry/settings/presentations/service-instances.sty +++ b/stackpacks/open-telemetry/settings/presentations/service-instances.sty @@ -224,6 +224,13 @@ nodes: }[${__rate_interval}])) by (le)) / 1000) metricId: service-instance-spans-duration + tracesPerspective: + showTraces: true + spanFilter: + attributes: + service.namespace: ["${tags.singleValue('service.namespace')}"] + service.name: ["${tags.singleValue('service.name')}"] + service.instance.id: ["${tags.singleValue('service.instance.id')}"] metricPerspective: tabs: - diff --git a/stackpacks/open-telemetry/settings/presentations/services.sty b/stackpacks/open-telemetry/settings/presentations/services.sty index 6febd40..8ce2f37 100644 --- a/stackpacks/open-telemetry/settings/presentations/services.sty +++ b/stackpacks/open-telemetry/settings/presentations/services.sty @@ -213,6 +213,12 @@ nodes: service_namespace="${tags.singleValue('service.namespace')}", service_name="${name}" }[${__rate_interval}])) metricId: service-spans-rate + tracesPerspective: + showTraces: true + spanFilter: + attributes: + service.namespace: ["${tags.singleValue('service.namespace')}"] + service.name: ["${name}"] metricPerspective: tabs: - diff --git a/stackpacks/open-telemetry/stackpack.yaml b/stackpacks/open-telemetry/stackpack.yaml index 5be5b50..a7f6778 100644 --- a/stackpacks/open-telemetry/stackpack.yaml +++ b/stackpacks/open-telemetry/stackpack.yaml @@ -1,5 +1,5 @@ name: "open-telemetry" -version: "0.1.4" +version: "0.1.2" schemaVersion: "2.0" displayName: "Open Telemetry" categories: [ "Open Telemetry" ] From a97df9e343a2e0ebdb0d81d65d5575bdfdbbc0d2 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Mon, 3 Aug 2026 16:36:50 +0200 Subject: [PATCH 09/12] STAC-2549: process review comments Fix column/field ordering, tracesPerspective for databases --- .../settings/presentations/databases.sty | 7 ++++ .../presentations/service-instances.sty | 38 +++++++++---------- .../settings/presentations/services.sty | 26 ++++++------- 3 files changed, 39 insertions(+), 32 deletions(-) diff --git a/stackpacks/open-telemetry/settings/presentations/databases.sty b/stackpacks/open-telemetry/settings/presentations/databases.sty index 60c562b..f098c20 100644 --- a/stackpacks/open-telemetry/settings/presentations/databases.sty +++ b/stackpacks/open-telemetry/settings/presentations/databases.sty @@ -160,6 +160,13 @@ nodes: client_service_namespace="${tags.singleValue('service.namespace')}", client="${tags.singleValue('service.name')}", server="${name}" }[${__rate_interval}])) by (client_service_namespace, client, server, le)) metricId: database-spans-duration + tracesPerspective: + showTraces: true + spanFilter: + attributes: + service.namespace: ["${tags.singleValue('service.namespace')}"] + service.name: ["${tags.singleValue('service.name')}"] + db.system: ["${tags.singleValue('db.system')}"] metricPerspective: tabs: - diff --git a/stackpacks/open-telemetry/settings/presentations/service-instances.sty b/stackpacks/open-telemetry/settings/presentations/service-instances.sty index 1022dc5..d4dcb4c 100644 --- a/stackpacks/open-telemetry/settings/presentations/service-instances.sty +++ b/stackpacks/open-telemetry/settings/presentations/service-instances.sty @@ -37,24 +37,24 @@ nodes: title: Service Instance - columnId: otel_namespace title: OTel Namespace - - columnId: otel_k8s_namespace - title: "Kubernetes Namespace" + - columnId: otel_service + title: "Service" projection: - _type: ComponentLinkProjection - name: "tags.singleValue('namespace')" - identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" + _type: "ComponentLinkProjection" + name: "tags.singleValue('service.name')" + identifier: "'urn:opentelemetry:namespace/' + tags.singleValue('service.namespace') + ':service/' + tags.singleValue('service.name')" - columnId: otel_k8s_cluster title: "Kubernetes Cluster" projection: _type: ComponentLinkProjection name: "tags.singleValue('cluster-name')" identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" - - columnId: otel_service - title: "Service" + - columnId: otel_k8s_namespace + title: "Kubernetes Namespace" projection: - _type: "ComponentLinkProjection" - name: "tags.singleValue('service.name')" - identifier: "'urn:opentelemetry:namespace/' + tags.singleValue('service.namespace') + ':service/' + tags.singleValue('service.name')" + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" - columnId: otel_service_instance_span_error_percent_summary title: Span error % projection: @@ -122,24 +122,24 @@ nodes: identifier: "'urn:opentelemetry:namespace/' + tags.singleValue('service.namespace') + ':service/' + tags.singleValue('service.name')" - fieldId: "language" title: "Language" - order: 80.0 + order: 81.0 projection: _type: TextProjection value: "tags.singleValue('telemetry.sdk.language')" - - fieldId: "k8s_namespace" - title: "K8s Namespace" - order: 77.5 - projection: - _type: ComponentLinkProjection - name: "tags.singleValue('namespace')" - identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" - fieldId: "k8s_cluster" title: "K8s Cluster" - order: 75.0 + order: 77.5 projection: _type: ComponentLinkProjection name: "tags.singleValue('cluster-name')" identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" + - fieldId: "k8s_namespace" + title: "K8s Namespace" + order: 75.0 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:service-instance'" showConfiguration: false diff --git a/stackpacks/open-telemetry/settings/presentations/services.sty b/stackpacks/open-telemetry/settings/presentations/services.sty index 8ce2f37..96cd696 100644 --- a/stackpacks/open-telemetry/settings/presentations/services.sty +++ b/stackpacks/open-telemetry/settings/presentations/services.sty @@ -36,18 +36,18 @@ nodes: title: Service - columnId: otel_namespace title: "OTel Namespace" - - columnId: otel_k8s_namespace - title: "Kubernetes Namespace" - projection: - _type: ComponentLinkProjection - name: "tags.singleValue('namespace')" - identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" - columnId: otel_k8s_cluster title: "Kubernetes Cluster" projection: _type: ComponentLinkProjection name: "tags.singleValue('cluster-name')" identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" + - columnId: otel_k8s_namespace + title: "Kubernetes Namespace" + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" - columnId: otel_service_span_error_percent_summary title: Span error % projection: @@ -112,13 +112,6 @@ nodes: projection: _type: TextProjection value: "tags.singleValue('telemetry.sdk.language')" - - fieldId: "k8s_namespace" - title: "K8s Namespace" - order: 80.0 - projection: - _type: ComponentLinkProjection - name: "tags.singleValue('namespace')" - identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" - fieldId: "k8s_cluster" title: "K8s Cluster" order: 77.5 @@ -126,6 +119,13 @@ nodes: _type: ComponentLinkProjection name: "tags.singleValue('cluster-name')" identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" + - fieldId: "k8s_namespace" + title: "K8s Namespace" + order: 75.0 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:service'" showConfiguration: false From 53e108cdc2b238a5400d3b8ced1a557ae5af1ec7 Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Mon, 3 Aug 2026 18:10:28 +0200 Subject: [PATCH 10/12] STAC-25469: db.system.name support, k8s cluster/namespace column/fields and related resources for db --- .../settings/component-mappings/databases.sty | 14 ++++- .../settings/presentations/databases.sty | 54 ++++++++++++++++--- 2 files changed, 59 insertions(+), 9 deletions(-) diff --git a/stackpacks/open-telemetry/settings/component-mappings/databases.sty b/stackpacks/open-telemetry/settings/component-mappings/databases.sty index 613dc2b..5142afc 100644 --- a/stackpacks/open-telemetry/settings/component-mappings/databases.sty +++ b/stackpacks/open-telemetry/settings/component-mappings/databases.sty @@ -44,7 +44,7 @@ nodes: specificity: 200 - _type: "OtelComponentMapping" name: "Database (span enrichment DB system)" - description: "Enriches database components with db.system and connection details from spans" + description: "Enriches database components with db.system.name and connection details from spans" identifier: "urn:stackpack:open-telemetry:otel-component-mapping:database-span-enrichment-db-system" input: signal: @@ -54,16 +54,20 @@ nodes: scope: span: action: "'CREATE'" - condition: "'db.system' in span.attributes" + condition: >- + 'db.system.name' in span.attributes || 'db.system' in span.attributes vars: - name: "clientServiceNamespace" value: "resource.attributes['service.namespace']" - name: "client" value: "resource.attributes['service.name']" + - name: "clusterName" + value: "resource.attributes['k8s.cluster.name']" - name: "server" value: >- 'peer.service' in span.attributes ? span.attributes['peer.service'] : 'db.name' in span.attributes ? span.attributes['db.name'] : + 'db.system.name' in span.attributes ? span.attributes['db.system.name'] : span.attributes['db.system'] output: identifier: >- @@ -77,12 +81,18 @@ nodes: tags: - source: "'open-telemetry'" target: "stackpack" + - source: "vars.clusterName" + target: "cluster-name" - source: "resource.attributes" pattern: "(.*)" target: "${1}" - source: "span.attributes" pattern: "db.(.*)" target: "db.${1}" + optional: + tags: + - source: "resource.attributes['k8s.namespace.name']" + target: "namespace" expireAfter: 900000 rank: specificity: 190 diff --git a/stackpacks/open-telemetry/settings/presentations/databases.sty b/stackpacks/open-telemetry/settings/presentations/databases.sty index f098c20..6c32f0a 100644 --- a/stackpacks/open-telemetry/settings/presentations/databases.sty +++ b/stackpacks/open-telemetry/settings/presentations/databases.sty @@ -12,7 +12,8 @@ nodes: icon: !icon databases.svg filters: - filterId: "otel_namespace" - - filterId: "otel_service" + - filterId: "k8s_cluster" + - filterId: "k8s_namespace" topology: groupingEnabled: true showIndirectRelations: false @@ -34,6 +35,19 @@ nodes: - columnId: "otel_name" title: "Database" - columnId: otel_namespace + title: "OTel Namespace" + - columnId: otel_k8s_cluster + title: "Kubernetes Cluster" + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('cluster-name')" + identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" + - columnId: otel_k8s_namespace + title: "Kubernetes Namespace" + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" - columnId: otel_database_span_error_rate title: Span error % projection: @@ -80,22 +94,36 @@ nodes: fields: - fieldId: otel_db_system title: "Database type" - order: 1 + order: 85.0 projection: _type: TextProjection - value: "tags.singleValue('db.system')" + value: "'db.system.name' in tags ? tags.singleValue('db.system.name') : tags.singleValue('db.system')" - fieldId: otel_db_server_address title: "Server address" - order: 2 + order: 84.0 projection: _type: TextProjection - value: "'server.address' in tags ? tags.singleValue('server.address') : 'net.peer.name' in tags ? tags.singleValue('net.peer.name') : ''" + value: "'net.peer.name' in tags ? tags.singleValue('net.peer.name') : tags.singleValue('server.address')" - fieldId: otel_db_server_port title: "Server port" - order: 3 + order: 83.0 projection: _type: TextProjection - value: "'server.port' in tags ? tags.singleValue('server.port') : 'net.peer.port' in tags ? tags.singleValue('net.peer.port') : ''" + value: "'net.peer.port' in tags ? tags.singleValue('net.peer.port') : tags.singleValue('server.port')" + - fieldId: "k8s_cluster" + title: "K8s Cluster" + order: 77.5 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('cluster-name')" + identifier: "'urn:cluster:/kubernetes:' + tags.singleValue('cluster-name')" + - fieldId: "k8s_namespace" + title: "K8s Namespace" + order: 75.0 + projection: + _type: ComponentLinkProjection + name: "tags.singleValue('namespace')" + identifier: "'urn:kubernetes:/' + tags.singleValue('cluster-name') + ':namespace/' + tags.singleValue('namespace')" provisioning: externalComponentSelector: "external.mapping.identifier == 'urn:stackpack:open-telemetry:otel-component-mapping:database'" showConfiguration: false @@ -111,6 +139,18 @@ nodes: order: 1.0 topologyQuery: '(withNeighborsOf(direction = "up", components = (withNeighborsOf(direction = "both", components = (identifier = "${identifiers[0]}"), levels = "1") and type = "otel service instance") , levels = "1") and type = "otel service")' presentationIdentifier: "urn:stackpack:open-telemetry:component-presentation:service" + - resourceId: "otel_database_pods" + title: "Related pods" + order: 3.0 + topologyQuery: >- + label = "source-name:${tags.singleValue('k8s.pod.name')}" + presentationIdentifier: "urn:stackpack:open-telemetry:view-type:pod-link" + - resourceId: "otel_database_hosts" + title: "Related hosts" + order: 4.0 + topologyQuery: >- + label = "source-type:host" AND label = "source-name:${tags.singleValue('k8s.node.name')}" + presentationIdentifier: "urn:stackpack:open-telemetry:view-type:host-link" metrics: - sectionId: traces title: "Traces" From 10aed451479e7273db887b2e251628b02e8fab3f Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Mon, 3 Aug 2026 21:02:10 +0200 Subject: [PATCH 11/12] STAC-25469: add database relation mapping based on span enrichment --- .../settings/relation-mappings/database.sty | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/stackpacks/open-telemetry/settings/relation-mappings/database.sty b/stackpacks/open-telemetry/settings/relation-mappings/database.sty index 251f68a..6c09dd2 100644 --- a/stackpacks/open-telemetry/settings/relation-mappings/database.sty +++ b/stackpacks/open-telemetry/settings/relation-mappings/database.sty @@ -41,3 +41,41 @@ nodes: typeName: "'database'" dependencyType: "'CONNECTION'" expireAfter: 900000 + - _type: "OtelRelationMapping" + name: "Database Relation (span enrichment)" + description: "Adds the service instance -> database connection from database spans, complementing the service-graph metrics relation" + identifier: "urn:stackpack:open-telemetry:otel-relation-mapping:database-span-enrichment" + input: + signal: + - "TRACES" + resource: + condition: >- + 'service.namespace' in resource.attributes && + 'service.name' in resource.attributes && + 'service.instance.id' in resource.attributes + scope: + span: + action: "'CREATE'" + condition: >- + 'db.system.name' in span.attributes || 'db.system' in span.attributes + vars: + - name: "clientServiceNamespace" + value: "resource.attributes['service.namespace']" + - name: "client" + value: "resource.attributes['service.name']" + - name: "clientServiceInstanceId" + value: "resource.attributes['service.instance.id']" + - name: "server" + value: >- + 'peer.service' in span.attributes ? span.attributes['peer.service'] : + 'db.name' in span.attributes ? span.attributes['db.name'] : + 'db.system.name' in span.attributes ? span.attributes['db.system.name'] : + span.attributes['db.system'] + output: + sourceId: >- + 'urn:opentelemetry:namespace/' + vars.clientServiceNamespace + ':service/' + vars.client + ':serviceInstance/' + vars.clientServiceInstanceId + targetId: >- + 'urn:opentelemetry:namespace/' + vars.clientServiceNamespace + ':service/' + vars.client + ':database/' + vars.server + typeName: "'database'" + dependencyType: "'CONNECTION'" + expireAfter: 900000 From 60eb67e8270110a2fa3abf025c97c7174d9aa6fe Mon Sep 17 00:00:00 2001 From: Deon Taljaard Date: Tue, 4 Aug 2026 10:24:59 +0200 Subject: [PATCH 12/12] STAC-25469: process review feedback add logical db name; also query db.namespace (legacy: db.name) --- .../settings/component-mappings/databases.sty | 14 +++++++++++++- .../settings/relation-mappings/database.sty | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/stackpacks/open-telemetry/settings/component-mappings/databases.sty b/stackpacks/open-telemetry/settings/component-mappings/databases.sty index 5142afc..2db05dd 100644 --- a/stackpacks/open-telemetry/settings/component-mappings/databases.sty +++ b/stackpacks/open-telemetry/settings/component-mappings/databases.sty @@ -66,13 +66,25 @@ nodes: - name: "server" value: >- 'peer.service' in span.attributes ? span.attributes['peer.service'] : + 'db.namespace' in span.attributes ? span.attributes['db.namespace'] : 'db.name' in span.attributes ? span.attributes['db.name'] : 'db.system.name' in span.attributes ? span.attributes['db.system.name'] : span.attributes['db.system'] + # Logical database name for display. Prefers the specific database name (db.namespace is the current + # attribute, db.name the deprecated legacy one), then the user-assigned peer service label, falling + # back to the generic DBMS product type only so the component is never nameless. Kept separate from + # `server` (identity), which leads with peer.service. + - name: "databaseName" + value: >- + 'db.namespace' in span.attributes ? span.attributes['db.namespace'] : + 'db.name' in span.attributes ? span.attributes['db.name'] : + 'peer.service' in span.attributes ? span.attributes['peer.service'] : + 'db.system.name' in span.attributes ? span.attributes['db.system.name'] : + span.attributes['db.system'] output: identifier: >- 'urn:opentelemetry:namespace/' + vars.clientServiceNamespace + ':service/' + vars.client + ':database/span/' + vars.server - name: "vars.server" + name: "vars.databaseName" typeName: "'database'" required: additionalIdentifiers: diff --git a/stackpacks/open-telemetry/settings/relation-mappings/database.sty b/stackpacks/open-telemetry/settings/relation-mappings/database.sty index 6c09dd2..d52f8c8 100644 --- a/stackpacks/open-telemetry/settings/relation-mappings/database.sty +++ b/stackpacks/open-telemetry/settings/relation-mappings/database.sty @@ -68,6 +68,7 @@ nodes: - name: "server" value: >- 'peer.service' in span.attributes ? span.attributes['peer.service'] : + 'db.namespace' in span.attributes ? span.attributes['db.namespace'] : 'db.name' in span.attributes ? span.attributes['db.name'] : 'db.system.name' in span.attributes ? span.attributes['db.system.name'] : span.attributes['db.system']