Add support for library links in metadata (#14622)

This commit is contained in:
Jay DeLuca 2025-09-10 10:52:58 -04:00 committed by GitHub
parent f749f0037e
commit a26a32a739
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
56 changed files with 238 additions and 7 deletions

View File

@ -80,6 +80,20 @@ Each instrumentation should have a `metadata.yaml` file in the root of the instr
(`instrumentation/{some instrumentation}/metadata.yaml`) that contains structured metadata about the
instrumentation.
Example:
```yaml
description: "This instrumentation enables..."
disabled_by_default: true
classification: library
library_link: https://github.com/...
configurations:
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
description: Enables statement sanitization for database queries.
type: boolean
default: true
```
### Description (required)
At a minimum, every instrumentation metadata file should include a `description`.
@ -114,6 +128,10 @@ Some notes when writing descriptions:
* It is not usually necessary to include specific library or framework version numbers in the
description, unless that context is significant in some way.
### Library Link
For library instrumentations, include a `library_link` field with a URL to the library or framework's
main website or documentation, or if those don't exist, the GitHub repository.
### Configurations

View File

@ -7,6 +7,7 @@ libraries:
- name: activej-http-6.0
description: This instrumentation enables HTTP server spans and HTTP server metrics
for the ActiveJ HTTP server.
library_link: https://activej.io/
source_path: instrumentation/activej-http-6.0
minimum_java_version: 17
scope:
@ -61,6 +62,7 @@ libraries:
- name: akka-actor-2.3
description: This instrumentation provides context propagation for Akka actors,
it does not emit any telemetry on its own.
library_link: https://doc.akka.io/libraries/akka-core/current/typed/index.html
source_path: instrumentation/akka/akka-actor-2.3
scope:
name: io.opentelemetry.akka-actor-2.3
@ -72,6 +74,7 @@ libraries:
- name: akka-actor-fork-join-2.5
description: This instrumentation provides context propagation for the Akka Fork-Join
Pool, it does not emit any telemetry on its own.
library_link: https://doc.akka.io/libraries/akka-core/current/typed/index.html
source_path: instrumentation/akka/akka-actor-fork-join-2.5
scope:
name: io.opentelemetry.akka-actor-fork-join-2.5
@ -83,6 +86,7 @@ libraries:
- name: akka-http-10.0
description: |
This instrumentation enables HTTP client spans and metrics for the Akka HTTP client, and HTTP server spans and metrics for the Akka HTTP server.
library_link: https://doc.akka.io/docs/akka-http/current/index.html
source_path: instrumentation/akka/akka-http-10.0
scope:
name: io.opentelemetry.akka-http-10.0
@ -171,6 +175,7 @@ libraries:
- name: alibaba-druid-1.0
description: |
The Alibaba Druid instrumentation generates database connection pool metrics for druid data sources.
library_link: https://github.com/alibaba/druid
source_path: instrumentation/alibaba-druid-1.0
scope:
name: io.opentelemetry.alibaba-druid-1.0
@ -266,6 +271,7 @@ libraries:
description: |
This instrumentation enables database connection pools metrics for Apache DBCP.
The instrumentation uses `MBeanRegistration` methods for lifecycle detection, therefore it only activates if the `BasicDataSource` is registered to an `MBeanServer`. If using Spring Boot, this happens automatically as all Spring beans that support JMX registration are automatically registered by default.
library_link: https://commons.apache.org/proper/commons-dbcp/
source_path: instrumentation/apache-dbcp-2.0
scope:
name: io.opentelemetry.apache-dbcp-2.0
@ -346,6 +352,7 @@ libraries:
server spans for Apache Dubbo RPC calls. Each call produces a span named after
the Dubbo method, enriched with standard RPC attributes (system, service, method),
network attributes, and error details if an exception occurs.
library_link: https://github.com/apache/dubbo/
source_path: instrumentation/apache-dubbo-2.7
scope:
name: io.opentelemetry.apache-dubbo-2.7
@ -388,6 +395,7 @@ libraries:
- name: apache-httpasyncclient-4.1
description: This instrumentation enables HTTP client spans and HTTP client metrics
for the Apache HttpAsyncClient.
library_link: https://hc.apache.org/index.html
source_path: instrumentation/apache-httpasyncclient-4.1
scope:
name: io.opentelemetry.apache-httpasyncclient-4.1
@ -434,6 +442,7 @@ libraries:
- name: apache-httpclient-2.0
description: This instrumentation enables HTTP client spans and HTTP client metrics
for versions 2 and 3 of the Apache HttpClient.
library_link: https://hc.apache.org/index.html
source_path: instrumentation/apache-httpclient/apache-httpclient-2.0
scope:
name: io.opentelemetry.apache-httpclient-2.0
@ -478,6 +487,7 @@ libraries:
- name: apache-httpclient-4.0
description: This instrumentation enables HTTP client spans and HTTP client metrics
for version 4 of the Apache HttpClient.
library_link: https://hc.apache.org/index.html
source_path: instrumentation/apache-httpclient/apache-httpclient-4.0
scope:
name: io.opentelemetry.apache-httpclient-4.0
@ -525,6 +535,7 @@ libraries:
- name: apache-httpclient-4.3
description: This instrumentation provides a library integration that enables
HTTP client spans and HTTP client metrics for the Apache HttpClient.
library_link: https://hc.apache.org/index.html
source_path: instrumentation/apache-httpclient/apache-httpclient-4.3
scope:
name: io.opentelemetry.apache-httpclient-4.3
@ -573,6 +584,7 @@ libraries:
- name: apache-httpclient-5.0
description: This instrumentation enables HTTP client spans and HTTP client metrics
for version 5 of the Apache HttpClient.
library_link: https://hc.apache.org/index.html
source_path: instrumentation/apache-httpclient/apache-httpclient-5.0
scope:
name: io.opentelemetry.apache-httpclient-5.0
@ -619,6 +631,7 @@ libraries:
- name: apache-httpclient-5.2
description: This instrumentation provides a library integration that enables
HTTP client spans and HTTP client metrics for the Apache HttpClient.
library_link: https://hc.apache.org/index.html
source_path: instrumentation/apache-httpclient/apache-httpclient-5.2
scope:
name: io.opentelemetry.apache-httpclient-5.2
@ -667,6 +680,7 @@ libraries:
- name: apache-shenyu-2.4
description: |
This instrumentation does not emit telemetry on its own. Instead, it augments existing HTTP server spans and HTTP server metrics with the HTTP route and Shenyu specific attributes.
library_link: https://shenyu.apache.org/
source_path: instrumentation/apache-shenyu-2.4
scope:
name: io.opentelemetry.apache-shenyu-2.4
@ -683,6 +697,7 @@ libraries:
- name: armeria-1.3
description: |
This instrumentation enables HTTP client spans and metrics for the Armeria HTTP client, and HTTP server spans and metrics for the Armeria HTTP server.
library_link: https://armeria.dev/
source_path: instrumentation/armeria/armeria-1.3
scope:
name: io.opentelemetry.armeria-1.3
@ -778,6 +793,7 @@ libraries:
- name: armeria-grpc-1.14
description: |
This instrumentation enables RPC client spans and metrics for the Armeria gRPC client, and RPC server spans and metrics for the Armeria gRPC server.
library_link: https://armeria.dev/
source_path: instrumentation/armeria/armeria-grpc-1.14
scope:
name: io.opentelemetry.armeria-grpc-1.14
@ -819,6 +835,7 @@ libraries:
- name: async-http-client-1.9
description: This instrumentation enables HTTP client spans and HTTP client metrics
for version 1 of the AsyncHttpClient (AHC) HTTP client.
library_link: https://github.com/AsyncHttpClient/async-http-client
source_path: instrumentation/async-http-client/async-http-client-1.9
scope:
name: io.opentelemetry.async-http-client-1.9
@ -861,6 +878,7 @@ libraries:
- name: async-http-client-2.0
description: This instrumentation enables HTTP client spans and HTTP client metrics
for version 2 of the AsyncHttpClient (AHC) HTTP client.
library_link: https://github.com/AsyncHttpClient/async-http-client
source_path: instrumentation/async-http-client/async-http-client-2.0
scope:
name: io.opentelemetry.async-http-client-2.0
@ -912,6 +930,7 @@ libraries:
- name: avaje-jex-3.0
description: |
This instrumentation does not emit telemetry on its own. Instead, it hooks into the Avaje Jex Context to extract the HTTP route and attach it to existing HTTP server spans and HTTP server metrics.
library_link: https://avaje.io/jex/
source_path: instrumentation/avaje-jex-3.0
minimum_java_version: 21
scope:
@ -924,6 +943,7 @@ libraries:
description: |
Provides lightweight instrumentation of the Lambda core library, supporting all versions. It generates FaaS server spans with the `faas.invocation_id` attribute. Use this package if you only use `RequestStreamHandler` or know you don't use any event classes from `aws-lambda-java-events`. This also includes when you are using `aws-serverless-java-container` to run e.g., a Spring Boot application on Lambda.
For custom wrappers when using library instrumentation, you can configure the `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` environment variable to contain your lambda handler method (in the format `package.ClassName::methodName`) and use one of wrappers as your lambda `Handler`.
library_link: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html
source_path: instrumentation/aws-lambda/aws-lambda-core-1.0
scope:
name: io.opentelemetry.aws-lambda-core-1.0
@ -947,6 +967,7 @@ libraries:
- name: aws-lambda-events-2.2
description: |
This version of the library instrumentation is deprecated, please use the `aws-lambda-events-3.11` library instrumentation instead. This instrumentation builds on top of the `aws-lambda-core-1.0` instrumentation, expanding support to cover the Lambda library, including standard and custom event types.
library_link: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html
source_path: instrumentation/aws-lambda/aws-lambda-events-2.2
scope:
name: io.opentelemetry.aws-lambda-events-2.2
@ -992,6 +1013,7 @@ libraries:
- name: aws-lambda-events-3.11
description: |
This instrumentation builds on top of the `aws-lambda-core-1.0` instrumentation, expanding support to cover the Lambda library, including standard and custom event types.
library_link: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html
source_path: instrumentation/aws-lambda/aws-lambda-events-3.11
scope:
name: io.opentelemetry.aws-lambda-events-3.11
@ -1038,6 +1060,7 @@ libraries:
- name: aws-sdk-1.11
description: |
This instrumentation covers the AWS SDK 1.11+ client library, enabling messaging and client spans and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, secrets manager, SNS/SQS and step functions.
library_link: https://aws.amazon.com/sdk-for-java/
source_path: instrumentation/aws-sdk/aws-sdk-1.11
scope:
name: io.opentelemetry.aws-sdk-1.11
@ -1265,6 +1288,7 @@ libraries:
- name: aws-sdk-2.2
description: |
This instrumentation covers the AWS SDK 2.2+ client library, enabling messaging and client spans and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, SNS/SQS and Bedrock.
library_link: https://aws.amazon.com/sdk-for-java/
source_path: instrumentation/aws-sdk/aws-sdk-2.2
scope:
name: io.opentelemetry.aws-sdk-2.2
@ -1623,6 +1647,7 @@ libraries:
- name: azure-core-1.14
description: This instrumentation enables context propagation for the Azure Core
library, it does not emit any telemetry on its own.
library_link: https://learn.microsoft.com/en-us/java/api/overview/azure/core-readme?view=azure-java-stable
source_path: instrumentation/azure-core/azure-core-1.14
scope:
name: io.opentelemetry.azure-core-1.14
@ -1632,6 +1657,7 @@ libraries:
- name: azure-core-1.19
description: This instrumentation enables context propagation for the Azure Core
library, it does not emit any telemetry on its own.
library_link: https://learn.microsoft.com/en-us/java/api/overview/azure/core-readme?view=azure-java-stable
source_path: instrumentation/azure-core/azure-core-1.19
scope:
name: io.opentelemetry.azure-core-1.19
@ -1641,6 +1667,7 @@ libraries:
- name: azure-core-1.36
description: This instrumentation enables context propagation for the Azure Core
library, it does not emit any telemetry on its own.
library_link: https://learn.microsoft.com/en-us/java/api/overview/azure/core-readme?view=azure-java-stable
source_path: instrumentation/azure-core/azure-core-1.36
scope:
name: io.opentelemetry.azure-core-1.36
@ -1651,6 +1678,7 @@ libraries:
- name: c3p0-0.9
description: The c3p0 instrumentation provides connection pool metrics for c3p0
data sources.
library_link: https://github.com/swaldman/c3p0
source_path: instrumentation/c3p0-0.9
scope:
name: io.opentelemetry.c3p0-0.9
@ -1703,6 +1731,7 @@ libraries:
- name: camel-2.20
description: |
This instrumentation enables tracing for Apache Camel 2.x applications by generating spans for each route execution. For Camel versions 3.5 and newer, users should instead use the native 'camel-opentelemetry' component provided directly by the Camel project.
library_link: https://camel.apache.org/
source_path: instrumentation/camel-2.20
scope:
name: io.opentelemetry.camel-2.20
@ -1828,6 +1857,7 @@ libraries:
- name: cassandra-3.0
description: |
Instruments the Cassandra database client, providing database client spans and metrics for Cassandra queries.
library_link: https://github.com/apache/cassandra-java-driver
source_path: instrumentation/cassandra/cassandra-3.0
scope:
name: io.opentelemetry.cassandra-3.0
@ -1891,6 +1921,7 @@ libraries:
- name: cassandra-4.0
description: |
Instruments the Cassandra database client, providing database client spans and metrics for Cassandra queries.
library_link: https://github.com/apache/cassandra-java-driver
source_path: instrumentation/cassandra/cassandra-4.0
scope:
name: io.opentelemetry.cassandra-4.0
@ -1978,6 +2009,7 @@ libraries:
- name: cassandra-4.4
description: |
Instruments the Cassandra database client, providing database client spans and metrics for Cassandra queries.
library_link: https://github.com/apache/cassandra-java-driver
source_path: instrumentation/cassandra/cassandra-4.4
scope:
name: io.opentelemetry.cassandra-4.4
@ -2068,6 +2100,7 @@ libraries:
- name: clickhouse-client-0.5
description: Instruments the V1 ClickHouseClient, providing database client spans
and metrics.
library_link: https://github.com/ClickHouse/clickhouse-java
source_path: instrumentation/clickhouse-client-0.5
scope:
name: io.opentelemetry.clickhouse-client-0.5
@ -2136,6 +2169,7 @@ libraries:
- name: couchbase-2.0
description: |
This instrumentation enables database client spans and database client metrics for Couchbase 2.0 operations. It automatically traces key-value operations (get, upsert, replace, remove), view queries, N1QL queries, and cluster management operations.
library_link: https://github.com/couchbase/couchbase-java-client
source_path: instrumentation/couchbase/couchbase-2.0
scope:
name: io.opentelemetry.couchbase-2.0
@ -2180,6 +2214,7 @@ libraries:
- name: couchbase-2.6
description: |
This instrumentation enables database client spans and database client metrics for Couchbase 2.6 operations. It automatically traces key-value operations (get, upsert, replace, remove), view queries, N1QL queries, and cluster management operations.
library_link: https://github.com/couchbase/couchbase-java-client
source_path: instrumentation/couchbase/couchbase-2.6
scope:
name: io.opentelemetry.couchbase-2.6
@ -2268,6 +2303,7 @@ libraries:
- name: couchbase-3.1
description: |
Couchbase instrumentation is owned by the Couchbase project for versions 3+. This instrumentation automatically configures the instrumentation provided by the Couchbase library.
library_link: https://github.com/couchbase/couchbase-java-client
source_path: instrumentation/couchbase/couchbase-3.1
scope:
name: io.opentelemetry.couchbase-3.1
@ -2277,6 +2313,7 @@ libraries:
- name: couchbase-3.1.6
description: |
Couchbase instrumentation is owned by the Couchbase project for versions 3+. This instrumentation automatically configures the instrumentation provided by the Couchbase library.
library_link: https://github.com/couchbase/couchbase-java-client
source_path: instrumentation/couchbase/couchbase-3.1.6
scope:
name: io.opentelemetry.couchbase-3.1.6
@ -2286,6 +2323,7 @@ libraries:
- name: couchbase-3.2
description: |
Couchbase instrumentation is owned by the Couchbase project for versions 3+. This instrumentation automatically configures the instrumentation provided by the Couchbase library.
library_link: https://github.com/couchbase/couchbase-java-client
source_path: instrumentation/couchbase/couchbase-3.2
scope:
name: io.opentelemetry.couchbase-3.2
@ -2297,6 +2335,7 @@ libraries:
description: |
The dropwizard-metrics instrumentation for the dropwizard/codahale metrics library produces OpenTelemetry compliant versions of the metrics generated by the Dropwizard MetricRegistry.
The Dropwizard metrics API does not have a concept of metric labels/tags/attributes, thus the data produced by this integration might be of very low quality, depending on how the API is used in the instrumented application.
library_link: https://metrics.dropwizard.io/4.2.0/
disabled_by_default: true
source_path: instrumentation/dropwizard/dropwizard-metrics-4.0
scope:
@ -2312,6 +2351,7 @@ libraries:
- name: dropwizard-views-0.7
description: This instrumentation enables the creation of spans for Dropwizard
views.
library_link: https://www.dropwizard.io/en/latest/manual/views.html
source_path: instrumentation/dropwizard/dropwizard-views-0.7
scope:
name: io.opentelemetry.dropwizard-views-0.7
@ -2331,7 +2371,8 @@ libraries:
elasticsearch:
- name: elasticsearch-api-client-7.16
description: |
This instrumentation extends the elasticsearch-rest-7.0 instrumentation by adding additional `db.elasticsearch.path_parts.id` and `db.elasticsearch.path_parts.index` attributes to Elasticsearch CLIENT spans. Versions 8.10 and later of the client have native support for OpenTelemetry.
This instrumentation extends the elasticsearch-rest-7.0 instrumentation by adding additional `db.elasticsearch.path_parts.id` and `db.elasticsearch.path_parts.index` attributes to Elasticsearch database client spans. Versions 8.10 and later of the client have native support for OpenTelemetry.
library_link: https://www.elastic.co/docs/reference/elasticsearch/clients/java
source_path: instrumentation/elasticsearch/elasticsearch-api-client-7.16
scope:
name: io.opentelemetry.elasticsearch-api-client-7.16
@ -2397,6 +2438,7 @@ libraries:
- name: elasticsearch-rest-5.0
description: This instrumentation enables database client spans and database client
metrics for Elasticsearch REST clients.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-rest
source_path: instrumentation/elasticsearch/elasticsearch-rest-5.0
scope:
name: io.opentelemetry.elasticsearch-rest-5.0
@ -2459,6 +2501,7 @@ libraries:
- name: elasticsearch-rest-6.4
description: This instrumentation enables database client spans and database client
metrics for Elasticsearch REST clients.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-rest
source_path: instrumentation/elasticsearch/elasticsearch-rest-6.4
scope:
name: io.opentelemetry.elasticsearch-rest-6.4
@ -2520,6 +2563,7 @@ libraries:
- name: elasticsearch-rest-7.0
description: This instrumentation enables database client spans and database client
metrics for Elasticsearch REST clients.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-rest
source_path: instrumentation/elasticsearch/elasticsearch-rest-7.0
scope:
name: io.opentelemetry.elasticsearch-rest-7.0
@ -2583,6 +2627,7 @@ libraries:
- name: elasticsearch-transport-5.0
description: |
This instrumentation enables database client spans and database client metrics for Elasticsearch transport client requests. Each call produces a span named after the Elasticsearch action, enriched with transport-specific attributes.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-api/
source_path: instrumentation/elasticsearch/elasticsearch-transport-5.0
scope:
name: io.opentelemetry.elasticsearch-transport-5.0
@ -2675,6 +2720,7 @@ libraries:
- name: elasticsearch-transport-5.3
description: |
This instrumentation enables database client spans and database client metrics for Elasticsearch transport client requests. Each call produces a span named after the Elasticsearch action, enriched with transport-specific attributes.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-api/
source_path: instrumentation/elasticsearch/elasticsearch-transport-5.3
scope:
name: io.opentelemetry.elasticsearch-transport-5.3
@ -2772,6 +2818,7 @@ libraries:
- name: elasticsearch-transport-6.0
description: |
This instrumentation enables database client spans and database client metrics for Elasticsearch transport client requests. Each call produces a span named after the Elasticsearch action, enriched with transport-specific attributes.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-api/
source_path: instrumentation/elasticsearch/elasticsearch-transport-6.0
scope:
name: io.opentelemetry.elasticsearch-transport-6.0
@ -2971,6 +3018,7 @@ libraries:
- name: google-http-client-1.19
description: This instrumentation enables HTTP client spans and HTTP client metrics
for Google HTTP Client requests.
library_link: https://github.com/googleapis/google-http-java-client
source_path: instrumentation/google-http-client-1.19
scope:
name: io.opentelemetry.google-http-client-1.19
@ -3059,6 +3107,7 @@ libraries:
graphql:
- name: graphql-java-12.0
description: This instrumentation enables spans for GraphQL Java operations.
library_link: https://www.graphql-java.com/
source_path: instrumentation/graphql-java/graphql-java-12.0
scope:
name: io.opentelemetry.graphql-java-12.0

View File

@ -114,6 +114,9 @@ public class SpringWebInstrumentationModule extends InstrumentationModule
* name
* Identifier for instrumentation module, used to enable/disable
* Configured in `InstrumentationModule` code for each module
* library_link
* URL to the library or framework's main website or documentation, or if those don't exist, the
GitHub repository.
* source_path
* Path to the source code of the instrumentation module
* minimum_java_version
@ -145,9 +148,10 @@ additional information about the instrumentation module.
As of now, the following fields are supported, all of which are optional:
```yaml
description: "Instruments..." # Description of the instrumentation module
disabled_by_default: true # Defaults to `false`
classification: internal # instrumentation classification: library | internal | custom
description: "This instrumentation enables..." # Description of the instrumentation module
disabled_by_default: true # Defaults to `false`
classification: internal # instrumentation classification: library | internal | custom
library_link: https://... # URL to the library or framework's main website or documentation
configurations:
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
description: Enables statement sanitization for database queries.

View File

@ -25,6 +25,10 @@ public class InstrumentationMetaData {
private String classification;
@JsonProperty("library_link")
@Nullable
private String libraryLink;
private List<ConfigurationOption> configurations = Collections.emptyList();
public InstrumentationMetaData() {
@ -35,10 +39,12 @@ public class InstrumentationMetaData {
@Nullable String description,
String classification,
@Nullable Boolean disabledByDefault,
@Nullable String libraryLink,
@Nullable List<ConfigurationOption> configurations) {
this.classification = classification;
this.disabledByDefault = disabledByDefault;
this.description = description;
this.libraryLink = libraryLink;
this.configurations = Objects.requireNonNullElse(configurations, Collections.emptyList());
}
@ -77,4 +83,13 @@ public class InstrumentationMetaData {
public void setConfigurations(@Nullable List<ConfigurationOption> configurations) {
this.configurations = Objects.requireNonNullElse(configurations, Collections.emptyList());
}
@Nullable
public String getLibraryLink() {
return libraryLink;
}
public void setLibraryLink(@Nullable String libraryLink) {
this.libraryLink = libraryLink;
}
}

View File

@ -198,6 +198,9 @@ public class YamlHelper {
if (module.getMetadata().getDescription() != null) {
moduleMap.put("description", module.getMetadata().getDescription());
}
if (module.getMetadata().getLibraryLink() != null) {
moduleMap.put("library_link", module.getMetadata().getLibraryLink());
}
if (module.getMetadata().getDisabledByDefault()) {
moduleMap.put("disabled_by_default", module.getMetadata().getDisabledByDefault());
}

View File

@ -43,6 +43,7 @@ class YamlHelperTest {
"Spring Web 6.0 instrumentation",
InstrumentationClassification.LIBRARY.toString(),
true,
null,
null);
modules.add(
@ -114,6 +115,7 @@ class YamlHelperTest {
"Spring Web 6.0 instrumentation",
InstrumentationClassification.LIBRARY.toString(),
false,
null,
List.of(
new ConfigurationOption(
"otel.instrumentation.spring-web-6.0.enabled",
@ -134,7 +136,7 @@ class YamlHelperTest {
InstrumentationMetaData internalMetadata =
new InstrumentationMetaData(
null, InstrumentationClassification.INTERNAL.toString(), null, null);
null, InstrumentationClassification.INTERNAL.toString(), null, null, null);
modules.add(
new InstrumentationModule.Builder()
@ -148,7 +150,7 @@ class YamlHelperTest {
InstrumentationMetaData customMetadata =
new InstrumentationMetaData(
null, InstrumentationClassification.CUSTOM.toString(), null, null);
null, InstrumentationClassification.CUSTOM.toString(), null, null, null);
Map<InstrumentationType, Set<String>> externalAnnotationsVersions =
Map.of(
@ -214,6 +216,7 @@ class YamlHelperTest {
description: test description
classification: internal
disabled_by_default: true
library_link: https://example.com/test-library
configurations:
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
description: Enables statement sanitization for database queries.
@ -233,6 +236,7 @@ class YamlHelperTest {
assertThat(metadata.getClassification()).isEqualTo(InstrumentationClassification.INTERNAL);
assertThat(metadata.getDescription()).isEqualTo("test description");
assertThat(metadata.getDisabledByDefault()).isEqualTo(true);
assertThat(metadata.getLibraryLink()).isEqualTo("https://example.com/test-library");
}
@Test
@ -241,6 +245,18 @@ class YamlHelperTest {
InstrumentationMetaData metadata = YamlHelper.metaDataParser(input);
assertThat(metadata.getClassification()).isEqualTo(InstrumentationClassification.INTERNAL);
assertThat(metadata.getDescription()).isNull();
assertThat(metadata.getLibraryLink()).isNull();
assertThat(metadata.getDisabledByDefault()).isFalse();
assertThat(metadata.getConfigurations()).isEmpty();
}
@Test
void testMetadataParserWithOnlyLibraryLink() throws JsonProcessingException {
String input = "library_link: https://example.com/only-link";
InstrumentationMetaData metadata = YamlHelper.metaDataParser(input);
assertThat(metadata.getClassification()).isEqualTo(InstrumentationClassification.LIBRARY);
assertThat(metadata.getDescription()).isNull();
assertThat(metadata.getLibraryLink()).isEqualTo("https://example.com/only-link");
assertThat(metadata.getDisabledByDefault()).isFalse();
assertThat(metadata.getConfigurations()).isEmpty();
}
@ -485,4 +501,80 @@ class YamlHelperTest {
assertThat(yaml1).isEqualTo(yaml2);
}
@Test
void testYamlGenerationWithLibraryLink() throws Exception {
List<InstrumentationModule> modules = new ArrayList<>();
Map<InstrumentationType, Set<String>> targetVersions = new HashMap<>();
targetVersions.put(
InstrumentationType.JAVAAGENT, new HashSet<>(List.of("com.example:test-library:[1.0.0,)")));
InstrumentationMetaData metadataWithLink =
new InstrumentationMetaData(
"Test library instrumentation with link",
InstrumentationClassification.LIBRARY.toString(),
false,
"https://example.com/test-library-docs",
emptyList());
modules.add(
new InstrumentationModule.Builder()
.srcPath("instrumentation/test-lib/test-lib-1.0")
.instrumentationName("test-lib-1.0")
.namespace("test-lib")
.group("test-lib")
.targetVersions(targetVersions)
.metadata(metadataWithLink)
.build());
InstrumentationMetaData metadataWithoutLink =
new InstrumentationMetaData(
"Test library instrumentation without link",
InstrumentationClassification.LIBRARY.toString(),
false,
null,
emptyList());
modules.add(
new InstrumentationModule.Builder()
.srcPath("instrumentation/other-lib/other-lib-1.0")
.instrumentationName("other-lib-1.0")
.namespace("other-lib")
.group("other-lib")
.targetVersions(targetVersions)
.metadata(metadataWithoutLink)
.build());
StringWriter stringWriter = new StringWriter();
BufferedWriter writer = new BufferedWriter(stringWriter);
YamlHelper.generateInstrumentationYaml(modules, writer);
writer.flush();
String expectedYaml =
"""
libraries:
other-lib:
- name: other-lib-1.0
description: Test library instrumentation without link
source_path: instrumentation/other-lib/other-lib-1.0
scope:
name: io.opentelemetry.other-lib-1.0
target_versions:
javaagent:
- com.example:test-library:[1.0.0,)
test-lib:
- name: test-lib-1.0
description: Test library instrumentation with link
library_link: https://example.com/test-library-docs
source_path: instrumentation/test-lib/test-lib-1.0
scope:
name: io.opentelemetry.test-lib-1.0
target_versions:
javaagent:
- com.example:test-library:[1.0.0,)
""";
assertThat(expectedYaml).isEqualTo(stringWriter.toString());
}
}

View File

@ -1 +1,2 @@
description: This instrumentation enables HTTP server spans and HTTP server metrics for the ActiveJ HTTP server.
library_link: https://activej.io/

View File

@ -1 +1,2 @@
description: This instrumentation provides context propagation for Akka actors, it does not emit any telemetry on its own.
library_link: https://doc.akka.io/libraries/akka-core/current/typed/index.html

View File

@ -1 +1,2 @@
description: This instrumentation provides context propagation for the Akka Fork-Join Pool, it does not emit any telemetry on its own.
library_link: https://doc.akka.io/libraries/akka-core/current/typed/index.html

View File

@ -1,3 +1,4 @@
description: >
This instrumentation enables HTTP client spans and metrics for the Akka HTTP client, and HTTP
server spans and metrics for the Akka HTTP server.
library_link: https://doc.akka.io/docs/akka-http/current/index.html

View File

@ -1,3 +1,4 @@
description: >
The Alibaba Druid instrumentation generates database connection pool metrics for druid data
sources.
library_link: https://github.com/alibaba/druid

View File

@ -5,3 +5,4 @@ description: >
only activates if the `BasicDataSource` is registered to an `MBeanServer`. If using Spring Boot,
this happens automatically as all Spring beans that support JMX registration are automatically
registered by default.
library_link: https://commons.apache.org/proper/commons-dbcp/

View File

@ -2,6 +2,7 @@ description: The Apache Dubbo instrumentation provides RPC client spans and RPC
Apache Dubbo RPC calls. Each call produces a span named after the Dubbo method, enriched with
standard RPC attributes (system, service, method), network attributes, and error details if an
exception occurs.
library_link: https://github.com/apache/dubbo/
configurations:
- name: otel.instrumentation.common.peer-service-mapping
description: Used to specify a mapping from host names or IP addresses to peer services.

View File

@ -1 +1,2 @@
description: This instrumentation enables HTTP client spans and HTTP client metrics for the Apache HttpAsyncClient.
library_link: https://hc.apache.org/index.html

View File

@ -1 +1,2 @@
description: This instrumentation enables HTTP client spans and HTTP client metrics for versions 2 and 3 of the Apache HttpClient.
library_link: https://hc.apache.org/index.html

View File

@ -1 +1,2 @@
description: This instrumentation enables HTTP client spans and HTTP client metrics for version 4 of the Apache HttpClient.
library_link: https://hc.apache.org/index.html

View File

@ -1 +1,2 @@
description: This instrumentation provides a library integration that enables HTTP client spans and HTTP client metrics for the Apache HttpClient.
library_link: https://hc.apache.org/index.html

View File

@ -1 +1,2 @@
description: This instrumentation enables HTTP client spans and HTTP client metrics for version 5 of the Apache HttpClient.
library_link: https://hc.apache.org/index.html

View File

@ -1 +1,2 @@
description: This instrumentation enables CLIENT spans and metrics for the Apache HttpAsyncClient.
library_link: https://hc.apache.org/index.html

View File

@ -1 +1,2 @@
description: This instrumentation provides a library integration that enables HTTP client spans and HTTP client metrics for the Apache HttpClient.
library_link: https://hc.apache.org/index.html

View File

@ -1,6 +1,7 @@
description: >
This instrumentation does not emit telemetry on its own. Instead, it augments existing HTTP server
spans and HTTP server metrics with the HTTP route and Shenyu specific attributes.
library_link: https://shenyu.apache.org/
configurations:
- name: otel.instrumentation.apache-shenyu.experimental-span-attributes
description: >

View File

@ -1,3 +1,4 @@
description: >
This instrumentation enables HTTP client spans and metrics for the Armeria HTTP client, and HTTP
server spans and metrics for the Armeria HTTP server.
library_link: https://armeria.dev/

View File

@ -1,3 +1,4 @@
description: >
This instrumentation enables RPC client spans and metrics for the Armeria gRPC client, and RPC
server spans and metrics for the Armeria gRPC server.
library_link: https://armeria.dev/

View File

@ -1 +1,2 @@
description: This instrumentation enables HTTP client spans and HTTP client metrics for version 1 of the AsyncHttpClient (AHC) HTTP client.
library_link: https://github.com/AsyncHttpClient/async-http-client

View File

@ -1 +1,2 @@
description: This instrumentation enables HTTP client spans and HTTP client metrics for version 2 of the AsyncHttpClient (AHC) HTTP client.
library_link: https://github.com/AsyncHttpClient/async-http-client

View File

@ -2,3 +2,4 @@ description: >
This instrumentation does not emit telemetry on its own. Instead, it hooks into the Avaje Jex
Context to extract the HTTP route and attach it to existing HTTP server spans and HTTP server
metrics.
library_link: https://avaje.io/jex/

View File

@ -8,6 +8,7 @@ description: >
For custom wrappers when using library instrumentation, you can configure the `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER`
environment variable to contain your lambda handler method (in the format `package.ClassName::methodName`) and use
one of wrappers as your lambda `Handler`.
library_link: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html
configurations:
- name: otel.instrumentation.aws-lambda.flush-timeout
type: int

View File

@ -2,6 +2,7 @@ description: >
This version of the library instrumentation is deprecated, please use the `aws-lambda-events-3.11`
library instrumentation instead. This instrumentation builds on top of the `aws-lambda-core-1.0`
instrumentation, expanding support to cover the Lambda library, including standard and custom event types.
library_link: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html
configurations:
- name: otel.instrumentation.aws-lambda.flush-timeout
type: int

View File

@ -1,6 +1,7 @@
description: >
This instrumentation builds on top of the `aws-lambda-core-1.0` instrumentation, expanding support
to cover the Lambda library, including standard and custom event types.
library_link: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html
configurations:
- name: otel.instrumentation.aws-lambda.flush-timeout
type: int

View File

@ -2,6 +2,7 @@ description: >
This instrumentation covers the AWS SDK 1.11+ client library, enabling messaging and client spans
and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, secrets
manager, SNS/SQS and step functions.
library_link: https://aws.amazon.com/sdk-for-java/
configurations:
- name: otel.instrumentation.aws-sdk.experimental-span-attributes
description: >

View File

@ -2,6 +2,7 @@ description: >
This instrumentation covers the AWS SDK 2.2+ client library, enabling messaging and client spans
and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, SNS/SQS
and Bedrock.
library_link: https://aws.amazon.com/sdk-for-java/
configurations:
- name: otel.instrumentation.messaging.experimental.receive-telemetry.enabled
description: >

View File

@ -1 +1,2 @@
description: This instrumentation enables context propagation for the Azure Core library, it does not emit any telemetry on its own.
library_link: https://learn.microsoft.com/en-us/java/api/overview/azure/core-readme?view=azure-java-stable

View File

@ -1 +1,2 @@
description: This instrumentation enables context propagation for the Azure Core library, it does not emit any telemetry on its own.
library_link: https://learn.microsoft.com/en-us/java/api/overview/azure/core-readme?view=azure-java-stable

View File

@ -1 +1,2 @@
description: This instrumentation enables context propagation for the Azure Core library, it does not emit any telemetry on its own.
library_link: https://learn.microsoft.com/en-us/java/api/overview/azure/core-readme?view=azure-java-stable

View File

@ -1 +1,2 @@
description: The c3p0 instrumentation provides connection pool metrics for c3p0 data sources.
library_link: https://github.com/swaldman/c3p0

View File

@ -2,6 +2,7 @@ description: >
This instrumentation enables tracing for Apache Camel 2.x applications by generating spans for
each route execution. For Camel versions 3.5 and newer, users should instead use the native
'camel-opentelemetry' component provided directly by the Camel project.
library_link: https://camel.apache.org/
configurations:
- name: otel.instrumentation.camel.experimental-span-attributes
description: >

View File

@ -1,6 +1,7 @@
description: >
Instruments the Cassandra database client, providing database client spans and metrics for
Cassandra queries.
library_link: https://github.com/apache/cassandra-java-driver
configurations:
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
description: Enables statement sanitization for database queries.

View File

@ -1,6 +1,7 @@
description: >
Instruments the Cassandra database client, providing database client spans and metrics for
Cassandra queries.
library_link: https://github.com/apache/cassandra-java-driver
configurations:
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
description: Enables statement sanitization for database queries.

View File

@ -1,6 +1,7 @@
description: >
Instruments the Cassandra database client, providing database client spans and metrics for
Cassandra queries.
library_link: https://github.com/apache/cassandra-java-driver
configurations:
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
description: Enables statement sanitization for database queries.

View File

@ -1,4 +1,5 @@
description: Instruments the V1 ClickHouseClient, providing database client spans and metrics.
library_link: https://github.com/ClickHouse/clickhouse-java
configurations:
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
description: Enables statement sanitization for database queries.

View File

@ -2,3 +2,4 @@ description: >
This instrumentation enables database client spans and database client metrics for Couchbase 2.0
operations. It automatically traces key-value operations (get, upsert, replace, remove), view
queries, N1QL queries, and cluster management operations.
library_link: https://github.com/couchbase/couchbase-java-client

View File

@ -2,6 +2,7 @@ description: >
This instrumentation enables database client spans and database client metrics for Couchbase 2.6
operations. It automatically traces key-value operations (get, upsert, replace, remove), view
queries, N1QL queries, and cluster management operations.
library_link: https://github.com/couchbase/couchbase-java-client
configurations:
- name: otel.instrumentation.couchbase.experimental-span-attributes
description: >

View File

@ -1,3 +1,4 @@
description: >
Couchbase instrumentation is owned by the Couchbase project for versions 3+. This instrumentation
automatically configures the instrumentation provided by the Couchbase library.
library_link: https://github.com/couchbase/couchbase-java-client

View File

@ -1,3 +1,4 @@
description: >
Couchbase instrumentation is owned by the Couchbase project for versions 3+. This instrumentation
automatically configures the instrumentation provided by the Couchbase library.
library_link: https://github.com/couchbase/couchbase-java-client

View File

@ -1,3 +1,4 @@
description: >
Couchbase instrumentation is owned by the Couchbase project for versions 3+. This instrumentation
automatically configures the instrumentation provided by the Couchbase library.
library_link: https://github.com/couchbase/couchbase-java-client

View File

@ -5,6 +5,7 @@ description: >
The Dropwizard metrics API does not have a concept of metric labels/tags/attributes, thus the data
produced by this integration might be of very low quality, depending on how the API is used in the
instrumented application.
library_link: https://metrics.dropwizard.io/4.2.0/
disabled_by_default: true
configurations:
- name: otel.instrumentation.dropwizard-metrics.enabled

View File

@ -1,4 +1,5 @@
description: This instrumentation enables the creation of spans for Dropwizard views.
library_link: https://www.dropwizard.io/en/latest/manual/views.html
configurations:
- name: otel.instrumentation.common.experimental.view-telemetry.enabled
description: Enables the creation of experimental view (INTERNAL) spans.

View File

@ -1,5 +1,6 @@
description: >
This instrumentation extends the elasticsearch-rest-7.0 instrumentation by adding
additional `db.elasticsearch.path_parts.id` and `db.elasticsearch.path_parts.index` attributes to
Elasticsearch CLIENT spans. Versions 8.10 and later of the client have native support for
Elasticsearch database client spans. Versions 8.10 and later of the client have native support for
OpenTelemetry.
library_link: https://www.elastic.co/docs/reference/elasticsearch/clients/java

View File

@ -1,4 +1,5 @@
description: This instrumentation enables database client spans and database client metrics for Elasticsearch REST clients.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-rest
configurations:
- name: otel.instrumentation.elasticsearch.capture-search-query
description: >

View File

@ -1,4 +1,5 @@
description: This instrumentation enables database client spans and database client metrics for Elasticsearch REST clients.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-rest
configurations:
- name: otel.instrumentation.elasticsearch.capture-search-query
description: >

View File

@ -1,4 +1,5 @@
description: This instrumentation enables database client spans and database client metrics for Elasticsearch REST clients.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-rest
configurations:
- name: otel.instrumentation.elasticsearch.capture-search-query
description: >

View File

@ -2,6 +2,7 @@ description: >
This instrumentation enables database client spans and database client metrics for Elasticsearch
transport client requests. Each call produces a span named after the Elasticsearch action,
enriched with transport-specific attributes.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-api/
configurations:
- name: otel.instrumentation.elasticsearch.experimental-span-attributes
description: >

View File

@ -2,6 +2,7 @@ description: >
This instrumentation enables database client spans and database client metrics for Elasticsearch
transport client requests. Each call produces a span named after the Elasticsearch action,
enriched with transport-specific attributes.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-api/
configurations:
- name: otel.instrumentation.elasticsearch.experimental-span-attributes
description: >

View File

@ -2,6 +2,7 @@ description: >
This instrumentation enables database client spans and database client metrics for Elasticsearch
transport client requests. Each call produces a span named after the Elasticsearch action,
enriched with transport-specific attributes.
library_link: https://www.elastic.co/guide/en/elasticsearch/client/java-api/
configurations:
- name: otel.instrumentation.elasticsearch.experimental-span-attributes
description: >

View File

@ -1,4 +1,5 @@
description: This instrumentation enables HTTP client spans and HTTP client metrics for Google HTTP Client requests.
library_link: https://github.com/googleapis/google-http-java-client
configurations:
- name: otel.instrumentation.http.known-methods
description: >

View File

@ -1,4 +1,5 @@
description: This instrumentation enables spans for GraphQL Java operations.
library_link: https://www.graphql-java.com/
configurations:
- name: otel.instrumentation.graphql.query-sanitizer.enabled
description: Enables sanitization of sensitive information from queries so they aren't added as span attributes.