Skip to content

Commit fd6cab3

Browse files
committed
elasticsearch metadata
1 parent 780b3d8 commit fd6cab3

File tree

7 files changed

+147
-33
lines changed

7 files changed

+147
-33
lines changed

docs/instrumentation-list.yaml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,9 @@ libraries:
11001100
default: false
11011101
elasticsearch:
11021102
- name: elasticsearch-api-client-7.16
1103+
description: This instrumentation provides client spans for Elasticsearch API
1104+
client requests for version 7 of the client. Versions 8.10 and later have native
1105+
support for OpenTelemetry.
11031106
source_path: instrumentation/elasticsearch/elasticsearch-api-client-7.16
11041107
scope:
11051108
name: io.opentelemetry.elasticsearch-api-client-7.16
@@ -1122,6 +1125,21 @@ libraries:
11221125
may contain personal or sensitive information.
11231126
type: boolean
11241127
default: false
1128+
telemetry:
1129+
- when: default
1130+
spans:
1131+
- span_kind: CLIENT
1132+
attributes:
1133+
- name: db.system
1134+
type: STRING
1135+
- name: http.request.method
1136+
type: STRING
1137+
- name: server.address
1138+
type: STRING
1139+
- name: server.port
1140+
type: LONG
1141+
- name: url.full
1142+
type: STRING
11251143
- name: elasticsearch-rest-6.4
11261144
source_path: instrumentation/elasticsearch/elasticsearch-rest-6.4
11271145
scope:
@@ -1135,6 +1153,21 @@ libraries:
11351153
Enable the capture of search query bodies. It is important to note that Elasticsearch queries may contain personal or sensitive information.
11361154
type: boolean
11371155
default: false
1156+
telemetry:
1157+
- when: default
1158+
spans:
1159+
- span_kind: CLIENT
1160+
attributes:
1161+
- name: db.system
1162+
type: STRING
1163+
- name: http.request.method
1164+
type: STRING
1165+
- name: server.address
1166+
type: STRING
1167+
- name: server.port
1168+
type: LONG
1169+
- name: url.full
1170+
type: STRING
11381171
- name: elasticsearch-rest-7.0
11391172
source_path: instrumentation/elasticsearch/elasticsearch-rest-7.0
11401173
scope:
@@ -1150,6 +1183,21 @@ libraries:
11501183
Enable the capture of search query bodies. It is important to note that Elasticsearch queries may contain personal or sensitive information.
11511184
type: boolean
11521185
default: false
1186+
telemetry:
1187+
- when: default
1188+
spans:
1189+
- span_kind: CLIENT
1190+
attributes:
1191+
- name: db.system
1192+
type: STRING
1193+
- name: http.request.method
1194+
type: STRING
1195+
- name: server.address
1196+
type: STRING
1197+
- name: server.port
1198+
type: LONG
1199+
- name: url.full
1200+
type: STRING
11531201
- name: elasticsearch-transport-5.0
11541202
description: |
11551203
This instrumentation provides client spans for Elasticsearch transport client requests. Each call produces a span named after the Elasticsearch action, enriched with transport-specific attributes.

instrumentation-docs/collect.sh

Lines changed: 84 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
#!/usr/bin/env bash
22

33
# Runs selected Gradle test tasks to regenerate *.telemetry output for
4-
# individual OpenTelemetry Java agent instrumentations.
4+
# individual OpenTelemetry Java agent instrumentations. Some instrumentation test suites don't run
5+
# on Apple Silicon, so we use colima to run them in an x86_64 container.
56

67
set -euo pipefail
78

8-
# Oracle UCP won't run on Apple Silicon, so we need to use colima to run as x86_64
9-
if [[ "$(uname -m)" == "arm64" || "$(uname -m)" == "aarch64" ]]; then
10-
colima start --arch x86_64 --memory 4
11-
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
12-
export DOCKER_HOST="unix://${HOME}/.colima/docker.sock"
13-
fi
14-
159
readonly INSTRUMENTATIONS=(
1610
# <module path (colon-separated)> : <javaagent|library> : [ gradle-task-suffix ]
1711
"activej-http-6.0:javaagent:test"
@@ -66,12 +60,15 @@ readonly INSTRUMENTATIONS=(
6660
"hikaricp-3.0:javaagent:testStableSemconv"
6761
"tomcat:tomcat-jdbc:javaagent:test"
6862
"tomcat:tomcat-jdbc:javaagent:testStableSemconv"
69-
"oracle-ucp-11.2:javaagent:test"
70-
"oracle-ucp-11.2:javaagent:testStableSemconv"
7163
"oshi:javaagent:test"
7264
"oshi:javaagent:testExperimental"
7365
"vibur-dbcp-11.0:javaagent:test"
7466
"vibur-dbcp-11.0:javaagent:testStableSemconv"
67+
"elasticsearch:elasticsearch-api-client-7.16:javaagent:test"
68+
"elasticsearch:elasticsearch-api-client-7.16:javaagent:testStableSemconv"
69+
"elasticsearch:elasticsearch-rest-5.0:javaagent:test"
70+
"elasticsearch:elasticsearch-rest-6.4:javaagent:test"
71+
"elasticsearch:elasticsearch-rest-7.0:javaagent:test"
7572
"elasticsearch:elasticsearch-transport-5.0:javaagent:test"
7673
"elasticsearch:elasticsearch-transport-5.0:javaagent:testStableSemconv"
7774
"elasticsearch:elasticsearch-transport-5.0:javaagent:testExperimental"
@@ -89,6 +86,11 @@ readonly INSTRUMENTATIONS=(
8986
"elasticsearch:elasticsearch-transport-6.0:javaagent:elasticsearch7TestExperimental"
9087
)
9188

89+
readonly COLIMA_INSTRUMENTATIONS=(
90+
"oracle-ucp-11.2:javaagent:test"
91+
"oracle-ucp-11.2:javaagent:testStableSemconv"
92+
)
93+
9294
readonly TELEMETRY_DIR_NAME=".telemetry"
9395

9496
# Splits a single descriptor into its three logical parts.
@@ -159,39 +161,88 @@ build_gradle_task() {
159161
echo "$task"
160162
}
161163

164+
# Processes a list of descriptors and returns an array of Gradle tasks
165+
# Args: array of descriptors
166+
# Echoes the Gradle tasks, one per line
167+
process_descriptors() {
168+
local descriptors=("$@")
169+
local -a tasks=()
170+
171+
for descriptor in "${descriptors[@]}"; do
172+
# Parse the descriptor into its components
173+
if ! read -r module_path task_type task_suffix \
174+
< <(parse_descriptor "$descriptor"); then
175+
continue # skip any badly formed descriptors
176+
fi
177+
178+
# Make sure we're starting fresh for this instrumentation
179+
delete_existing_telemetry "$module_path"
180+
181+
# Build the Gradle task string and add to array
182+
tasks+=( "$(build_gradle_task "$module_path" "$task_type" "$task_suffix")" )
183+
done
184+
185+
# Echo tasks, one per line
186+
for t in "${tasks[@]}"; do
187+
echo "$t"
188+
done
189+
}
190+
191+
run_gradle_tasks() {
192+
local -a tasks=("$@")
193+
194+
if [[ ${#tasks[@]} -eq 0 ]]; then
195+
echo "No tasks to run"
196+
return 0
197+
fi
198+
199+
echo
200+
echo "Running Gradle tasks:"
201+
printf ' %s\n' "${tasks[@]}"
202+
echo
203+
204+
./gradlew "${tasks[@]}" \
205+
-PcollectMetadata=true \
206+
--rerun-tasks --continue
207+
}
208+
162209
# Cleans any stray .telemetry directories left in the repo.
163210
find_and_remove_all_telemetry() {
164211
echo "Removing stray .telemetry directories..."
165212
find . -type d -name "$TELEMETRY_DIR_NAME" -exec rm -rf {} +
166213
}
167214

168-
# Main
169-
declare -a gradle_tasks=()
170215

171-
for descriptor in "${INSTRUMENTATIONS[@]}"; do
172-
# Parse the descriptor into its components
173-
if ! read -r module_path task_type task_suffix \
174-
< <(parse_descriptor "$descriptor"); then
175-
continue # skip any badly formed descriptors
176-
fi
216+
# Main execution
217+
main() {
218+
colima stop
219+
220+
# Process regular instrumentations
221+
echo "Processing standard instrumentations..."
222+
gradle_tasks=()
223+
while IFS= read -r line; do
224+
gradle_tasks+=("$line")
225+
done < <(process_descriptors "${INSTRUMENTATIONS[@]}")
226+
run_gradle_tasks "${gradle_tasks[@]}"
177227

178-
# Make sure we’re starting fresh for this instrumentation
179-
delete_existing_telemetry "$module_path"
228+
# Setup colima for Oracle UCP tests if needed
229+
setup_colima
180230

181-
# Build the Gradle task string and queue it
182-
gradle_tasks+=( "$(build_gradle_task "$module_path" "$task_type" "$task_suffix")" )
183-
done
231+
# Process colima-specific instrumentations
232+
echo "Processing colima instrumentations..."
233+
gradle_tasks=()
234+
while IFS= read -r line; do
235+
gradle_tasks+=("$line")
236+
done < <(process_descriptors "${COLIMA_INSTRUMENTATIONS[@]}")
237+
run_gradle_tasks "${gradle_tasks[@]}"
184238

185-
echo
186-
echo "Running Gradle tasks:"
187-
printf ' %s\n' "${gradle_tasks[@]}"
188-
echo
239+
colima stop
189240

190-
./gradlew "${gradle_tasks[@]}" \
191-
-PcollectMetadata=true \
192-
--rerun-tasks --continue
241+
# uncomment the next line to remove all .telemetry directories
242+
#find_and_remove_all_telemetry
193243

194-
# uncomment the next line to remove all .telemetry directories
195-
#find_and_remove_all_telemetry
244+
echo "Telemetry file regeneration complete."
245+
}
196246

197-
echo "Telemetry file regeneration complete."
247+
# Run main function
248+
main "$@"

instrumentation/elasticsearch/elasticsearch-api-client-7.16/javaagent/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,14 @@ tasks {
7777
withType<Test>().configureEach {
7878
jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true")
7979
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
80+
81+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
82+
systemProperty("collectSpans", true)
8083
}
8184

8285
val testStableSemconv by registering(Test::class) {
8386
jvmArgs("-Dotel.semconv-stability.opt-in=database")
87+
systemProperty("metaDataConfig", "otel.semconv-stability.opt-in=database")
8488
}
8589

8690
check {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
description: This instrumentation provides client spans for Elasticsearch API client requests for
2+
version 7 of the client. Versions 8.10 and later have native support for OpenTelemetry.

instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,8 @@ tasks {
3939
withType<Test>().configureEach {
4040
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
4141
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
42+
43+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
44+
systemProperty("collectSpans", true)
4245
}
4346
}

instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,8 @@ dependencies {
3838
tasks {
3939
test {
4040
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
41+
42+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
43+
systemProperty("collectSpans", true)
4144
}
4245
}

instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,8 @@ dependencies {
4141
tasks {
4242
test {
4343
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
44+
45+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
46+
systemProperty("collectSpans", true)
4447
}
4548
}

0 commit comments

Comments
 (0)