Skip to content

Populate Metadata for each instrumentation #14096

@jaydeluca

Description

@jaydeluca

Requirements

For each instrumentation module, enable telemetry collection (where applicable), and audit/populate the metadata.yaml file with all relevant details. See documenting instrumentation for additional information on the schema and descriptions.

Telemetry collection

Each module's gradle file will need to be modified to include a system property feature flag configured for when the tests run.

tasks.test {
  systemProperty("collectMetadata", findProperty("collectMetadata")?.toString() ?: "false")
}

Sometimes instrumentation will behave differently based on configuration options, and we can
differentiate between these configurations by using the metadataConfig system property. When the
telemetry is written to a file, the value of this property will be included, or it will default to
a default attribution.

For example, to collect and write metadata for the otel.semconv-stability.opt-in=database option
set for an instrumentation:

val collectMetadata = findProperty("collectMetadata")?.toString() ?: "false"

tasks {
  test {
    usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
    systemProperty("collectMetadata", collectMetadata)
  }

  val testStableSemconv by registering(Test::class) {
    testClassesDirs = sourceSets.test.get().output.classesDirs
    classpath = sourceSets.test.get().runtimeClasspath
    jvmArgs("-Dotel.semconv-stability.opt-in=database")

    systemProperty("metadataConfig", "otel.semconv-stability.opt-in=database")
    systemProperty("collectMetadata", collectMetadata)
  }

  check {
    dependsOn(testStableSemconv)
  }
}

After the configuration option is set, the gradle tasks should be added to the collect.sh script. If you configured multiple test suites, be sure to add both the standard test task and the others, for example:

readonly INSTRUMENTATIONS=(
   ....
  "clickhouse-client-0.5:javaagent:test"
  "clickhouse-client-0.5:javaagent:testStableSemconv"
   ....

You can generate the span telemetry data by running:

./instrumentation-docs/collect.sh

And then we can update the resulting instrumentation-list.yaml by running:

./gradlew :instrumentation-docs:runAnalysis

Tip: When adding net-new modules, if you have already run the collect script for all the existing modules, comment those ones out in the collect.sh script so you can just run it for each new one to speed up your workflow.

Progress

  • activej-http-6.0 Fill in metadata gaps for batch 1 of instrumentations #14851
  • akka-actor-2.3
  • akka-actor-fork-join-2.5
  • akka-http-10.0 Fill in metadata gaps for batch 1 of instrumentations #14851
  • alibaba-druid-1.0 Fill in metadata gaps for batch 1 of instrumentations #14851
  • apache-dbcp-2.0 Fill in metadata gaps for batch 1 of instrumentations #14851
  • apache-dubbo-2.7 Fill in metadata gaps for batch 1 of instrumentations #14851
  • apache-httpasyncclient-4.1
  • apache-httpclient-2.0
  • apache-httpclient-4.0
  • apache-httpclient-4.3
  • apache-httpclient-5.0
  • apache-httpclient-5.2
  • apache-shenyu-2.4
  • armeria-1.3
  • armeria-grpc-1.14
  • async-http-client-1.9
  • async-http-client-2.0
  • avaje-jex-3.0
  • aws-lambda-core-1.0
  • aws-lambda-events-2.2
  • aws-lambda-events-3.11
  • aws-sdk-1.11
  • aws-sdk-2.2
  • azure-core-1.14
  • azure-core-1.19
  • azure-core-1.36
  • c3p0-0.9
  • camel-2.20
  • cassandra-3.0
  • cassandra-4.0
  • cassandra-4.4
  • clickhouse-client-v1-0.5
  • clickhouse-client-v2-0.8
  • couchbase-2.0
  • couchbase-2.6
  • couchbase-3.1
  • couchbase-3.1.6
  • couchbase-3.2
  • dropwizard-metrics-4.0
  • dropwizard-views-0.7
  • elasticsearch-api-client-7.16
  • elasticsearch-rest-5.0
  • elasticsearch-rest-6.4
  • elasticsearch-rest-7.0
  • elasticsearch-transport-5.0
  • elasticsearch-transport-5.3
  • elasticsearch-transport-6.0
  • executors
  • external-annotations
  • failsafe-3.0
  • finagle-http-23.11
  • finatra-2.9
  • geode-1.4
  • google-http-client-1.19
  • grails-3.0
  • graphql-java-12.0
  • graphql-java-20.0
  • grizzly-2.3
  • grpc-1.6
  • guava-10.0
  • gwt-2.0
  • hibernate-3.3
  • hibernate-4.0
  • hibernate-6.0
  • hibernate-procedure-call-4.3
  • hibernate-reactive-1.0
  • hikaricp-3.0
  • http-url-connection
  • hystrix-1.4
  • influxdb-2.4
  • internal-application-logger
  • internal-class-loader
  • internal-eclipse-osgi-3.6
  • internal-lambda
  • internal-reflection
  • internal-url-class-loader
  • java-http-client
  • java-http-server
  • java-util-logging
  • javalin-5.0
  • jaxrs-1.0
  • jaxrs-2.0-annotations
  • jaxrs-2.0-cxf-3.2
  • jaxrs-2.0-jersey-2.0
  • jaxrs-2.0-resteasy-3.0
  • jaxrs-2.0-resteasy-3.1
  • jaxrs-3.0-annotations
  • jaxrs-3.0-jersey-3.0
  • jaxrs-3.0-resteasy-6.0
  • jaxws-2.0 JAXWS metadata #14864
  • jaxws-2.0-axis2-1.6 JAXWS metadata #14864
  • jaxws-cxf-3.0 JAXWS metadata #14864
  • jaxws-jws-api-1.1 JAXWS metadata #14864
  • jaxws-metro-2.2
  • jboss-logmanager-appender-1.1
  • jboss-logmanager-mdc-1.1
  • jdbc
  • jedis-1.4
  • jedis-3.0
  • jedis-4.0
  • jetty-11.0
  • jetty-12.0
  • jetty-8.0
  • jetty-httpclient-12.0
  • jetty-httpclient-9.2
  • jms-1.1
  • jms-3.0
  • jmx-metrics
  • jodd-http-4.2
  • jsf-mojarra-1.2
  • jsf-mojarra-3.0
  • jsf-myfaces-1.2
  • jsf-myfaces-3.0
  • jsp-2.3
  • kafka-clients-0.11
  • kafka-clients-2.6
  • kafka-streams-0.11
  • kotlinx-coroutines-1.0
  • kotlinx-coroutines-flow-1.3
  • ktor-1.0
  • ktor-2.0
  • ktor-3.0
  • kubernetes-client-7.0
  • lettuce-4.0
  • lettuce-5.0
  • lettuce-5.1
  • liberty-20.0
  • liberty-dispatcher-20.0
  • log4j-appender-1.2
  • log4j-appender-2.17
  • log4j-context-data-2.17
  • log4j-context-data-2.7
  • log4j-mdc-1.2
  • logback-appender-1.0
  • logback-mdc-1.0
  • methods
  • micrometer-1.5
  • mongo-3.1
  • mongo-3.7
  • mongo-4.0
  • mongo-async-3.3
  • mybatis-3.2
  • nats-2.17
  • netty-3.8
  • netty-4.0
  • netty-4.1
  • okhttp-2.2
  • okhttp-3.0
  • openai-java-1.1
  • opensearch-rest-1.0
  • opensearch-rest-3.0
  • opentelemetry-api-1.0
  • opentelemetry-api-1.10
  • opentelemetry-api-1.15
  • opentelemetry-api-1.27
  • opentelemetry-api-1.31
  • opentelemetry-api-1.32
  • opentelemetry-api-1.37
  • opentelemetry-api-1.38
  • opentelemetry-api-1.4
  • opentelemetry-api-1.40
  • opentelemetry-api-1.42
  • opentelemetry-api-1.47
  • opentelemetry-api-1.50
  • opentelemetry-api-1.52
  • opentelemetry-extension-annotations-1.0
  • opentelemetry-extension-kotlin-1.0
  • opentelemetry-instrumentation-annotations-1.16
  • opentelemetry-instrumentation-api
  • oracle-ucp-11.2
  • oshi
  • payara
  • pekko-actor-1.0
  • pekko-http-1.0
  • play-mvc-2.4
  • play-mvc-2.6
  • play-ws-1.0
  • play-ws-2.0
  • play-ws-2.1
  • powerjob-4.0
  • pulsar-2.8
  • quarkus-resteasy-reactive
  • quartz-2.0
  • r2dbc-1.0
  • rabbitmq-2.7
  • ratpack-1.4
  • ratpack-1.7
  • reactor-3.1
  • reactor-3.4
  • reactor-kafka-1.0
  • reactor-netty-0.9
  • reactor-netty-1.0
  • rediscala-1.8
  • redisson-3.0
  • redisson-3.17
  • resources
  • restlet-1.1
  • restlet-2.0
  • rmi
  • rocketmq-client-4.8
  • rocketmq-client-5.0
  • runtime-telemetry-java17
  • runtime-telemetry-java8
  • rxjava-1.0
  • rxjava-2.0
  • rxjava-3.0
  • rxjava-3.1.1
  • scala-fork-join-2.8
  • servlet-2.2
  • servlet-3.0
  • servlet-5.0
  • spark-2.3
  • spring-batch-3.0
  • spring-boot-actuator-autoconfigure-2.0
  • spring-boot-resources
  • spring-cloud-aws-3.0
  • spring-cloud-gateway-2.0
  • spring-core-2.0
  • spring-data-1.8
  • spring-integration-4.1
  • spring-jms-2.0
  • spring-jms-6.0
  • spring-kafka-2.7
  • spring-pulsar-1.0
  • spring-rabbit-1.0
  • spring-rmi-4.0
  • spring-scheduling-3.1
  • spring-security-config-6.0
  • spring-web-3.1
  • spring-web-6.0
  • spring-webflux-5.0
  • spring-webflux-5.3
  • spring-webmvc-3.1
  • spring-webmvc-5.3
  • spring-webmvc-6.0
  • spring-ws-2.0
  • spymemcached-2.12
  • struts-2.3
  • struts-7.0
  • tapestry-5.4
  • tomcat-10.0
  • tomcat-7.0
  • tomcat-jdbc
  • twilio-6.6
  • undertow-1.4
  • vaadin-14.2
  • vertx-http-client-3.0
  • vertx-http-client-4.0
  • vertx-http-client-5.0
  • vertx-kafka-client-3.6
  • vertx-redis-client-4.0
  • vertx-rx-java-3.5
  • vertx-sql-client-4.0
  • vertx-sql-client-5.0
  • vertx-web-3.0
  • vibur-dbcp-11.0
  • wicket-8.0
  • xxl-job-1.9.2
  • xxl-job-2.1.2
  • xxl-job-2.3.0
  • zio-2.0

Metadata

Metadata

Assignees

Labels

contribution welcomeRequest makes sense, maintainers probably won't have time, contribution would be welcomeenhancementNew feature or request

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions