diff --git a/docs/instrumentation-list.yaml b/docs/instrumentation-list.yaml index 0761a72a0374..8aa3ece87469 100644 --- a/docs/instrumentation-list.yaml +++ b/docs/instrumentation-list.yaml @@ -6470,6 +6470,12 @@ libraries: type: STRING jms: - name: jms-1.1 + display_name: JMS (Java Message Service) + description: | + This instrumentation enables messaging spans for JMS (Java Message Service) message producers and consumers. + semantic_conventions: + - MESSAGING_SPANS + library_link: https://javaee.github.io/javaee-spec/javadocs/javax/jms/package-summary.html source_path: instrumentation/jms/jms-1.1 scope: name: io.opentelemetry.jms-1.1 @@ -6478,7 +6484,51 @@ libraries: - javax.jms:javax.jms-api:(,) - jakarta.jms:jakarta.jms-api:(,3) - javax.jms:jms-api:(,) + configurations: + - name: otel.instrumentation.messaging.experimental.receive-telemetry.enabled + description: | + Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace. + type: boolean + default: false + - name: otel.instrumentation.messaging.experimental.capture-headers + description: | + Enables capturing messaging headers as span attributes. Provide a comma-separated list of header names to capture. + type: list + default: '' + telemetry: + - when: default + spans: + - span_kind: CONSUMER + attributes: + - name: messaging.destination.name + type: STRING + - name: messaging.destination.temporary + type: BOOLEAN + - name: messaging.message.id + type: STRING + - name: messaging.operation + type: STRING + - name: messaging.system + type: STRING + - span_kind: PRODUCER + attributes: + - name: messaging.destination.name + type: STRING + - name: messaging.destination.temporary + type: BOOLEAN + - name: messaging.message.id + type: STRING + - name: messaging.operation + type: STRING + - name: messaging.system + type: STRING - name: jms-3.0 + display_name: JMS (Java Message Service) + description: | + This instrumentation enables messaging spans for Jakarta JMS (Java Message Service) message producers and consumers. + semantic_conventions: + - MESSAGING_SPANS + library_link: https://jakarta.ee/specifications/messaging/3.0/ source_path: instrumentation/jms/jms-3.0 minimum_java_version: 11 scope: @@ -6486,14 +6536,85 @@ libraries: target_versions: javaagent: - jakarta.jms:jakarta.jms-api:[3.0.0,) + configurations: + - name: otel.instrumentation.messaging.experimental.receive-telemetry.enabled + description: | + Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace. + type: boolean + default: false + - name: otel.instrumentation.messaging.experimental.capture-headers + description: | + Enables capturing messaging headers as span attributes. Provide a comma-separated list of header names to capture. + type: list + default: '' + telemetry: + - when: default + spans: + - span_kind: CONSUMER + attributes: + - name: messaging.destination.name + type: STRING + - name: messaging.message.id + type: STRING + - name: messaging.operation + type: STRING + - name: messaging.system + type: STRING + - span_kind: PRODUCER + attributes: + - name: messaging.destination.name + type: STRING + - name: messaging.destination.temporary + type: BOOLEAN + - name: messaging.message.id + type: STRING + - name: messaging.operation + type: STRING + - name: messaging.system + type: STRING jodd: - name: jodd-http-4.2 + display_name: Jodd HTTP + description: This instrumentation enables HTTP client spans and HTTP client metrics + for Jodd HTTP. + semantic_conventions: + - HTTP_CLIENT_SPANS + - HTTP_CLIENT_METRICS + library_link: https://http.jodd.org/ source_path: instrumentation/jodd-http-4.2 scope: name: io.opentelemetry.jodd-http-4.2 target_versions: javaagent: - org.jodd:jodd-http:[4.2.0,) + configurations: + - name: otel.instrumentation.http.known-methods + description: | + Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`. + type: list + default: CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE + - name: otel.instrumentation.http.client.capture-request-headers + description: List of HTTP request headers to capture in HTTP client telemetry. + type: list + default: '' + - name: otel.instrumentation.http.client.capture-response-headers + description: List of HTTP response headers to capture in HTTP client telemetry. + type: list + default: '' + - name: otel.instrumentation.common.peer-service-mapping + description: Used to specify a mapping from host names or IP addresses to peer + services. + type: map + default: '' + - name: otel.instrumentation.http.client.emit-experimental-telemetry + description: | + 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. + type: boolean + default: false + - name: otel.instrumentation.http.client.experimental.redact-query-parameters + description: Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans. + type: boolean + default: true telemetry: - when: default metrics: @@ -6535,6 +6656,12 @@ libraries: type: STRING jsf: - name: jsf-mojarra-1.2 + display_name: JSF + description: | + This instrumentation enables controller spans for Mojarra JSF action listeners (controller spans are disabled by default). + library_link: https://github.com/eclipse-ee4j/mojarra + features: + - CONTROLLER_SPANS source_path: instrumentation/jsf/jsf-mojarra-1.2 scope: name: io.opentelemetry.jsf-mojarra-1.2 @@ -6545,7 +6672,23 @@ libraries: - com.sun.faces:jsf-impl:[2.0,2.1) - org.glassfish:javax.faces:[2.0.7,3) - javax.faces:jsf-impl:[1.2,2) + configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false + telemetry: + - when: otel.instrumentation.common.experimental.controller-telemetry.enabled=true + spans: + - span_kind: INTERNAL + attributes: [] - name: jsf-mojarra-3.0 + display_name: JSF + description: | + This instrumentation enables controller spans for Mojarra JSF action listeners (controller spans are disabled by default). + library_link: https://github.com/eclipse-ee4j/mojarra + features: + - CONTROLLER_SPANS source_path: instrumentation/jsf/jsf-mojarra-3.0 minimum_java_version: 11 scope: @@ -6553,14 +6696,46 @@ libraries: target_versions: javaagent: - org.glassfish:jakarta.faces:[3,) + configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false + telemetry: + - when: otel.instrumentation.common.experimental.controller-telemetry.enabled=true + spans: + - span_kind: INTERNAL + attributes: [] - name: jsf-myfaces-1.2 + display_name: JSF + description: | + This instrumentation enables controller spans for Apache MyFaces action listeners (controller spans are disabled by default). + library_link: https://myfaces.apache.org/ + features: + - CONTROLLER_SPANS source_path: instrumentation/jsf/jsf-myfaces-1.2 scope: name: io.opentelemetry.jsf-myfaces-1.2 target_versions: javaagent: - org.apache.myfaces.core:myfaces-impl:[1.2,3) + configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false + telemetry: + - when: otel.instrumentation.common.experimental.controller-telemetry.enabled=true + spans: + - span_kind: INTERNAL + attributes: [] - name: jsf-myfaces-3.0 + display_name: JSF + description: | + This instrumentation enables controller spans for Apache MyFaces action listeners (controller spans are disabled by default). + library_link: https://myfaces.apache.org/ + features: + - CONTROLLER_SPANS source_path: instrumentation/jsf/jsf-myfaces-3.0 minimum_java_version: 11 scope: @@ -6568,6 +6743,16 @@ libraries: target_versions: javaagent: - org.apache.myfaces.core:myfaces-impl:[3,) + configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false + telemetry: + - when: otel.instrumentation.common.experimental.controller-telemetry.enabled=true + spans: + - span_kind: INTERNAL + attributes: [] jsp: - name: jsp-2.3 source_path: instrumentation/jsp-2.3 diff --git a/instrumentation-docs/instrumentations.sh b/instrumentation-docs/instrumentations.sh index 89668cb3f00b..b7c01a70b913 100755 --- a/instrumentation-docs/instrumentations.sh +++ b/instrumentation-docs/instrumentations.sh @@ -139,7 +139,12 @@ readonly INSTRUMENTATIONS=( "jetty:jetty-12.0:javaagent:test" "jetty-httpclient:jetty-httpclient-12.0:javaagent:test" "jetty-httpclient:jetty-httpclient-9.2:javaagent:test" + "jms:jms-1.1:javaagent:test" "jodd-http-4.2:javaagent:test" + "jsf:jsf-mojarra-1.2:javaagent:mojarra2Test" + "jsf:jsf-mojarra-3.0:javaagent:test" + "jsf:jsf-myfaces-1.2:javaagent:myfaces2Test" + "jsf:jsf-myfaces-3.0:javaagent:test" "kafka:kafka-connect-2.6:testing:test" "nats:nats-2.17:javaagent:test" "nats:nats-2.17:javaagent:testExperimental" @@ -211,6 +216,7 @@ readonly COLIMA_INSTRUMENTATIONS=( "elasticsearch:elasticsearch-rest-5.0:javaagent:testStableSemconv" "elasticsearch:elasticsearch-rest-6.4:javaagent:test" "elasticsearch:elasticsearch-rest-6.4:javaagent:testStableSemconv" + "jms:jms-3.0:javaagent:test" "oracle-ucp-11.2:javaagent:test" "oracle-ucp-11.2:javaagent:testStableSemconv" "spring:spring-jms:spring-jms-6.0:javaagent:test" diff --git a/instrumentation/jms/jms-1.1/javaagent/build.gradle.kts b/instrumentation/jms/jms-1.1/javaagent/build.gradle.kts index 00ec1e0c9fdd..48481b5b8cc7 100644 --- a/instrumentation/jms/jms-1.1/javaagent/build.gradle.kts +++ b/instrumentation/jms/jms-1.1/javaagent/build.gradle.kts @@ -53,6 +53,7 @@ testing { tasks { withType().configureEach { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } val testReceiveSpansDisabled by registering(Test::class) { diff --git a/instrumentation/jms/jms-1.1/metadata.yaml b/instrumentation/jms/jms-1.1/metadata.yaml new file mode 100644 index 000000000000..5632397b22d1 --- /dev/null +++ b/instrumentation/jms/jms-1.1/metadata.yaml @@ -0,0 +1,20 @@ +display_name: JMS (Java Message Service) +description: > + This instrumentation enables messaging spans for JMS (Java Message Service) message producers and + consumers. +semantic_conventions: + - MESSAGING_SPANS +library_link: https://javaee.github.io/javaee-spec/javadocs/javax/jms/package-summary.html +configurations: + - name: otel.instrumentation.messaging.experimental.receive-telemetry.enabled + description: > + Enables experimental receive telemetry, which will cause consumers to start a new trace, with + only a span link connecting it to the producer trace. + type: boolean + default: false + - name: otel.instrumentation.messaging.experimental.capture-headers + description: > + Enables capturing messaging headers as span attributes. Provide a comma-separated list of + header names to capture. + type: list + default: '' diff --git a/instrumentation/jms/jms-3.0/javaagent/build.gradle.kts b/instrumentation/jms/jms-3.0/javaagent/build.gradle.kts index 0a2426a5db3f..996f2294e09c 100644 --- a/instrumentation/jms/jms-3.0/javaagent/build.gradle.kts +++ b/instrumentation/jms/jms-3.0/javaagent/build.gradle.kts @@ -38,6 +38,7 @@ otelJava { tasks { test { usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service) + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") } val testReceiveSpansDisabled by registering(Test::class) { diff --git a/instrumentation/jms/jms-3.0/metadata.yaml b/instrumentation/jms/jms-3.0/metadata.yaml new file mode 100644 index 000000000000..a15e4134369e --- /dev/null +++ b/instrumentation/jms/jms-3.0/metadata.yaml @@ -0,0 +1,20 @@ +display_name: JMS (Java Message Service) +description: > + This instrumentation enables messaging spans for Jakarta JMS (Java Message Service) message + producers and consumers. +semantic_conventions: + - MESSAGING_SPANS +library_link: https://jakarta.ee/specifications/messaging/3.0/ +configurations: + - name: otel.instrumentation.messaging.experimental.receive-telemetry.enabled + description: > + Enables experimental receive telemetry, which will cause consumers to start a new trace, with + only a span link connecting it to the producer trace. + type: boolean + default: false + - name: otel.instrumentation.messaging.experimental.capture-headers + description: > + Enables capturing messaging headers as span attributes. Provide a comma-separated list of + header names to capture. + type: list + default: '' diff --git a/instrumentation/jodd-http-4.2/metadata.yaml b/instrumentation/jodd-http-4.2/metadata.yaml new file mode 100644 index 000000000000..15e554cf9c29 --- /dev/null +++ b/instrumentation/jodd-http-4.2/metadata.yaml @@ -0,0 +1,36 @@ +display_name: Jodd HTTP +description: This instrumentation enables HTTP client spans and HTTP client metrics for Jodd HTTP. +semantic_conventions: + - HTTP_CLIENT_SPANS + - HTTP_CLIENT_METRICS +library_link: https://http.jodd.org/ +configurations: + - name: otel.instrumentation.http.known-methods + description: > + Configures the instrumentation to recognize an alternative set of HTTP request methods. All + other methods will be treated as `_OTHER`. + type: list + default: "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE" + - name: otel.instrumentation.http.client.capture-request-headers + description: List of HTTP request headers to capture in HTTP client telemetry. + type: list + default: "" + - name: otel.instrumentation.http.client.capture-response-headers + description: List of HTTP response headers to capture in HTTP client telemetry. + type: list + default: "" + - name: otel.instrumentation.common.peer-service-mapping + description: Used to specify a mapping from host names or IP addresses to peer services. + type: map + default: "" + - name: otel.instrumentation.http.client.emit-experimental-telemetry + description: > + 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. + type: boolean + default: false + - name: otel.instrumentation.http.client.experimental.redact-query-parameters + description: Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans. + type: boolean + default: true diff --git a/instrumentation/jsf/jsf-mojarra-1.2/javaagent/build.gradle.kts b/instrumentation/jsf/jsf-mojarra-1.2/javaagent/build.gradle.kts index 7e69f39c3cab..c1b4be43223a 100644 --- a/instrumentation/jsf/jsf-mojarra-1.2/javaagent/build.gradle.kts +++ b/instrumentation/jsf/jsf-mojarra-1.2/javaagent/build.gradle.kts @@ -86,4 +86,6 @@ tasks { } tasks.withType().configureEach { jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") + systemProperty("metadataConfig", "otel.instrumentation.common.experimental.controller-telemetry.enabled=true") } diff --git a/instrumentation/jsf/jsf-mojarra-1.2/metadata.yaml b/instrumentation/jsf/jsf-mojarra-1.2/metadata.yaml new file mode 100644 index 000000000000..06aba3f3548b --- /dev/null +++ b/instrumentation/jsf/jsf-mojarra-1.2/metadata.yaml @@ -0,0 +1,12 @@ +display_name: JSF +description: > + This instrumentation enables controller spans for Mojarra JSF action listeners (controller spans + are disabled by default). +features: + - CONTROLLER_SPANS +library_link: https://github.com/eclipse-ee4j/mojarra +configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false diff --git a/instrumentation/jsf/jsf-mojarra-3.0/javaagent/build.gradle.kts b/instrumentation/jsf/jsf-mojarra-3.0/javaagent/build.gradle.kts index 59b3f3864e86..8a1d964463b2 100644 --- a/instrumentation/jsf/jsf-mojarra-3.0/javaagent/build.gradle.kts +++ b/instrumentation/jsf/jsf-mojarra-3.0/javaagent/build.gradle.kts @@ -40,5 +40,7 @@ dependencies { tasks { withType().configureEach { jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") + systemProperty("metadataConfig", "otel.instrumentation.common.experimental.controller-telemetry.enabled=true") } } diff --git a/instrumentation/jsf/jsf-mojarra-3.0/metadata.yaml b/instrumentation/jsf/jsf-mojarra-3.0/metadata.yaml new file mode 100644 index 000000000000..06aba3f3548b --- /dev/null +++ b/instrumentation/jsf/jsf-mojarra-3.0/metadata.yaml @@ -0,0 +1,12 @@ +display_name: JSF +description: > + This instrumentation enables controller spans for Mojarra JSF action listeners (controller spans + are disabled by default). +features: + - CONTROLLER_SPANS +library_link: https://github.com/eclipse-ee4j/mojarra +configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false diff --git a/instrumentation/jsf/jsf-myfaces-1.2/javaagent/build.gradle.kts b/instrumentation/jsf/jsf-myfaces-1.2/javaagent/build.gradle.kts index 559867c4de1f..8ff8a5e064fe 100644 --- a/instrumentation/jsf/jsf-myfaces-1.2/javaagent/build.gradle.kts +++ b/instrumentation/jsf/jsf-myfaces-1.2/javaagent/build.gradle.kts @@ -57,4 +57,6 @@ tasks { tasks.withType().configureEach { jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") + systemProperty("metadataConfig", "otel.instrumentation.common.experimental.controller-telemetry.enabled=true") } diff --git a/instrumentation/jsf/jsf-myfaces-1.2/metadata.yaml b/instrumentation/jsf/jsf-myfaces-1.2/metadata.yaml new file mode 100644 index 000000000000..c9ac4662170b --- /dev/null +++ b/instrumentation/jsf/jsf-myfaces-1.2/metadata.yaml @@ -0,0 +1,12 @@ +display_name: JSF +description: > + This instrumentation enables controller spans for Apache MyFaces action listeners (controller + spans are disabled by default). +features: + - CONTROLLER_SPANS +library_link: https://myfaces.apache.org/ +configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false diff --git a/instrumentation/jsf/jsf-myfaces-3.0/javaagent/build.gradle.kts b/instrumentation/jsf/jsf-myfaces-3.0/javaagent/build.gradle.kts index 2adc2f0c1c56..5295ef9a6f85 100644 --- a/instrumentation/jsf/jsf-myfaces-3.0/javaagent/build.gradle.kts +++ b/instrumentation/jsf/jsf-myfaces-3.0/javaagent/build.gradle.kts @@ -40,5 +40,7 @@ dependencies { tasks { withType().configureEach { jvmArgs("-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true") + systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false") + systemProperty("metadataConfig", "otel.instrumentation.common.experimental.controller-telemetry.enabled=true") } } diff --git a/instrumentation/jsf/jsf-myfaces-3.0/metadata.yaml b/instrumentation/jsf/jsf-myfaces-3.0/metadata.yaml new file mode 100644 index 000000000000..c9ac4662170b --- /dev/null +++ b/instrumentation/jsf/jsf-myfaces-3.0/metadata.yaml @@ -0,0 +1,12 @@ +display_name: JSF +description: > + This instrumentation enables controller spans for Apache MyFaces action listeners (controller + spans are disabled by default). +features: + - CONTROLLER_SPANS +library_link: https://myfaces.apache.org/ +configurations: + - name: otel.instrumentation.common.experimental.controller-telemetry.enabled + description: Enables the creation of experimental controller spans. + type: boolean + default: false