Add opentelemetry tracing 41/143141/1
authorFiete Ostkamp <fiete.ostkamp@telekom.de>
Mon, 9 Feb 2026 15:43:31 +0000 (16:43 +0100)
committerFiete Ostkamp <fiete.ostkamp@telekom.de>
Mon, 9 Feb 2026 15:46:17 +0000 (16:46 +0100)
- enhance the Dockerfile to configure the opentelemetry java agent
- the otel agent can be configured via environment variables [1][2]

[1] [Environment Variable Specification](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/)
[2] [Exporter Environment Variables](https://opentelemetry.io/docs/specs/otel/protocol/exporter/#configuration-options)

Issue-ID: SDNC-1859
Change-Id: Ie80d352bfc664bfbdd9d06b031fcb03af375b824
Signed-off-by: Fiete Ostkamp <fiete.ostkamp@telekom.de>
installation/sdnc/src/main/docker/Dockerfile
installation/sdnc/src/main/scripts/startODL.sh

index 90b355c..26b22ca 100755 (executable)
@@ -75,6 +75,11 @@ RUN cp /opt/onap/sdnc/data/properties/svclogic-compiler.properties /opt/onap/sdn
 RUN apk add zip
 RUN find /opt/opendaylight/system/org/ops4j/pax/logging/pax-logging-log4j2 -name 'pax-logging-log4j2*.jar' -exec zip -q -d '{}' org/apache/logging/log4j/core/lookup/JndiLookup.class \;
 
+# Download OpenTelemetry Java agent
+ENV OTEL_AGENT_VERSION=2.24.0
+RUN mkdir -p /opt/opentelemetry && \
+    wget -O /opt/opentelemetry/opentelemetry-javaagent.jar \
+    https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v${OTEL_AGENT_VERSION}/opentelemetry-javaagent.jar
 
 # Changing ownership and permission of /opt
 RUN chown -R odl:odl /opt && chmod -R 755 /opt
@@ -96,7 +101,8 @@ ENV LC_ALL=en_US.UTF-8 \
     ODL_HOME=/opt/opendaylight/current \
     SDNC_CONFIG_DIR=/opt/onap/sdnc/data/properties \
     SDNC_KEYSTORE=${sdnc.keystore} \
-    SDNC_KEYPASS=${sdnc.keypass}
+    SDNC_KEYPASS=${sdnc.keypass} \
+    OTEL_JAVAAGENT_PATH=/opt/opentelemetry/opentelemetry-javaagent.jar
 
 # Copy Everything from stage0
 COPY --from=stage0 / /
index 2d9f749..8c2a39a 100755 (executable)
@@ -294,6 +294,30 @@ if $JDEBUG ; then
     export EXTRA_JAVA_OPTS
 fi
 
+# Enable OpenTelemetry Java agent if configured
+if [ -n "$OTEL_JAVAAGENT_PATH" ] && [ -f "$OTEL_JAVAAGENT_PATH" ]; then
+    printf "Enabling OpenTelemetry Java agent\n"
+    EXTRA_JAVA_OPTS="${EXTRA_JAVA_OPTS} -javaagent:${OTEL_JAVAAGENT_PATH}"
+
+    # Set default OTEL configuration if not already set
+    if [ -z "$OTEL_SERVICE_NAME" ]; then
+        export OTEL_SERVICE_NAME="sdnc"
+    fi
+    if [ -z "$OTEL_TRACES_EXPORTER" ]; then
+        export OTEL_TRACES_EXPORTER="otlp"
+    fi
+    if [ -z "$OTEL_METRICS_EXPORTER" ]; then
+        export OTEL_METRICS_EXPORTER="none"
+    fi
+    if [ -z "$OTEL_LOGS_EXPORTER" ]; then
+        export OTEL_LOGS_EXPORTER="none"
+    fi
+
+    export EXTRA_JAVA_OPTS
+    printf "  OTEL_JAVAAGENT_PATH=%s\n" "$OTEL_JAVAAGENT_PATH"
+    printf "  OTEL_SERVICE_NAME=%s\n" "$OTEL_SERVICE_NAME"
+    printf "  OTEL_EXPORTER_OTLP_ENDPOINT=%s\n" "$OTEL_EXPORTER_OTLP_ENDPOINT"
+fi
 
 printf "Settings:\n"
 printf "%s\n" "  SDNC_BIN=$SDNC_BIN"