Skip to content

Commit 3d29c0c

Browse files
authored
HBASE-26126 Backport HBASE-25424 "Find a way to config OpenTelemetry tracing without directly depending on opentelemetry-sdk" to branch-2 (#3552)
3/17 commits of HBASE-22120, original commit#57960fa8fa7228d65b1a4adc8e9b5b1a8158824d Co-authored-by: Duo Zhang <zhangduo@apache.org> Signed-off-by: Peter Somogyi <psomogyi@apache.org>
1 parent ca09643 commit 3d29c0c

File tree

5 files changed

+35
-0
lines changed

5 files changed

+35
-0
lines changed

bin/hbase

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,11 @@ add_jdk11_deps_to_classpath() {
487487
done
488488
}
489489

490+
enable_trace() {
491+
agent_jar=$(find lib/trace -type f -name "opentelemetry-javaagent-*")
492+
HBASE_OPTS="$HBASE_OPTS -javaagent:$agent_jar $HBASE_TRACE_OPTS"
493+
}
494+
490495
#Add the development env class path stuff
491496
if $in_dev_env; then
492497
add_maven_deps_to_classpath "cached_classpath.txt"
@@ -764,6 +769,11 @@ elif [ "${DEBUG}" = "true" ]; then
764769
echo "JDK11 jars skipped from classpath."
765770
fi
766771

772+
if [[ -n "${HBASE_TRACE_OPTS}" ]]; then
773+
echo "Attach opentelemetry agent to enable trace"
774+
enable_trace
775+
fi
776+
767777
# Have JVM dump heap if we run out of memory. Files will be 'launch directory'
768778
# and are named like the following: java_pid21612.hprof. Apparently it doesn't
769779
# 'cost' to have this flag enabled. Its a 1.6 flag only. See:

conf/hbase-env.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,8 @@
144144

145145
# Additional argments passed to jshell invocation
146146
# export HBASE_JSHELL_ARGS="--startup DEFAULT --startup PRINTING --startup hbase_startup.jsh"
147+
148+
# Uncomment to enable trace, you can change the options to use other exporters such as jaeger or
149+
# zipkin. See https://github.com/open-telemetry/opentelemetry-java-instrumentation on how to config
150+
# exporters and other components through system properties.
151+
# export HBASE_TRACE_OPTS="-Dotel.config.sampler.probability=0.1 -Dotel.exporter=logging"

hbase-assembly/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,12 @@
339339
<groupId>log4j</groupId>
340340
<artifactId>log4j</artifactId>
341341
</dependency>
342+
<!-- Include OpenTelemetry agent -->
343+
<dependency>
344+
<groupId>io.opentelemetry.javaagent</groupId>
345+
<artifactId>opentelemetry-javaagent</artifactId>
346+
<classifier>all</classifier>
347+
</dependency>
342348
</dependencies>
343349
<profiles>
344350
<profile>

hbase-assembly/src/main/assembly/hadoop-three-compat.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
<exclude>org.apache.yetus:audience-annotations</exclude>
113113
<exclude>org.slf4j:slf4j-api</exclude>
114114
<exclude>org.slf4j:slf4j-log4j12</exclude>
115+
<exclude>io.opentelemetry.javaagent:*</exclude>
115116
</excludes>
116117
</dependencySet>
117118
</dependencySets>
@@ -256,6 +257,12 @@
256257
<include>jakarta.jws:jakarta.jws-api</include>
257258
</includes>
258259
</dependencySet>
260+
<dependencySet>
261+
<outputDirectory>lib/trace</outputDirectory>
262+
<includes>
263+
<include>io.opentelemetry.javaagent:*</include>
264+
</includes>
265+
</dependencySet>
259266
</dependencySets>
260267

261268
</assembly>

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,6 +1483,7 @@
14831483
<junit.version>4.13</junit.version>
14841484
<hamcrest.version>1.3</hamcrest.version>
14851485
<opentelemetry.version>0.13.1</opentelemetry.version>
1486+
<opentelemetry-instrumentation.version>0.13.0</opentelemetry-instrumentation.version>
14861487
<log4j.version>1.2.17</log4j.version>
14871488
<mockito-core.version>2.28.2</mockito-core.version>
14881489
<!--Internally we use a different version of protobuf. See hbase-protocol-shaded-->
@@ -2188,6 +2189,12 @@
21882189
<artifactId>opentelemetry-sdk-testing</artifactId>
21892190
<version>${opentelemetry.version}</version>
21902191
</dependency>
2192+
<dependency>
2193+
<groupId>io.opentelemetry.javaagent</groupId>
2194+
<artifactId>opentelemetry-javaagent</artifactId>
2195+
<version>${opentelemetry-instrumentation.version}</version>
2196+
<classifier>all</classifier>
2197+
</dependency>
21912198
<dependency>
21922199
<groupId>com.lmax</groupId>
21932200
<artifactId>disruptor</artifactId>

0 commit comments

Comments
 (0)