diff --git a/bin/hbase b/bin/hbase
index 496ebe1ad4b1..5f3b3261f023 100755
--- a/bin/hbase
+++ b/bin/hbase
@@ -487,6 +487,11 @@ add_jdk11_deps_to_classpath() {
done
}
+enable_trace() {
+ agent_jar=$(find lib/trace -type f -name "opentelemetry-javaagent-*")
+ HBASE_OPTS="$HBASE_OPTS -javaagent:$agent_jar $HBASE_TRACE_OPTS"
+}
+
#Add the development env class path stuff
if $in_dev_env; then
add_maven_deps_to_classpath "cached_classpath.txt"
@@ -764,6 +769,11 @@ elif [ "${DEBUG}" = "true" ]; then
echo "JDK11 jars skipped from classpath."
fi
+if [[ -n "${HBASE_TRACE_OPTS}" ]]; then
+ echo "Attach opentelemetry agent to enable trace"
+ enable_trace
+fi
+
# Have JVM dump heap if we run out of memory. Files will be 'launch directory'
# and are named like the following: java_pid21612.hprof. Apparently it doesn't
# 'cost' to have this flag enabled. Its a 1.6 flag only. See:
diff --git a/conf/hbase-env.sh b/conf/hbase-env.sh
index 6cc16d8db493..b3c4bafe4b97 100644
--- a/conf/hbase-env.sh
+++ b/conf/hbase-env.sh
@@ -144,3 +144,8 @@
# Additional argments passed to jshell invocation
# export HBASE_JSHELL_ARGS="--startup DEFAULT --startup PRINTING --startup hbase_startup.jsh"
+
+# Uncomment to enable trace, you can change the options to use other exporters such as jaeger or
+# zipkin. See https://github.com/open-telemetry/opentelemetry-java-instrumentation on how to config
+# exporters and other components through system properties.
+# export HBASE_TRACE_OPTS="-Dotel.config.sampler.probability=0.1 -Dotel.exporter=logging"
diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml
index 451e9f3e1f16..4ea650d82ce5 100644
--- a/hbase-assembly/pom.xml
+++ b/hbase-assembly/pom.xml
@@ -339,6 +339,12 @@
log4j
log4j
+
+
+ io.opentelemetry.javaagent
+ opentelemetry-javaagent
+ all
+
diff --git a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
index e5422f39e5f0..9780444deca8 100644
--- a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
+++ b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
@@ -112,6 +112,7 @@
org.apache.yetus:audience-annotations
org.slf4j:slf4j-api
org.slf4j:slf4j-log4j12
+ io.opentelemetry.javaagent:*
@@ -256,6 +257,12 @@
jakarta.jws:jakarta.jws-api
+
+ lib/trace
+
+ io.opentelemetry.javaagent:*
+
+
diff --git a/pom.xml b/pom.xml
index 77d12ac4b896..75b3c584e7ef 100755
--- a/pom.xml
+++ b/pom.xml
@@ -1483,6 +1483,7 @@
4.13
1.3
0.13.1
+ 0.13.0
1.2.17
2.28.2
@@ -2188,6 +2189,12 @@
opentelemetry-sdk-testing
${opentelemetry.version}
+
+ io.opentelemetry.javaagent
+ opentelemetry-javaagent
+ ${opentelemetry-instrumentation.version}
+ all
+
com.lmax
disruptor