Skip to content

Commit 46ee351

Browse files
authored
Kubernetes client metadata (#15387)
1 parent a72839c commit 46ee351

File tree

7 files changed

+309
-88
lines changed

7 files changed

+309
-88
lines changed

docs/instrumentation-list.yaml

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7233,12 +7233,122 @@ libraries:
72337233
- io.ktor:ktor-client-core:3.0.0
72347234
kubernetes:
72357235
- name: kubernetes-client-7.0
7236+
display_name: Kubernetes Client
7237+
description: This instrumentation enables HTTP client spans and HTTP client metrics
7238+
for the Kubernetes Client for Java.
7239+
semantic_conventions:
7240+
- HTTP_CLIENT_SPANS
7241+
- HTTP_CLIENT_METRICS
7242+
library_link: https://github.com/kubernetes-client/java
72367243
source_path: instrumentation/kubernetes-client-7.0
72377244
scope:
72387245
name: io.opentelemetry.kubernetes-client-7.0
7246+
schema_url: https://opentelemetry.io/schemas/1.37.0
72397247
target_versions:
72407248
javaagent:
72417249
- io.kubernetes:client-java-api:[7.0.0,)
7250+
configurations:
7251+
- name: otel.instrumentation.kubernetes-client.experimental-span-attributes
7252+
description: |
7253+
Enables experimental span attributes `kubernetes-client.namespace` and `kubernetes-client.name` for Kubernetes API requests.
7254+
type: boolean
7255+
default: false
7256+
- name: otel.instrumentation.http.known-methods
7257+
description: |
7258+
Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.
7259+
type: list
7260+
default: CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE
7261+
- name: otel.instrumentation.http.client.capture-request-headers
7262+
description: List of HTTP request headers to capture in HTTP client telemetry.
7263+
type: list
7264+
default: ''
7265+
- name: otel.instrumentation.http.client.capture-response-headers
7266+
description: List of HTTP response headers to capture in HTTP client telemetry.
7267+
type: list
7268+
default: ''
7269+
- name: otel.instrumentation.common.peer-service-mapping
7270+
description: Used to specify a mapping from host names or IP addresses to peer
7271+
services.
7272+
type: map
7273+
default: ''
7274+
- name: otel.instrumentation.http.client.emit-experimental-telemetry
7275+
description: |
7276+
Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.
7277+
type: boolean
7278+
default: false
7279+
- name: otel.instrumentation.http.client.experimental.redact-query-parameters
7280+
description: Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.
7281+
type: boolean
7282+
default: true
7283+
telemetry:
7284+
- when: default
7285+
metrics:
7286+
- name: http.client.request.duration
7287+
description: Duration of HTTP client requests.
7288+
type: HISTOGRAM
7289+
unit: s
7290+
attributes:
7291+
- name: http.request.method
7292+
type: STRING
7293+
- name: http.response.status_code
7294+
type: LONG
7295+
- name: server.address
7296+
type: STRING
7297+
- name: server.port
7298+
type: LONG
7299+
spans:
7300+
- span_kind: CLIENT
7301+
attributes:
7302+
- name: error.type
7303+
type: STRING
7304+
- name: http.request.method
7305+
type: STRING
7306+
- name: http.response.status_code
7307+
type: LONG
7308+
- name: peer.service
7309+
type: STRING
7310+
- name: server.address
7311+
type: STRING
7312+
- name: server.port
7313+
type: LONG
7314+
- name: url.full
7315+
type: STRING
7316+
- when: otel.instrumentation.kubernetes-client.experimental-span-attributes=true
7317+
metrics:
7318+
- name: http.client.request.duration
7319+
description: Duration of HTTP client requests.
7320+
type: HISTOGRAM
7321+
unit: s
7322+
attributes:
7323+
- name: http.request.method
7324+
type: STRING
7325+
- name: http.response.status_code
7326+
type: LONG
7327+
- name: server.address
7328+
type: STRING
7329+
- name: server.port
7330+
type: LONG
7331+
spans:
7332+
- span_kind: CLIENT
7333+
attributes:
7334+
- name: error.type
7335+
type: STRING
7336+
- name: http.request.method
7337+
type: STRING
7338+
- name: http.response.status_code
7339+
type: LONG
7340+
- name: kubernetes-client.name
7341+
type: STRING
7342+
- name: kubernetes-client.namespace
7343+
type: STRING
7344+
- name: peer.service
7345+
type: STRING
7346+
- name: server.address
7347+
type: STRING
7348+
- name: server.port
7349+
type: LONG
7350+
- name: url.full
7351+
type: STRING
72427352
lettuce:
72437353
- name: lettuce-4.0
72447354
source_path: instrumentation/lettuce/lettuce-4.0

docs/supported-libraries.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,13 @@ These are the supported libraries and frameworks:
9696
| [JBoss Log Manager](https://github.com/jboss-logging/jboss-logmanager) | 1.1+ | N/A | none |
9797
| [JDBC](https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.html) | Java 8+ | [opentelemetry-jdbc](../instrumentation/jdbc/library) | [Database Client Spans], [Database Client Metrics] [6] |
9898
| [Jedis](https://github.com/xetorthio/jedis) | 1.4+ | N/A | [Database Client Spans], [Database Client Metrics] [6] |
99-
| [JFinal](https://github.com/jfinal/jfinal) | 3.2+ | N/A | Provides `http.route` [2], Controller Spans [3] |
99+
| [JFinal](https://github.com/jfinal/jfinal) | 3.2+ | N/A | Provides `http.route` [2], Controller Spans [3] |
100100
| [JMS](https://javaee.github.io/javaee-spec/javadocs/javax/jms/package-summary.html) | 1.1+ | N/A | [Messaging Spans] |
101101
| [Jodd Http](https://http.jodd.org/) | 4.2+ | N/A | [HTTP Client Spans], [HTTP Client Metrics] |
102102
| [JSP](https://javaee.github.io/javaee-spec/javadocs/javax/servlet/jsp/package-summary.html) | 2.3.x only | N/A | Controller Spans [3] |
103103
| [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) | 1.0+ | N/A | Context propagation |
104104
| [Ktor](https://github.com/ktorio/ktor) | 1.0+ | [opentelemetry-ktor-1.0](../instrumentation/ktor/ktor-1.0/library),<br>[opentelemetry-ktor-2.0](../instrumentation/ktor/ktor-2.0/library),<br>[opentelemetry-ktor-3.0](../instrumentation/ktor/ktor-3.0/library) | [HTTP Client Spans], [HTTP Client Metrics], [HTTP Server Spans], [HTTP Server Metrics] |
105-
| [Kubernetes Client](https://github.com/kubernetes-client/java) | 7.0+ | N/A | [HTTP Client Spans] |
105+
| [Kubernetes Client](https://github.com/kubernetes-client/java) | 7.0+ | N/A | [HTTP Client Spans], [HTTP Client Metrics] |
106106
| [Lettuce](https://github.com/lettuce-io/lettuce-core) | 4.0+ | [opentelemetry-lettuce-5.1](../instrumentation/lettuce/lettuce-5.1/library) | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
107107
| [Log4j 1](https://logging.apache.org/log4j/1.2/) | 1.2+ | N/A | none |
108108
| [Log4j 2](https://logging.apache.org/log4j/2.x/) | 2.11+ | [opentelemetry-log4j-appender-2.17](../instrumentation/log4j/log4j-appender-2.17/library),<br>[opentelemetry-log4j-context-data-2.17-autoconfigure](../instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure) | none |

instrumentation-docs/instrumentations.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ readonly INSTRUMENTATIONS=(
150150
"jsp-2.3:javaagent:testExperimental"
151151
"kafka:kafka-clients:kafka-clients-2.6:library:test"
152152
"kafka:kafka-connect-2.6:testing:test"
153+
"kubernetes-client-7.0:javaagent:test"
154+
"kubernetes-client-7.0:javaagent:testExperimental"
153155
"nats:nats-2.17:javaagent:test"
154156
"nats:nats-2.17:javaagent:testExperimental"
155157
"netty:netty-3.8:javaagent:test"

instrumentation/kubernetes-client-7.0/javaagent/build.gradle.kts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,20 @@ tasks {
3939
}
4040
}
4141

42-
tasks.withType<Test>().configureEach {
43-
// TODO run tests both with and without experimental span attributes
44-
jvmArgs("-Dotel.instrumentation.kubernetes-client.experimental-span-attributes=true")
42+
tasks {
43+
withType<Test>().configureEach {
44+
systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
45+
}
46+
47+
val testExperimental by registering(Test::class) {
48+
testClassesDirs = sourceSets.test.get().output.classesDirs
49+
classpath = sourceSets.test.get().runtimeClasspath
50+
51+
jvmArgs("-Dotel.instrumentation.kubernetes-client.experimental-span-attributes=true")
52+
systemProperty("metadataConfig", "otel.instrumentation.kubernetes-client.experimental-span-attributes=true")
53+
}
54+
55+
check {
56+
dependsOn(testExperimental)
57+
}
4558
}

0 commit comments

Comments
 (0)