Skip to content
This repository was archived by the owner on Jun 22, 2024. It is now read-only.

Commit cd10250

Browse files
authored
feat: enable tracing observability in docker-compose and helm chart (SeleniumHQ#2137)
Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent b3bf338 commit cd10250

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+406
-60
lines changed

Base/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ ENV SE_BIND_HOST false
140140
# Boolean value, maps "--reject-unsupported-caps"
141141
ENV SE_REJECT_UNSUPPORTED_CAPS false
142142

143+
ENV SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED true
144+
ENV SE_OTEL_TRACES_EXPORTER "otlp"
145+
143146
# A too high maximum number of file descriptors (with the default value
144147
# inherited from the docker host) can cause issues with some of our tools:
145148
# - sanitizers hanging: https://github.com/google/sanitizers/issues/1662

Distributor/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@ COPY selenium-grid-distributor.conf /etc/supervisor/conf.d/
2121
ENV SE_SESSION_REQUEST_TIMEOUT 300
2222
# In seconds, maps to "--session-retry-interval"
2323
ENV SE_SESSION_RETRY_INTERVAL 15
24+
25+
ENV SE_OTEL_SERVICE_NAME "selenium-distributor"

Distributor/start-selenium-grid-distributor.sh

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,28 @@ fi
9595

9696
EXTRA_LIBS=""
9797

98-
if [ ! -z "$SE_ENABLE_TRACING" ]; then
98+
if [ "$SE_ENABLE_TRACING" = "true" ]; then
9999
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
100100
[ -n "$EXTRA_LIBS" ] && [ -n "${EXTERNAL_JARS}" ] && EXTRA_LIBS=${EXTRA_LIBS}:
101101
EXTRA_LIBS="--ext "${EXTRA_LIBS}${EXTERNAL_JARS}
102102
echo "Tracing is enabled"
103103
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
104+
if [ -n "$SE_OTEL_SERVICE_NAME" ]; then
105+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.resource.attributes=service.name=${SE_OTEL_SERVICE_NAME}"
106+
fi
107+
if [ -n "$SE_OTEL_TRACES_EXPORTER" ]; then
108+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.traces.exporter=${SE_OTEL_TRACES_EXPORTER}"
109+
fi
110+
if [ -n "$SE_OTEL_EXPORTER_ENDPOINT" ]; then
111+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.exporter.${SE_OTEL_TRACES_EXPORTER,,}.endpoint=${SE_OTEL_EXPORTER_ENDPOINT}"
112+
fi
113+
if [ -n "$SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED" ]; then
114+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.java.global-autoconfigure.enabled=${SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED}"
115+
fi
116+
if [ -n "$SE_OTEL_JVM_ARGS" ]; then
117+
echo "List arguments for OpenTelemetry: ${SE_OTEL_JVM_ARGS}"
118+
SE_JAVA_OPTS="$SE_JAVA_OPTS ${SE_OTEL_JVM_ARGS}"
119+
fi
104120
else
105121
echo "Tracing is disabled"
106122
fi

EventBus/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@ COPY --chown="${SEL_UID}:${SEL_GID}" start-selenium-grid-eventbus.sh \
2121
/opt/bin/
2222

2323
COPY selenium-grid-eventbus.conf /etc/supervisor/conf.d/
24+
25+
ENV SE_OTEL_SERVICE_NAME "selenium-event-bus"

EventBus/start-selenium-grid-eventbus.sh

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,28 @@ fi
5050

5151
EXTRA_LIBS=""
5252

53-
if [ ! -z "$SE_ENABLE_TRACING" ]; then
53+
if [ "$SE_ENABLE_TRACING" = "true" ]; then
5454
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
5555
[ -n "$EXTRA_LIBS" ] && [ -n "${EXTERNAL_JARS}" ] && EXTRA_LIBS=${EXTRA_LIBS}:
5656
EXTRA_LIBS="--ext "${EXTRA_LIBS}${EXTERNAL_JARS}
5757
echo "Tracing is enabled"
5858
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
59+
if [ -n "$SE_OTEL_SERVICE_NAME" ]; then
60+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.resource.attributes=service.name=${SE_OTEL_SERVICE_NAME}"
61+
fi
62+
if [ -n "$SE_OTEL_TRACES_EXPORTER" ]; then
63+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.traces.exporter=${SE_OTEL_TRACES_EXPORTER}"
64+
fi
65+
if [ -n "$SE_OTEL_EXPORTER_ENDPOINT" ]; then
66+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.exporter.${SE_OTEL_TRACES_EXPORTER,,}.endpoint=${SE_OTEL_EXPORTER_ENDPOINT}"
67+
fi
68+
if [ -n "$SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED" ]; then
69+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.java.global-autoconfigure.enabled=${SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED}"
70+
fi
71+
if [ -n "$SE_OTEL_JVM_ARGS" ]; then
72+
echo "List arguments for OpenTelemetry: ${SE_OTEL_JVM_ARGS}"
73+
SE_JAVA_OPTS="$SE_JAVA_OPTS ${SE_OTEL_JVM_ARGS}"
74+
fi
5975
else
6076
echo "Tracing is disabled"
6177
fi

Hub/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ COPY --chown="${SEL_UID}:${SEL_GID}" start-selenium-grid-hub.sh \
2525
/opt/bin/
2626

2727
COPY selenium-grid-hub.conf /etc/supervisor/conf.d/
28+
29+
ENV SE_OTEL_SERVICE_NAME "selenium-hub"

Hub/start-selenium-grid-hub.sh

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,28 @@ fi
6868

6969
EXTRA_LIBS=""
7070

71-
if [ ! -z "$SE_ENABLE_TRACING" ]; then
71+
if [ "$SE_ENABLE_TRACING" = "true" ]; then
7272
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
7373
[ -n "$EXTRA_LIBS" ] && [ -n "${EXTERNAL_JARS}" ] && EXTRA_LIBS=${EXTRA_LIBS}:
7474
EXTRA_LIBS="--ext "${EXTRA_LIBS}${EXTERNAL_JARS}
7575
echo "Tracing is enabled"
7676
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
77+
if [ -n "$SE_OTEL_SERVICE_NAME" ]; then
78+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.resource.attributes=service.name=${SE_OTEL_SERVICE_NAME}"
79+
fi
80+
if [ -n "$SE_OTEL_TRACES_EXPORTER" ]; then
81+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.traces.exporter=${SE_OTEL_TRACES_EXPORTER}"
82+
fi
83+
if [ -n "$SE_OTEL_EXPORTER_ENDPOINT" ]; then
84+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.exporter.${SE_OTEL_TRACES_EXPORTER,,}.endpoint=${SE_OTEL_EXPORTER_ENDPOINT}"
85+
fi
86+
if [ -n "$SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED" ]; then
87+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.java.global-autoconfigure.enabled=${SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED}"
88+
fi
89+
if [ -n "$SE_OTEL_JVM_ARGS" ]; then
90+
echo "List arguments for OpenTelemetry: ${SE_OTEL_JVM_ARGS}"
91+
SE_JAVA_OPTS="$SE_JAVA_OPTS ${SE_OTEL_JVM_ARGS}"
92+
fi
7793
else
7894
echo "Tracing is disabled"
7995
fi

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -450,11 +450,11 @@ chart_test_autoscaling_deployment_https:
450450
SELENIUM_GRID_TEST_HEADLESS=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_PORT=443 make chart_test_autoscaling_deployment
451451

452452
chart_test_autoscaling_deployment:
453-
VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) NAMESPACE=$(NAMESPACE) \
453+
SE_ENABLE_TRACING=true VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) NAMESPACE=$(NAMESPACE) \
454454
./tests/charts/make/chart_test.sh DeploymentAutoscaling
455455

456456
chart_test_autoscaling_job_https:
457-
SELENIUM_GRID_TEST_HEADLESS=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_PORT=443 make chart_test_autoscaling_job
457+
SE_ENABLE_TRACING=true SELENIUM_GRID_TEST_HEADLESS=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_PORT=443 make chart_test_autoscaling_job
458458

459459
chart_test_autoscaling_job:
460460
VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) NAMESPACE=$(NAMESPACE) \

NodeBase/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ ENV SE_NODE_OVERRIDE_MAX_SESSIONS false
198198

199199
# Following line fixes https://github.com/SeleniumHQ/docker-selenium/issues/87
200200
ENV DBUS_SESSION_BUS_ADDRESS=/dev/null
201+
ENV SE_OTEL_SERVICE_NAME "selenium-node"
201202

202203
# Copying configuration script generator
203204
COPY --chown="${SEL_UID}:${SEL_GID}" generate_config /opt/bin/generate_config

NodeBase/start-selenium-node.sh

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,28 @@ fi
9292

9393
EXTRA_LIBS=""
9494

95-
if [ ! -z "$SE_ENABLE_TRACING" ]; then
95+
if [ "$SE_ENABLE_TRACING" = "true" ]; then
9696
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
9797
[ -n "$EXTRA_LIBS" ] && [ -n "${EXTERNAL_JARS}" ] && EXTRA_LIBS=${EXTRA_LIBS}:
9898
EXTRA_LIBS="--ext "${EXTRA_LIBS}${EXTERNAL_JARS}
9999
echo "Tracing is enabled"
100100
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
101+
if [ -n "$SE_OTEL_SERVICE_NAME" ]; then
102+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.resource.attributes=service.name=${SE_OTEL_SERVICE_NAME}"
103+
fi
104+
if [ -n "$SE_OTEL_TRACES_EXPORTER" ]; then
105+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.traces.exporter=${SE_OTEL_TRACES_EXPORTER}"
106+
fi
107+
if [ -n "$SE_OTEL_EXPORTER_ENDPOINT" ]; then
108+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.exporter.${SE_OTEL_TRACES_EXPORTER,,}.endpoint=${SE_OTEL_EXPORTER_ENDPOINT}"
109+
fi
110+
if [ -n "$SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED" ]; then
111+
SE_OTEL_JVM_ARGS="$SE_OTEL_JVM_ARGS -Dotel.java.global-autoconfigure.enabled=${SE_OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED}"
112+
fi
113+
if [ -n "$SE_OTEL_JVM_ARGS" ]; then
114+
echo "List arguments for OpenTelemetry: ${SE_OTEL_JVM_ARGS}"
115+
SE_JAVA_OPTS="$SE_JAVA_OPTS ${SE_OTEL_JVM_ARGS}"
116+
fi
101117
else
102118
echo "Tracing is disabled"
103119
fi

0 commit comments

Comments
 (0)