From 4804180c11a37d2ec4c762992ec8a424c140d8de Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Mon, 23 Sep 2024 12:34:45 +0200 Subject: [PATCH 1/5] Enable multi instrumentation by default Signed-off-by: Israel Blancas --- ...0-enable-multiinstrumentation-by-default.yaml | 16 ++++++++++++++++ main.go | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100755 .chloggen/3090-enable-multiinstrumentation-by-default.yaml diff --git a/.chloggen/3090-enable-multiinstrumentation-by-default.yaml b/.chloggen/3090-enable-multiinstrumentation-by-default.yaml new file mode 100755 index 0000000000..e70319c5a5 --- /dev/null +++ b/.chloggen/3090-enable-multiinstrumentation-by-default.yaml @@ -0,0 +1,16 @@ +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: 'breaking' + +# The name of the component, or a single word describing the area of concern, (e.g. collector, target allocator, auto-instrumentation, opamp, github action) +component: auto-instrumentation + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Enable multi instrumentation by default. + +# One or more tracking issues related to the change +issues: [3090] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/main.go b/main.go index a348db6496..55c754f2fb 100644 --- a/main.go +++ b/main.go @@ -151,7 +151,7 @@ func main() { "Enabling this will ensure there is only one active controller manager.") pflag.BoolVar(&createRBACPermissions, "create-rbac-permissions", false, "Automatically create RBAC permissions needed by the processors (deprecated)") pflag.BoolVar(&createOpenShiftDashboard, "openshift-create-dashboard", false, "Create an OpenShift dashboard for monitoring the OpenTelemetryCollector instances") - pflag.BoolVar(&enableMultiInstrumentation, "enable-multi-instrumentation", false, "Controls whether the operator supports multi instrumentation") + pflag.BoolVar(&enableMultiInstrumentation, "enable-multi-instrumentation", true, "Controls whether the operator supports multi instrumentation") pflag.BoolVar(&enableApacheHttpdInstrumentation, constants.FlagApacheHttpd, true, "Controls whether the operator supports Apache HTTPD auto-instrumentation") pflag.BoolVar(&enableDotNetInstrumentation, constants.FlagDotNet, true, "Controls whether the operator supports dotnet auto-instrumentation") pflag.BoolVar(&enableGoInstrumentation, constants.FlagGo, false, "Controls whether the operator supports Go auto-instrumentation") From 680b33cf98cd622d20e3df4318461ead0b55d1e2 Mon Sep 17 00:00:00 2001 From: Ishwar Kanse Date: Wed, 18 Sep 2024 11:25:30 +0530 Subject: [PATCH 2/5] Run all instrumenation tests with multi-instrumentation flag added --- .github/workflows/e2e.yaml | 4 ++-- .../01-assert.yaml | 14 ++++++++++++++ .../02-assert.yaml | 12 ++++++++++++ .../01-assert.yaml | 14 ++++++++++++++ .../02-assert.yaml | 12 ++++++++++++ 5 files changed, 54 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index b31ffa604a..3676c7e964 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -36,9 +36,9 @@ jobs: - e2e-metadata-filters include: - group: e2e-instrumentation - setup: "add-instrumentation-params prepare-e2e" + setup: "add-instrumentation-params add-multi-instrumentation-params prepare-e2e" - group: e2e-multi-instrumentation - setup: "add-multi-instrumentation-params prepare-e2e" + setup: "add-instrumentation-params add-multi-instrumentation-params prepare-e2e" - group: e2e-metadata-filters setup: "add-operator-arg OPERATOR_ARG='--annotations-filter=.*filter.out --annotations-filter=config.*.gke.io.* --labels-filter=.*filter.out' prepare-e2e" - group: e2e-automatic-rbac diff --git a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml index 1e1c7f0fc4..93ed710096 100644 --- a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml @@ -13,10 +13,12 @@ spec: - name: OTEL_NODE_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.hostIP - name: OTEL_POD_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.podIP - name: OTEL_SERVICE_NAME value: my-apache-multi @@ -38,16 +40,28 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" + - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp - env: - name: OTEL_NODE_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.hostIP - name: OTEL_POD_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.podIP - name: OTEL_SERVICE_NAME value: my-apache-multi diff --git a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml index 686504f65d..1eb9a28e0b 100644 --- a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml @@ -24,10 +24,12 @@ spec: - name: OTEL_NODE_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.hostIP - name: OTEL_POD_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.podIP - name: OTEL_SERVICE_NAME value: my-apache-multi @@ -49,6 +51,16 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" + - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp - image: rabbitmq diff --git a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml index 05b5ea6864..97b4f2df2c 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml @@ -13,10 +13,12 @@ spec: - name: OTEL_NODE_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.hostIP - name: OTEL_POD_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.podIP - name: LD_LIBRARY_PATH value: /opt:/opt/opentelemetry-webserver/agent/sdk_lib/lib @@ -40,6 +42,16 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" + - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp volumeMounts: @@ -53,10 +65,12 @@ spec: - name: OTEL_NODE_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.hostIP - name: OTEL_POD_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.podIP - name: OTEL_SERVICE_NAME value: my-nginx-multi diff --git a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml index 620fc7d27b..7794f33c5e 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml @@ -24,10 +24,12 @@ spec: - name: OTEL_NODE_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.hostIP - name: OTEL_POD_IP valueFrom: fieldRef: + apiVersion: v1 fieldPath: status.podIP - name: LD_LIBRARY_PATH value: /opt:/opt/opentelemetry-webserver/agent/sdk_lib/lib @@ -51,6 +53,16 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" + - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp volumeMounts: From 4231180ee21aad2bdbb9843fe829d916088cab90 Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Tue, 24 Sep 2024 16:42:59 +0200 Subject: [PATCH 3/5] Remove enable multiinstrumentation in e2e tests since it will be enabled by default Signed-off-by: Israel Blancas --- .github/workflows/e2e.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 3676c7e964..be5d396855 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -36,9 +36,9 @@ jobs: - e2e-metadata-filters include: - group: e2e-instrumentation - setup: "add-instrumentation-params add-multi-instrumentation-params prepare-e2e" + setup: "add-instrumentation-params prepare-e2e" - group: e2e-multi-instrumentation - setup: "add-instrumentation-params add-multi-instrumentation-params prepare-e2e" + setup: "add-instrumentation-params prepare-e2e" - group: e2e-metadata-filters setup: "add-operator-arg OPERATOR_ARG='--annotations-filter=.*filter.out --annotations-filter=config.*.gke.io.* --labels-filter=.*filter.out' prepare-e2e" - group: e2e-automatic-rbac From 27b380e2f9d76ed124f73dbd885b7c4f849c1307 Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Wed, 25 Sep 2024 17:51:26 +0200 Subject: [PATCH 4/5] Improve release notes Signed-off-by: Israel Blancas --- ...0-enable-multiinstrumentation-by-default.yaml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.chloggen/3090-enable-multiinstrumentation-by-default.yaml b/.chloggen/3090-enable-multiinstrumentation-by-default.yaml index e70319c5a5..29cbebcef3 100755 --- a/.chloggen/3090-enable-multiinstrumentation-by-default.yaml +++ b/.chloggen/3090-enable-multiinstrumentation-by-default.yaml @@ -13,4 +13,18 @@ issues: [3090] # (Optional) One or more lines of additional information to render under the primary note. # These lines will be padded with 2 spaces and then inserted directly into the document. # Use pipe (|) for multiline entries. -subtext: +subtext: | + Starting with this release, the OpenTelemetry Operator now enables multi-instrumentation by default. + This enhancement allows instrumentation of multiple containers in a pod with language-specific configurations.| + Key Changes: + - Single Instrumentation (Default Behavior): If no container names are specified using the + `instrumentation.opentelemetry.io/container-names` annotation, instrumentation will be applied to the first container in + the pod spec by default. This only applies when single instrumentation injection is configured. + - Multi-Container Pods: In scenarios where different containers in a pod use distinct technologies, users must specify the + container(s) for instrumentation using language-specific annotations. Without this specification, the default behavior may + not work as expected for multi-container environments. + Compatibility: + - Users already utilizing the `instrumentation.opentelemetry.io/container-names` annotation do not need to take any action. + Their existing setup will continue to function as before. + - Important: Users who attempt to configure both `instrumentation.opentelemetry.io/container-names` and language-specific annotations + (for multi-instrumentation) simultaneously will encounter an error, as this configuration is not supported. From b9005ee3228e461af889139b07970063f24e9385 Mon Sep 17 00:00:00 2001 From: Israel Blancas Date: Tue, 1 Oct 2024 07:58:13 +0200 Subject: [PATCH 5/5] Remove duplicated fields Signed-off-by: Israel Blancas --- .../01-assert.yaml | 10 ---------- .../02-assert.yaml | 10 ---------- .../01-assert.yaml | 10 ---------- .../01-install-app.yaml | 1 - .../02-assert.yaml | 10 ---------- 5 files changed, 41 deletions(-) diff --git a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml index 93ed710096..952f1f4d0c 100644 --- a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/01-assert.yaml @@ -40,16 +40,6 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" - - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp - env: diff --git a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml index 1eb9a28e0b..231ca34b7c 100644 --- a/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-apache-multicontainer/02-assert.yaml @@ -51,16 +51,6 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" - - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp - image: rabbitmq diff --git a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml index 97b4f2df2c..47b10a1a45 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-assert.yaml @@ -42,16 +42,6 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" - - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp volumeMounts: diff --git a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-install-app.yaml b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-install-app.yaml index 16702d30b2..523a44efcf 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-install-app.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/01-install-app.yaml @@ -45,7 +45,6 @@ spec: mountPath: /etc/nginx/nginx.conf subPath: nginx.conf readOnly: true - imagePullPolicy: Always resources: limits: cpu: 500m diff --git a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml index 7794f33c5e..b16e4a4a8a 100644 --- a/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml +++ b/tests/e2e-instrumentation/instrumentation-nginx-multicontainer/02-assert.yaml @@ -53,16 +53,6 @@ spec: value: parentbased_traceidratio - name: OTEL_TRACES_SAMPLER_ARG value: "0.25" - - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES name: myapp volumeMounts: