From d64ef74e67ed333c8dde1e458437329da4a4dc34 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Thu, 1 May 2025 11:12:34 +0200 Subject: [PATCH 01/25] Add OpenTelemetry agent --- .../main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 2 ++ sdks/java/container/build.gradle | 1 + sdks/java/container/common.gradle | 1 + 3 files changed, 4 insertions(+) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 88023feb7eac..c5b4ee0b2524 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -634,6 +634,7 @@ class BeamModulePlugin implements Plugin { def nemo_version = "0.1" // [bomupgrader] determined by: io.grpc:grpc-netty, consistent with: google_cloud_platform_libraries_bom def netty_version = "4.1.118.Final" + def opentelemetry_javaagent_version = "2.16.0" def postgres_version = "42.2.16" // [bomupgrader] determined by: com.google.protobuf:protobuf-java, consistent with: google_cloud_platform_libraries_bom def protobuf_version = "4.29.4" @@ -852,6 +853,7 @@ class BeamModulePlugin implements Plugin { netty_tcnative_boringssl_static : "io.netty:netty-tcnative-boringssl-static:2.0.52.Final", netty_transport : "io.netty:netty-transport:$netty_version", netty_transport_native_epoll : "io.netty:netty-transport-native-epoll:$netty_version", + opentelemetry_javaagent : "io.opentelemetry.javaagent:opentelemetry-javaagent:$opentelemetry_javaagent_version", postgres : "org.postgresql:postgresql:$postgres_version", protobuf_java : "com.google.protobuf:protobuf-java:$protobuf_version", protobuf_java_util : "com.google.protobuf:protobuf-java-util:$protobuf_version", diff --git a/sdks/java/container/build.gradle b/sdks/java/container/build.gradle index bc9bc45ec371..f7c24958402b 100644 --- a/sdks/java/container/build.gradle +++ b/sdks/java/container/build.gradle @@ -42,6 +42,7 @@ dependencies { dockerDependency library.java.log4j2_to_slf4j dockerDependency project(path: ":sdks:java:harness", configuration: "shadow") dockerDependency library.java.jamm + dockerDependency library.java.opentelemetry_javaagent } goBuild { diff --git a/sdks/java/container/common.gradle b/sdks/java/container/common.gradle index acb6b79b3462..7f4fabcf9cc0 100644 --- a/sdks/java/container/common.gradle +++ b/sdks/java/container/common.gradle @@ -57,6 +57,7 @@ task copyDockerfileDependencies(type: Copy) { } rename 'beam-sdks-java-harness-.*.jar', 'beam-sdks-java-harness.jar' rename 'jamm.*.jar', 'jamm.jar' + rename 'opentelemetry-javaagent-.*\\.jar', 'opentelemetry-javaagent.jar' setDuplicatesStrategy(DuplicatesStrategy.INCLUDE) into "build/target" From 32abeb97997eed8c520919d3f779d7114be31c31 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Tue, 10 Jun 2025 22:03:00 +0200 Subject: [PATCH 02/25] Add enable_open_telemetry_agent experiment to Java portability harness entrypoint --- sdks/java/container/boot.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index 7169c2628dea..122b71788c5f 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -52,9 +52,11 @@ const ( disableJammAgentOption = "disable_jamm_agent" enableGoogleCloudProfilerOption = "enable_google_cloud_profiler" enableGoogleCloudHeapSamplingOption = "enable_google_cloud_heap_sampling" + enableOpenTelemetryAgentOption = "enable_open_telemetry_agent" googleCloudProfilerAgentBaseArgs = "-agentpath:/opt/google_cloud_profiler/profiler_java_agent.so=-logtostderr,-cprof_service=%s,-cprof_service_version=%s" googleCloudProfilerAgentHeapArgs = googleCloudProfilerAgentBaseArgs + ",-cprof_enable_heap_sampling,-cprof_heap_sampling_interval=2097152" jammAgentArgs = "-javaagent:/opt/apache/beam/jars/jamm.jar" + openTelemetryAgentArgs = "-javaagent:/opt/apache/beam/jars/opentelemetry-javaagent.jar" ) func main() { @@ -222,6 +224,13 @@ func main() { } else { args = append(args, jammAgentArgs) } + + enableOpenTelemetryAgent := strings.Contains(options, enableOpenTelemetryAgentOption) + if enableOpenTelemetryAgent { + args = append(args, openTelemetryAgentArgs) + logger.Printf(ctx, "Enabling OpenTelemetry agent.") + } + // Apply meta options const metaDir = "/opt/apache/beam/options" From 29901c7e1053f70910a435386a4763cb59d83a9c Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Tue, 10 Jun 2025 22:05:58 +0200 Subject: [PATCH 03/25] Use OpenTelemetry instrumentation BOM for dependency management --- .../groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 6 ++++-- scripts/tools/bomupgrader.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index c5b4ee0b2524..f7286c1c40a3 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -634,7 +634,8 @@ class BeamModulePlugin implements Plugin { def nemo_version = "0.1" // [bomupgrader] determined by: io.grpc:grpc-netty, consistent with: google_cloud_platform_libraries_bom def netty_version = "4.1.118.Final" - def opentelemetry_javaagent_version = "2.16.0" + // [bomupgrader] determined by: io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom, consistent with: google_cloud_platform_libraries_bom + def opentelemetry_instrumentation_version = "2.13.0" def postgres_version = "42.2.16" // [bomupgrader] determined by: com.google.protobuf:protobuf-java, consistent with: google_cloud_platform_libraries_bom def protobuf_version = "4.29.4" @@ -853,7 +854,8 @@ class BeamModulePlugin implements Plugin { netty_tcnative_boringssl_static : "io.netty:netty-tcnative-boringssl-static:2.0.52.Final", netty_transport : "io.netty:netty-transport:$netty_version", netty_transport_native_epoll : "io.netty:netty-transport-native-epoll:$netty_version", - opentelemetry_javaagent : "io.opentelemetry.javaagent:opentelemetry-javaagent:$opentelemetry_javaagent_version", + opentelemetry_instrumentation_bom : "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:$opentelemetry_instrumentation_version", + opentelemetry_javaagent : "io.opentelemetry.javaagent:opentelemetry-javaagent", // opentelemetry_instrumentation_bom sets version postgres : "org.postgresql:postgresql:$postgres_version", protobuf_java : "com.google.protobuf:protobuf-java:$protobuf_version", protobuf_java_util : "com.google.protobuf:protobuf-java-util:$protobuf_version", diff --git a/scripts/tools/bomupgrader.py b/scripts/tools/bomupgrader.py index 23de807a4faf..280f5fde161d 100644 --- a/scripts/tools/bomupgrader.py +++ b/scripts/tools/bomupgrader.py @@ -52,6 +52,7 @@ class BeamModulePluginProcessor: "grpc": "io.grpc:grpc-netty", # use "grpc-netty" to pick up proper netty version "netty": "io.netty:netty-transport", + "opentelemetry_instrumentation": "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom", "protobuf": "com.google.protobuf:protobuf-java" } # dependencies managed by GCP-BOM that used the dependencies in KNOWN_DEPS From 9af80c7091c12622fd422a11c998021665057f1c Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Tue, 10 Jun 2025 22:08:28 +0200 Subject: [PATCH 04/25] Add OpenTelemetry option to SdkHarnessOptions --- .../apache/beam/gradle/BeamModulePlugin.groovy | 1 + sdks/java/core/build.gradle | 2 ++ .../beam/sdk/options/SdkHarnessOptions.java | 17 +++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index f7286c1c40a3..f7f7e76e6bb6 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -854,6 +854,7 @@ class BeamModulePlugin implements Plugin { netty_tcnative_boringssl_static : "io.netty:netty-tcnative-boringssl-static:2.0.52.Final", netty_transport : "io.netty:netty-transport:$netty_version", netty_transport_native_epoll : "io.netty:netty-transport-native-epoll:$netty_version", + opentelemetry_api : "io.opentelemetry:opentelemetry-api", // opentelemetry_instrumentation_bom sets version opentelemetry_instrumentation_bom : "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:$opentelemetry_instrumentation_version", opentelemetry_javaagent : "io.opentelemetry.javaagent:opentelemetry-javaagent", // opentelemetry_instrumentation_bom sets version postgres : "org.postgresql:postgresql:$postgres_version", diff --git a/sdks/java/core/build.gradle b/sdks/java/core/build.gradle index 57e47cef6502..018f6c80bd78 100644 --- a/sdks/java/core/build.gradle +++ b/sdks/java/core/build.gradle @@ -91,6 +91,8 @@ dependencies { shadow library.java.jackson_core shadow library.java.jackson_annotations shadow library.java.jackson_databind + implementation platform(library.java.opentelemetry_instrumentation_bom) + shadow library.java.opentelemetry_api shadow library.java.slf4j_api shadow library.java.snappy_java shadow library.java.joda_time diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java index f56196996bcc..bf113bdad792 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java @@ -20,6 +20,9 @@ import static org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions.checkNotNull; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.OpenTelemetry; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; @@ -427,4 +430,18 @@ public Duration create(PipelineOptions options) { : Duration.ofMinutes(1); } } + + @JsonIgnore + @Hidden + @Default.InstanceFactory(GlobalOpenTelemetryFactory.class) + OpenTelemetry getOpenTelemetry(); + + void setOpenTelemetry(OpenTelemetry value); + + class GlobalOpenTelemetryFactory implements DefaultValueFactory { + @Override + public OpenTelemetry create(PipelineOptions options) { + return GlobalOpenTelemetry.get(); + } + } } From eb725a4d5721cf873ed0855013a201a8a2c95614 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Tue, 10 Jun 2025 22:14:32 +0200 Subject: [PATCH 05/25] Add missing platform dependency --- sdks/java/container/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/sdks/java/container/build.gradle b/sdks/java/container/build.gradle index f7c24958402b..a97be3481ea6 100644 --- a/sdks/java/container/build.gradle +++ b/sdks/java/container/build.gradle @@ -42,6 +42,7 @@ dependencies { dockerDependency library.java.log4j2_to_slf4j dockerDependency project(path: ":sdks:java:harness", configuration: "shadow") dockerDependency library.java.jamm + dockerDependency platform(library.java.opentelemetry_instrumentation_bom) dockerDependency library.java.opentelemetry_javaagent } From e820f03e9ce7786e58a3606de3f87c02694db9c8 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Tue, 10 Jun 2025 22:30:42 +0200 Subject: [PATCH 06/25] Change BOM configuration to shadow --- sdks/java/core/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdks/java/core/build.gradle b/sdks/java/core/build.gradle index 018f6c80bd78..36cb21449f6b 100644 --- a/sdks/java/core/build.gradle +++ b/sdks/java/core/build.gradle @@ -91,7 +91,7 @@ dependencies { shadow library.java.jackson_core shadow library.java.jackson_annotations shadow library.java.jackson_databind - implementation platform(library.java.opentelemetry_instrumentation_bom) + shadow platform(library.java.opentelemetry_instrumentation_bom) shadow library.java.opentelemetry_api shadow library.java.slf4j_api shadow library.java.snappy_java From e03d665b8923454ea3ac5e760a6c3868ffed1475 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Tue, 10 Jun 2025 22:55:17 +0200 Subject: [PATCH 07/25] Add missing command in Dockerfile --- sdks/java/container/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/sdks/java/container/Dockerfile b/sdks/java/container/Dockerfile index 9c266ea132b8..b16a0d0993d7 100644 --- a/sdks/java/container/Dockerfile +++ b/sdks/java/container/Dockerfile @@ -30,6 +30,7 @@ ADD target/jcl-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-to-slf4j.jar /opt/apache/beam/jars/ ADD target/beam-sdks-java-harness.jar /opt/apache/beam/jars/ +ADD target/opentelemetry-javaagent.jar /opt/apache/beam/jars/ # Required to use jamm as a javaagent to get accurate object size measuring # COPY fails if file is not found, so use a wildcard for open-module-agent.jar From d5a921e3381505107af3776cd145d4e01d73b06b Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Wed, 11 Jun 2025 00:05:53 +0200 Subject: [PATCH 08/25] Add license entries --- sdks/java/container/license_scripts/dep_urls_java.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sdks/java/container/license_scripts/dep_urls_java.yaml b/sdks/java/container/license_scripts/dep_urls_java.yaml index 2ce07d7f1531..682230d5845b 100644 --- a/sdks/java/container/license_scripts/dep_urls_java.yaml +++ b/sdks/java/container/license_scripts/dep_urls_java.yaml @@ -69,6 +69,14 @@ org.eclipse.jgit: '4.4.1.201607150455-r': license: "https://www.eclipse.org/org/documents/edl-v10.html" type: "Eclipse Distribution License - v1.0" +opentelemetry-bom: + '1.47.0': + license: "https://github.com/open-telemetry/opentelemetry-java/blob/v1.47.0/LICENSE" + type: "Apache License 2.0" +opentelemetry-instrumentation-bom: + '2.13.0': + license: "https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/v2.13.0/LICENSE" + type: "Apache License 2.0" zstd-jni: '1.5.2-5': license: "https://raw.githubusercontent.com/luben/zstd-jni/master/LICENSE" From 55ee1c2341ea6028d087293d9769c63736a88e7d Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Wed, 11 Jun 2025 09:23:16 +0200 Subject: [PATCH 09/25] Use content location instead of repo location --- sdks/java/container/license_scripts/dep_urls_java.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdks/java/container/license_scripts/dep_urls_java.yaml b/sdks/java/container/license_scripts/dep_urls_java.yaml index 682230d5845b..f439cf5ce874 100644 --- a/sdks/java/container/license_scripts/dep_urls_java.yaml +++ b/sdks/java/container/license_scripts/dep_urls_java.yaml @@ -71,11 +71,11 @@ org.eclipse.jgit: type: "Eclipse Distribution License - v1.0" opentelemetry-bom: '1.47.0': - license: "https://github.com/open-telemetry/opentelemetry-java/blob/v1.47.0/LICENSE" + license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java/v1.47.0/LICENSE" type: "Apache License 2.0" opentelemetry-instrumentation-bom: '2.13.0': - license: "https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/v2.13.0/LICENSE" + license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-instrumentation/v2.13.0/LICENSE" type: "Apache License 2.0" zstd-jni: '1.5.2-5': From 56550b270545ea1ee494585c796a0167b23e93af Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Fri, 27 Jun 2025 16:07:17 +0200 Subject: [PATCH 10/25] Fix merge related formatting issue --- sdks/java/container/boot.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index 690e99d31a2d..b2f9910a6157 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -229,9 +229,9 @@ func main() { if enableOpenTelemetryAgent { args = append(args, openTelemetryAgentArgs) logger.Printf(ctx, "Enabling OpenTelemetry agent.") - } + } - // If heap dumping is enabled, configure the JVM to dump it on oom events. + // If heap dumping is enabled, configure the JVM to dump it on oom events. if pipelineOptions, ok := info.GetPipelineOptions().GetFields()["options"]; ok { if heapDumpOption, ok := pipelineOptions.GetStructValue().GetFields()["enableHeapDumps"]; ok { if heapDumpOption.GetBoolValue() { From f430eed98b820453ad84c03c669241c645d1e0b5 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Fri, 27 Jun 2025 14:16:05 +0000 Subject: [PATCH 11/25] Let gofmt fix merge related formatting issue --- sdks/java/container/boot.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index b2f9910a6157..aa39a338c282 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -229,9 +229,9 @@ func main() { if enableOpenTelemetryAgent { args = append(args, openTelemetryAgentArgs) logger.Printf(ctx, "Enabling OpenTelemetry agent.") - } + } - // If heap dumping is enabled, configure the JVM to dump it on oom events. + // If heap dumping is enabled, configure the JVM to dump it on oom events. if pipelineOptions, ok := info.GetPipelineOptions().GetFields()["options"]; ok { if heapDumpOption, ok := pipelineOptions.GetStructValue().GetFields()["enableHeapDumps"]; ok { if heapDumpOption.GetBoolValue() { From d51f542fa6b7f1c9121a50354c32af8ac25f51ab Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Fri, 27 Jun 2025 14:17:23 +0000 Subject: [PATCH 12/25] Fix existing formatting issue --- sdks/java/container/boot.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index aa39a338c282..665bf759d549 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -235,9 +235,9 @@ func main() { if pipelineOptions, ok := info.GetPipelineOptions().GetFields()["options"]; ok { if heapDumpOption, ok := pipelineOptions.GetStructValue().GetFields()["enableHeapDumps"]; ok { if heapDumpOption.GetBoolValue() { - args = append(args, "-XX:+HeapDumpOnOutOfMemoryError", - "-Dbeam.fn.heap_dump_dir="+filepath.Join(dir, "heapdumps"), - "-XX:HeapDumpPath="+filepath.Join(dir, "heapdumps", "heap_dump.hprof")) + args = append(args, "-XX:+HeapDumpOnOutOfMemoryError", + "-Dbeam.fn.heap_dump_dir="+filepath.Join(dir, "heapdumps"), + "-XX:HeapDumpPath="+filepath.Join(dir, "heapdumps", "heap_dump.hprof")) } } } From 7ea57aa640abb7c8135d0d4fc62a829c5656eabe Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Wed, 10 Sep 2025 14:14:37 +0000 Subject: [PATCH 13/25] Add option to configure OpenTelemetry properties --- .../org/apache/beam/gradle/BeamModulePlugin.groovy | 2 +- sdks/java/container/Dockerfile | 1 + sdks/java/container/boot.go | 11 ++++++++++- sdks/java/container/build.gradle | 1 + sdks/java/container/common.gradle | 1 + .../java/container/license_scripts/dep_urls_java.yaml | 4 ++-- .../apache/beam/sdk/options/SdkHarnessOptions.java | 11 +++++++++++ 7 files changed, 27 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 659b3ae44620..acfd001b1970 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -633,7 +633,7 @@ class BeamModulePlugin implements Plugin { // [bomupgrader] determined by: io.grpc:grpc-netty, consistent with: google_cloud_platform_libraries_bom def netty_version = "4.1.110.Final" // [bomupgrader] determined by: io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom, consistent with: google_cloud_platform_libraries_bom - def opentelemetry_instrumentation_version = "2.13.0" + def opentelemetry_instrumentation_version = "2.13.3" def postgres_version = "42.2.16" // [bomupgrader] determined by: com.google.protobuf:protobuf-java, consistent with: google_cloud_platform_libraries_bom def protobuf_version = "4.29.4" diff --git a/sdks/java/container/Dockerfile b/sdks/java/container/Dockerfile index b16a0d0993d7..2f77ae33b6c2 100644 --- a/sdks/java/container/Dockerfile +++ b/sdks/java/container/Dockerfile @@ -30,6 +30,7 @@ ADD target/jcl-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-to-slf4j.jar /opt/apache/beam/jars/ ADD target/beam-sdks-java-harness.jar /opt/apache/beam/jars/ +ADD target/opentelemetry-gcp-auth-extension.jar /opt/opentelemetry/extensions/ ADD target/opentelemetry-javaagent.jar /opt/apache/beam/jars/ # Required to use jamm as a javaagent to get accurate object size measuring diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index 665bf759d549..799bb13867f1 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -56,7 +56,7 @@ const ( googleCloudProfilerAgentBaseArgs = "-agentpath:/opt/google_cloud_profiler/profiler_java_agent.so=-logtostderr,-cprof_service=%s,-cprof_service_version=%s" googleCloudProfilerAgentHeapArgs = googleCloudProfilerAgentBaseArgs + ",-cprof_enable_heap_sampling,-cprof_heap_sampling_interval=2097152" jammAgentArgs = "-javaagent:/opt/apache/beam/jars/jamm.jar" - openTelemetryAgentArgs = "-javaagent:/opt/apache/beam/jars/opentelemetry-javaagent.jar" + openTelemetryAgentArgs = "-javaagent:/opt/apache/beam/jars/opentelemetry-javaagent.jar=otel.javaagent.extensions=/opt/opentelemetry/extensions" ) func main() { @@ -285,6 +285,15 @@ func main() { args = append(args, "--add-modules="+module.GetStringValue()) } } + + // Add OpenTelemetry properties specified in pipeline options + if properties, ok := pipelineOptions.GetStructValue().GetFields()["openTelemetryProperties"]; ok { + for key, value := range properties.GetStructValue().GetFields() { + if strings.HasPrefix(key, "otel.") { + args = append(args, "-D"+key+"="+value.GetStringValue()) + } + } + } } // Automatically open modules for Java 11+ openModuleAgentJar := "/opt/apache/beam/jars/open-module-agent.jar" diff --git a/sdks/java/container/build.gradle b/sdks/java/container/build.gradle index 516c4877c27d..47ae733d0955 100644 --- a/sdks/java/container/build.gradle +++ b/sdks/java/container/build.gradle @@ -44,6 +44,7 @@ dependencies { dockerDependency library.java.jamm dockerDependency platform(library.java.opentelemetry_instrumentation_bom) dockerDependency library.java.opentelemetry_javaagent + dockerDependency "io.opentelemetry.contrib:opentelemetry-gcp-auth-extension:1.48.0-alpha:shadow" } goBuild { diff --git a/sdks/java/container/common.gradle b/sdks/java/container/common.gradle index 7f4fabcf9cc0..4ccdfa36e3df 100644 --- a/sdks/java/container/common.gradle +++ b/sdks/java/container/common.gradle @@ -57,6 +57,7 @@ task copyDockerfileDependencies(type: Copy) { } rename 'beam-sdks-java-harness-.*.jar', 'beam-sdks-java-harness.jar' rename 'jamm.*.jar', 'jamm.jar' + rename 'opentelemetry-gcp-auth-extension-.*\\.jar', 'opentelemetry-gcp-auth-extension.jar' rename 'opentelemetry-javaagent-.*\\.jar', 'opentelemetry-javaagent.jar' setDuplicatesStrategy(DuplicatesStrategy.INCLUDE) diff --git a/sdks/java/container/license_scripts/dep_urls_java.yaml b/sdks/java/container/license_scripts/dep_urls_java.yaml index aeeec0e4ab4c..6d9af7621800 100644 --- a/sdks/java/container/license_scripts/dep_urls_java.yaml +++ b/sdks/java/container/license_scripts/dep_urls_java.yaml @@ -70,8 +70,8 @@ opentelemetry-bom: license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java/v1.47.0/LICENSE" type: "Apache License 2.0" opentelemetry-instrumentation-bom: - '2.13.0': - license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-instrumentation/v2.13.0/LICENSE" + '2.13.3': + license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-instrumentation/v2.13.3/LICENSE" type: "Apache License 2.0" zstd-jni: '1.5.2-5': diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java index a4737ae2a9bd..994bca5912dd 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/SdkHarnessOptions.java @@ -443,6 +443,17 @@ public Duration create(PipelineOptions options) { void setElementProcessingTimeoutMinutes(int value); + /** + * The OpenTelemetry properties that will be appended to the set of system properties for SDK + * harness instances. + */ + @Description( + "The OpenTelemetry properties that will be appended to the set of system properties for SDK " + + "harness instances.") + Map getOpenTelemetryProperties(); + + void setOpenTelemetryProperties(Map value); + @JsonIgnore @Hidden @Default.InstanceFactory(GlobalOpenTelemetryFactory.class) From 2bb3da7bcefee7b0795bf2fe650cb59439f0603c Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Wed, 10 Sep 2025 15:16:41 +0000 Subject: [PATCH 14/25] Set GOOGLE_CLOUD_PROJECT environment variable if missing --- sdks/java/container/boot.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index 799bb13867f1..a2c042291ea9 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -186,6 +186,7 @@ func main() { lim = HeapSizeLimit(size) } + env := map[string]string{} args := []string{ "-Xmx" + strconv.FormatUint(lim, 10), // ParallelGC the most adequate for high throughput and lower CPU utilization @@ -294,6 +295,17 @@ func main() { } } } + + // TODO(sjvanrossum): Remove this section when Dataflow sets this environment variable + // Add GOOGLE_CLOUD_PROJECT environment variable if unset + if _, ok := os.LookupEnv("GOOGLE_CLOUD_PROJECT"); !ok { + if project, ok := pipelineOptions.GetStructValue().GetFields()["project"]; ok { + if p := project.GetStringValue(); len(p) > 0 { + env["GOOGLE_CLOUD_PROJECT"] = p + logger.Printf(ctx, "Setting GOOGLE_CLOUD_PROJECT environment variable.") + } + } + } } // Automatically open modules for Java 11+ openModuleAgentJar := "/opt/apache/beam/jars/open-module-agent.jar" @@ -303,7 +315,7 @@ func main() { args = append(args, "org.apache.beam.fn.harness.FnHarness") logger.Printf(ctx, "Executing: java %v", strings.Join(args, " ")) - logger.Fatalf(ctx, "Java exited: %v", execx.Execute("java", args...)) + logger.Fatalf(ctx, "Java exited: %v", execx.ExecuteEnv(env, "java", args...)) } // heapSizeLimit returns 80% of the runner limit, if provided. If not provided, From 8bee7a7b8c349b2d480fa578ffdb46883d6ccc30 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Thu, 11 Sep 2025 15:08:18 +0000 Subject: [PATCH 15/25] Use io.opentelemetry:opentelemetry-sdk instead of io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom for bomupgrader --- .../groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 5 +++-- scripts/tools/bomupgrader.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 1433499aeb9c..d4446b3e32f9 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -632,7 +632,8 @@ class BeamModulePlugin implements Plugin { def nemo_version = "0.1" // [bomupgrader] determined by: io.grpc:grpc-netty, consistent with: google_cloud_platform_libraries_bom def netty_version = "4.1.110.Final" - // [bomupgrader] determined by: io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom, consistent with: google_cloud_platform_libraries_bom + // [bomupgrader] determined by: io.opentelemetry:opentelemetry-sdk, consistent with: google_cloud_platform_libraries_bom + def opentelemetry_version = "1.47.0" def opentelemetry_instrumentation_version = "2.13.3" def postgres_version = "42.2.16" // [bomupgrader] determined by: com.google.protobuf:protobuf-java, consistent with: google_cloud_platform_libraries_bom @@ -853,7 +854,7 @@ class BeamModulePlugin implements Plugin { netty_tcnative_boringssl_static : "io.netty:netty-tcnative-boringssl-static:2.0.52.Final", netty_transport : "io.netty:netty-transport:$netty_version", netty_transport_native_epoll : "io.netty:netty-transport-native-epoll:$netty_version", - opentelemetry_api : "io.opentelemetry:opentelemetry-api", // opentelemetry_instrumentation_bom sets version + opentelemetry_api : "io.opentelemetry:opentelemetry-api", // google_cloud_platform_libraries_bom sets version opentelemetry_instrumentation_bom : "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:$opentelemetry_instrumentation_version", opentelemetry_javaagent : "io.opentelemetry.javaagent:opentelemetry-javaagent", // opentelemetry_instrumentation_bom sets version postgres : "org.postgresql:postgresql:$postgres_version", diff --git a/scripts/tools/bomupgrader.py b/scripts/tools/bomupgrader.py index 280f5fde161d..a759bae827ba 100644 --- a/scripts/tools/bomupgrader.py +++ b/scripts/tools/bomupgrader.py @@ -52,7 +52,7 @@ class BeamModulePluginProcessor: "grpc": "io.grpc:grpc-netty", # use "grpc-netty" to pick up proper netty version "netty": "io.netty:netty-transport", - "opentelemetry_instrumentation": "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom", + "opentelemetry": "io.opentelemetry:opentelemetry-sdk", "protobuf": "com.google.protobuf:protobuf-java" } # dependencies managed by GCP-BOM that used the dependencies in KNOWN_DEPS From a41ea704bf296bfe63cf5ec2861c6e2a691d28cf Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Thu, 11 Sep 2025 15:17:21 +0000 Subject: [PATCH 16/25] Fix opentelemetry-gcp-auth-extension dep --- .../groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 7 ++++++- sdks/java/container/build.gradle | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index d4446b3e32f9..5a182c1e2e70 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -634,6 +634,9 @@ class BeamModulePlugin implements Plugin { def netty_version = "4.1.110.Final" // [bomupgrader] determined by: io.opentelemetry:opentelemetry-sdk, consistent with: google_cloud_platform_libraries_bom def opentelemetry_version = "1.47.0" + // [manual] determined by: https://github.com/open-telemetry/opentelemetry-java-contrib/releases, consistent with: opentelemetry_instrumentation_bom + def opentelemetry_contrib_version = "1.44.0" + // [manual] determined by: https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases, consistent with: opentelemetry_bom def opentelemetry_instrumentation_version = "2.13.3" def postgres_version = "42.2.16" // [bomupgrader] determined by: com.google.protobuf:protobuf-java, consistent with: google_cloud_platform_libraries_bom @@ -855,7 +858,9 @@ class BeamModulePlugin implements Plugin { netty_transport : "io.netty:netty-transport:$netty_version", netty_transport_native_epoll : "io.netty:netty-transport-native-epoll:$netty_version", opentelemetry_api : "io.opentelemetry:opentelemetry-api", // google_cloud_platform_libraries_bom sets version - opentelemetry_instrumentation_bom : "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:$opentelemetry_instrumentation_version", + opentelemetry_bom : "io.opentelemetry:opentelemetry-bom-alpha:$opentelemetry_version-alpha", // opentelemetry_contrib_gcp_auth_extension requires alpha + opentelemetry_contrib_gcp_auth_extension : "io.opentelemetry.contrib:opentelemetry-gcp-auth-extension:$opentelemetry_contrib_version-alpha:shadow", + opentelemetry_instrumentation_bom : "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:$opentelemetry_instrumentation_version-alpha", // opentelemetry_contrib_gcp_auth_extension requires alpha opentelemetry_javaagent : "io.opentelemetry.javaagent:opentelemetry-javaagent", // opentelemetry_instrumentation_bom sets version postgres : "org.postgresql:postgresql:$postgres_version", protobuf_java : "com.google.protobuf:protobuf-java:$protobuf_version", diff --git a/sdks/java/container/build.gradle b/sdks/java/container/build.gradle index 47ae733d0955..db3b13f33763 100644 --- a/sdks/java/container/build.gradle +++ b/sdks/java/container/build.gradle @@ -44,7 +44,7 @@ dependencies { dockerDependency library.java.jamm dockerDependency platform(library.java.opentelemetry_instrumentation_bom) dockerDependency library.java.opentelemetry_javaagent - dockerDependency "io.opentelemetry.contrib:opentelemetry-gcp-auth-extension:1.48.0-alpha:shadow" + dockerDependency library.java.opentelemetry_contrib_gcp_auth_extension } goBuild { From f311a5d7d28e4a55dd40b646581d79c8f4ee4eca Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Thu, 11 Sep 2025 15:17:55 +0000 Subject: [PATCH 17/25] Update dep_urls_java.yaml --- .../container/license_scripts/dep_urls_java.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sdks/java/container/license_scripts/dep_urls_java.yaml b/sdks/java/container/license_scripts/dep_urls_java.yaml index 7fcfe2d3b3b5..e85be8c505f5 100644 --- a/sdks/java/container/license_scripts/dep_urls_java.yaml +++ b/sdks/java/container/license_scripts/dep_urls_java.yaml @@ -65,12 +65,16 @@ org.eclipse.jgit: '4.4.1.201607150455-r': license: "https://www.eclipse.org/org/documents/edl-v10.html" type: "Eclipse Distribution License - v1.0" -opentelemetry-bom: - '1.47.0': +opentelemetry-bom-alpha: + '1.47.0-alpha': license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java/v1.47.0/LICENSE" type: "Apache License 2.0" -opentelemetry-instrumentation-bom: - '2.13.3': +opentelemetry-gcp-auth-extension: + '1.44.0-alpha': + license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/v1.44.0/LICENSE" + type: "Apache License 2.0" +opentelemetry-instrumentation-bom-alpha: + '2.13.3-alpha': license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-instrumentation/v2.13.3/LICENSE" type: "Apache License 2.0" zstd-jni: From 175ffa637376c4e0c2baf39adb3fe8e3e3431fc3 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Fri, 12 Sep 2025 16:38:04 +0000 Subject: [PATCH 18/25] Change agent args, java agent args are not used in 2.13.3 --- sdks/java/container/boot.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index a2c042291ea9..b068d9604a6b 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -56,7 +56,7 @@ const ( googleCloudProfilerAgentBaseArgs = "-agentpath:/opt/google_cloud_profiler/profiler_java_agent.so=-logtostderr,-cprof_service=%s,-cprof_service_version=%s" googleCloudProfilerAgentHeapArgs = googleCloudProfilerAgentBaseArgs + ",-cprof_enable_heap_sampling,-cprof_heap_sampling_interval=2097152" jammAgentArgs = "-javaagent:/opt/apache/beam/jars/jamm.jar" - openTelemetryAgentArgs = "-javaagent:/opt/apache/beam/jars/opentelemetry-javaagent.jar=otel.javaagent.extensions=/opt/opentelemetry/extensions" + openTelemetryAgentArgs = "-javaagent:/opt/apache/beam/jars/opentelemetry-javaagent.jar -Dotel.javaagent.extensions=/opt/opentelemetry/extensions" ) func main() { From 0ac02636164ee6348fbebf1acdc0d3b20d08fca6 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Fri, 12 Sep 2025 17:18:31 +0000 Subject: [PATCH 19/25] Separate system property from agent args --- sdks/java/container/boot.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index b068d9604a6b..7ccf2ec9f438 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -56,7 +56,7 @@ const ( googleCloudProfilerAgentBaseArgs = "-agentpath:/opt/google_cloud_profiler/profiler_java_agent.so=-logtostderr,-cprof_service=%s,-cprof_service_version=%s" googleCloudProfilerAgentHeapArgs = googleCloudProfilerAgentBaseArgs + ",-cprof_enable_heap_sampling,-cprof_heap_sampling_interval=2097152" jammAgentArgs = "-javaagent:/opt/apache/beam/jars/jamm.jar" - openTelemetryAgentArgs = "-javaagent:/opt/apache/beam/jars/opentelemetry-javaagent.jar -Dotel.javaagent.extensions=/opt/opentelemetry/extensions" + openTelemetryAgentArgs = "-javaagent:/opt/apache/beam/jars/opentelemetry-javaagent.jar" ) func main() { @@ -229,6 +229,7 @@ func main() { enableOpenTelemetryAgent := strings.Contains(options, enableOpenTelemetryAgentOption) if enableOpenTelemetryAgent { args = append(args, openTelemetryAgentArgs) + args = append(args, "-Dotel.javaagent.extensions=/opt/opentelemetry/extensions") logger.Printf(ctx, "Enabling OpenTelemetry agent.") } From 8d074800be71eb06e24404ba742bb0349669ec6b Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Fri, 12 Sep 2025 19:48:43 +0000 Subject: [PATCH 20/25] Move gcp-auth extension to a separate folder --- sdks/java/container/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdks/java/container/Dockerfile b/sdks/java/container/Dockerfile index f86186a56cca..1809c72df26a 100644 --- a/sdks/java/container/Dockerfile +++ b/sdks/java/container/Dockerfile @@ -30,7 +30,7 @@ ADD target/jcl-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-to-slf4j.jar /opt/apache/beam/jars/ ADD target/beam-sdks-java-harness.jar /opt/apache/beam/jars/ -ADD target/opentelemetry-gcp-auth-extension.jar /opt/opentelemetry/extensions/ +ADD target/opentelemetry-gcp-auth-extension.jar /opt/opentelemetry/extensions/gcp-auth ADD target/opentelemetry-javaagent.jar /opt/apache/beam/jars/ # Required to use jamm as a javaagent to get accurate object size measuring From 91abf1034d5b607613aacc015229563079bfb0b1 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Fri, 12 Sep 2025 20:33:45 +0000 Subject: [PATCH 21/25] Add missing slash --- sdks/java/container/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdks/java/container/Dockerfile b/sdks/java/container/Dockerfile index 1809c72df26a..eb3ccba43432 100644 --- a/sdks/java/container/Dockerfile +++ b/sdks/java/container/Dockerfile @@ -30,7 +30,7 @@ ADD target/jcl-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-over-slf4j.jar /opt/apache/beam/jars/ ADD target/log4j-to-slf4j.jar /opt/apache/beam/jars/ ADD target/beam-sdks-java-harness.jar /opt/apache/beam/jars/ -ADD target/opentelemetry-gcp-auth-extension.jar /opt/opentelemetry/extensions/gcp-auth +ADD target/opentelemetry-gcp-auth-extension.jar /opt/opentelemetry/extensions/gcp-auth/ ADD target/opentelemetry-javaagent.jar /opt/apache/beam/jars/ # Required to use jamm as a javaagent to get accurate object size measuring From 1dab070a6e509ea4e6c61fbb367cb7435bcec447 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Mon, 15 Sep 2025 13:39:40 +0000 Subject: [PATCH 22/25] Use environment variables (lower priority) instead of system properties (higher priority) for readability --- sdks/java/container/boot.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index 7ccf2ec9f438..927b3aa1a89f 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -229,7 +229,7 @@ func main() { enableOpenTelemetryAgent := strings.Contains(options, enableOpenTelemetryAgentOption) if enableOpenTelemetryAgent { args = append(args, openTelemetryAgentArgs) - args = append(args, "-Dotel.javaagent.extensions=/opt/opentelemetry/extensions") + os.Setenv("OTEL_JAVAAGENT_EXTENSIONS", "/opt/opentelemetry/extensions") logger.Printf(ctx, "Enabling OpenTelemetry agent.") } From 3e7dff87cd1d999b4eb1314dae54d5f8d0688bb7 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Mon, 15 Sep 2025 13:40:13 +0000 Subject: [PATCH 23/25] Enable global autoconfiguration by default --- sdks/java/container/boot.go | 1 + 1 file changed, 1 insertion(+) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index 927b3aa1a89f..88922268c38b 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -230,6 +230,7 @@ func main() { if enableOpenTelemetryAgent { args = append(args, openTelemetryAgentArgs) os.Setenv("OTEL_JAVAAGENT_EXTENSIONS", "/opt/opentelemetry/extensions") + os.Setenv("OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED", "true") logger.Printf(ctx, "Enabling OpenTelemetry agent.") } From 1eb4d8c5a0fd63e06fd43df614b2d9a1a8c52601 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Mon, 15 Sep 2025 14:06:18 +0000 Subject: [PATCH 24/25] Set otel.service.name to job_name metadata by default if available --- sdks/java/container/boot.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sdks/java/container/boot.go b/sdks/java/container/boot.go index 88922268c38b..1fc333b93e48 100644 --- a/sdks/java/container/boot.go +++ b/sdks/java/container/boot.go @@ -231,6 +231,11 @@ func main() { args = append(args, openTelemetryAgentArgs) os.Setenv("OTEL_JAVAAGENT_EXTENSIONS", "/opt/opentelemetry/extensions") os.Setenv("OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED", "true") + if metadata := info.GetMetadata(); metadata != nil { + if jobName, ok := metadata["job_name"]; ok { + os.Setenv("OTEL_SERVICE_NAME", jobName) + } + } logger.Printf(ctx, "Enabling OpenTelemetry agent.") } From 1a9125a74ddd6fc72937486be90f3d05ccd23688 Mon Sep 17 00:00:00 2001 From: Steven van Rossum Date: Mon, 15 Sep 2025 22:06:05 +0000 Subject: [PATCH 25/25] Fix dependency license urls --- sdks/java/container/license_scripts/dep_urls_java.yaml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sdks/java/container/license_scripts/dep_urls_java.yaml b/sdks/java/container/license_scripts/dep_urls_java.yaml index e85be8c505f5..c47d051c3469 100644 --- a/sdks/java/container/license_scripts/dep_urls_java.yaml +++ b/sdks/java/container/license_scripts/dep_urls_java.yaml @@ -65,13 +65,17 @@ org.eclipse.jgit: '4.4.1.201607150455-r': license: "https://www.eclipse.org/org/documents/edl-v10.html" type: "Eclipse Distribution License - v1.0" +opentelemetry-bom: + '1.47.0': + license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java/v1.47.0/LICENSE" + type: "Apache License 2.0" opentelemetry-bom-alpha: '1.47.0-alpha': license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java/v1.47.0/LICENSE" type: "Apache License 2.0" -opentelemetry-gcp-auth-extension: - '1.44.0-alpha': - license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-contrib/v1.44.0/LICENSE" +opentelemetry-instrumentation-bom: + '2.13.3': + license: "https://raw.githubusercontent.com/open-telemetry/opentelemetry-java-instrumentation/v2.13.3/LICENSE" type: "Apache License 2.0" opentelemetry-instrumentation-bom-alpha: '2.13.3-alpha':