Add catalog for common configs and metrics in metadata#19244
Conversation
There was a problem hiding this comment.
Pull request overview
Introduces shared catalogs for reusable configuration and metric metadata, emitting references in instrumentation-list format 0.6.
Changes:
- Adds shared configuration resolution and catalog generation.
- Deduplicates metric definitions using content-based IDs.
- Migrates instrumentation metadata to shared references and documents the format.
Reviewed changes
Copilot reviewed 136 out of 136 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/metadata.yaml |
Uses shared database config. |
instrumentation/vertx/vertx-sql-client/vertx-sql-client-4.0/metadata.yaml |
Uses shared database config. |
instrumentation/vertx/vertx-redis-client-4.0/metadata.yaml |
Uses shared database and peer configs. |
instrumentation/vertx/vertx-kafka-client-3.6/metadata.yaml |
Uses shared messaging config. |
instrumentation/vertx/vertx-http-client/vertx-http-client-5.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/vaadin-14.2/metadata.yaml |
Uses shared controller config. |
instrumentation/undertow-1.4/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/tomcat/tomcat-7.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/tomcat/tomcat-10.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/tapestry-5.4/metadata.yaml |
Uses shared controller config. |
instrumentation/struts/struts-7.0/metadata.yaml |
Uses shared controller config. |
instrumentation/struts/struts-2.3/metadata.yaml |
Uses shared controller config. |
instrumentation/spring/spring-ws-2.0/metadata.yaml |
Uses shared controller config. |
instrumentation/spring/spring-webmvc/spring-webmvc-6.0/metadata.yaml |
Uses shared controller config. |
instrumentation/spring/spring-webmvc/spring-webmvc-3.1/metadata.yaml |
Uses shared controller config. |
instrumentation/spring/spring-webflux/spring-webflux-5.0/metadata.yaml |
Uses shared controller config. |
instrumentation/spring/spring-web/spring-web-6.0/metadata.yaml |
References shared HTTP experimental config. |
instrumentation/spring/spring-rabbit-1.0/metadata.yaml |
Uses shared messaging config. |
instrumentation/spring/spring-pulsar-1.0/metadata.yaml |
Uses shared messaging config. |
instrumentation/spring/spring-kafka-2.7/metadata.yaml |
Uses shared messaging config. |
instrumentation/spring/spring-jms/spring-jms-6.0/metadata.yaml |
Uses shared messaging config. |
instrumentation/spring/spring-jms/spring-jms-2.0/metadata.yaml |
Uses shared messaging config. |
instrumentation/spring/spring-integration-4.1/metadata.yaml |
Uses shared messaging config. |
instrumentation/sofa-rpc-5.4/metadata.yaml |
Uses shared peer-service config. |
instrumentation/rocketmq/rocketmq-client-5.0/metadata.yaml |
Uses shared messaging config. |
instrumentation/rocketmq/rocketmq-client-4.8/metadata.yaml |
Uses shared messaging config. |
instrumentation/restlet/restlet-2.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/restlet/restlet-1.1/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/reactor/reactor-netty/reactor-netty-1.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/reactor/reactor-kafka-1.0/metadata.yaml |
Uses shared messaging config. |
instrumentation/ratpack/ratpack-1.7/metadata.yaml |
Uses shared HTTP and controller configs. |
instrumentation/ratpack/ratpack-1.4/metadata.yaml |
Uses shared controller config. |
instrumentation/rabbitmq-2.7/metadata.yaml |
Uses shared messaging config. |
instrumentation/r2dbc-1.0/metadata.yaml |
Uses shared database and peer configs. |
instrumentation/pulsar/pulsar-2.8/metadata.yaml |
Uses shared messaging config. |
instrumentation/play/play-ws/play-ws-2.1/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/play/play-ws/play-ws-2.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/play/play-ws/play-ws-1.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/play/play-mvc/play-mvc-2.6/metadata.yaml |
Uses shared controller config. |
instrumentation/play/play-mvc/play-mvc-2.4/metadata.yaml |
Uses shared controller config. |
instrumentation/pekko/pekko-http-1.0/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/okhttp/okhttp-3.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/okhttp/okhttp-2.2/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/netty/netty-4.1/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/netty/netty-4.0/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/netty/netty-3.8/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/nats/nats-2.17/metadata.yaml |
Uses shared messaging config. |
instrumentation/mongo/mongo-async-3.3/metadata.yaml |
Uses shared database config. |
instrumentation/mongo/mongo-4.0/metadata.yaml |
Uses shared database config. |
instrumentation/mongo/mongo-3.7/metadata.yaml |
Uses shared database config. |
instrumentation/mongo/mongo-3.1/metadata.yaml |
Uses shared database config. |
instrumentation/liberty/liberty-dispatcher-20.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/liberty/liberty-20.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/lettuce/lettuce-5.1/metadata.yaml |
Uses shared database config. |
instrumentation/lettuce/lettuce-5.0/metadata.yaml |
Uses shared database and peer configs. |
instrumentation/lettuce/lettuce-4.0/metadata.yaml |
Uses shared peer-service config. |
instrumentation/kubernetes-client-7.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/ktor/ktor-3.0/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/ktor/ktor-2.0/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/kafka/kafka-streams-0.11/metadata.yaml |
Uses shared messaging config. |
instrumentation/kafka/kafka-clients/kafka-clients-0.11/metadata.yaml |
Uses shared messaging config. |
instrumentation/jsf/jsf-myfaces-3.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jsf/jsf-myfaces-1.2/metadata.yaml |
Uses shared controller config. |
instrumentation/jsf/jsf-mojarra-3.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jsf/jsf-mojarra-1.2/metadata.yaml |
Uses shared controller config. |
instrumentation/jodd-http-4.2/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/jms/jms-3.0/metadata.yaml |
Uses shared messaging config. |
instrumentation/jms/jms-1.1/metadata.yaml |
Uses shared messaging config. |
instrumentation/jfinal-3.2/metadata.yaml |
Uses shared controller config. |
instrumentation/jetty/jetty-8.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/jetty/jetty-12.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/jetty/jetty-11.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/jetty-httpclient/jetty-httpclient-9.2/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/jetty-httpclient/jetty-httpclient-12.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/jedis/jedis-4.0/metadata.yaml |
Uses shared database config. |
instrumentation/jedis/jedis-3.0/metadata.yaml |
Uses shared database and peer configs. |
instrumentation/jedis/jedis-2.0/metadata.yaml |
Uses shared database and peer configs. |
instrumentation/jedis/jedis-1.4/metadata.yaml |
Uses shared database and peer configs. |
instrumentation/jdbc/metadata.yaml |
Uses shared database and peer configs. |
instrumentation/jaxws/jaxws-jws-api-1.1/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxws/jaxws-2.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxws/jaxws-2.0-metro-2.2/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxws/jaxws-2.0-cxf-3.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxws/jaxws-2.0-axis2-1.6/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.1/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-3.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/metadata.yaml |
Uses shared controller config. |
instrumentation/jaxrs/jaxrs-1.0/metadata.yaml |
Uses shared controller config. |
instrumentation/java-http-server/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/java-http-client/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/influxdb-2.4/metadata.yaml |
Uses shared database config. |
instrumentation/http-url-connection/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/helidon-4.3/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/grizzly-2.3/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation/grails-3.0/metadata.yaml |
Uses shared controller config. |
instrumentation/google-http-client-1.19/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/geode-1.4/metadata.yaml |
Uses shared database config. |
instrumentation/finatra-2.9/metadata.yaml |
Uses shared controller config. |
instrumentation/elasticsearch/elasticsearch-rest-7.0/metadata.yaml |
Uses shared HTTP methods config. |
instrumentation/elasticsearch/elasticsearch-rest-6.4/metadata.yaml |
Uses shared HTTP methods config. |
instrumentation/elasticsearch/elasticsearch-rest-5.0/metadata.yaml |
Uses shared HTTP methods config. |
instrumentation/couchbase/couchbase-2.6/metadata.yaml |
Uses shared database config. |
instrumentation/couchbase/couchbase-2.0/metadata.yaml |
Uses shared database config. |
instrumentation/clickhouse/clickhouse-client-v2-0.8/metadata.yaml |
Uses shared database config. |
instrumentation/clickhouse/clickhouse-client-v1-0.5/metadata.yaml |
Uses shared database config. |
instrumentation/cassandra/cassandra-4.4/metadata.yaml |
Uses shared database config. |
instrumentation/cassandra/cassandra-4.0/metadata.yaml |
Uses shared database config. |
instrumentation/cassandra/cassandra-3.0/metadata.yaml |
Uses shared database config. |
instrumentation/aws-sdk/aws-sdk-2.2/metadata.yaml |
Uses shared messaging config. |
instrumentation/aws-sdk/aws-sdk-1.11/metadata.yaml |
Uses shared messaging config. |
instrumentation/aws-lambda/aws-lambda-events-2.2/metadata.yaml |
Uses shared HTTP methods config. |
instrumentation/async-http-client/async-http-client-2.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/async-http-client/async-http-client-1.9/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/async-http-client/async-http-client-1.8/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/armeria/armeria-1.3/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/apache-httpclient/apache-httpclient-5.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/apache-httpclient/apache-httpclient-4.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/apache-httpclient/apache-httpclient-2.0/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/apache-httpasyncclient-4.1/metadata.yaml |
Uses shared HTTP client configs. |
instrumentation/apache-dubbo-2.7/metadata.yaml |
Uses shared peer-service config. |
instrumentation/akka/akka-http-10.0/metadata.yaml |
Uses shared HTTP client/server configs. |
instrumentation/activej-http-6.0/metadata.yaml |
Uses shared HTTP server configs. |
instrumentation-docs/src/test/java/io/opentelemetry/instrumentation/docs/utils/YamlHelperTest.java |
Tests references and definition deduplication. |
instrumentation-docs/src/main/resources/shared-config-definitions.yaml |
Defines reusable configuration catalog entries. |
instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/utils/YamlHelper.java |
Generates catalogs and module references. |
instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/internal/SharedConfigurationRegistry.java |
Loads and resolves shared definitions. |
instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/internal/ConfigurationOption.java |
Models configuration references and IDs. |
instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/DocGeneratorApplication.java |
Emits format 0.6 and catalog guidance. |
instrumentation-docs/readme.md |
Documents catalogs, references, and metadata authoring. |
|
This PR has review comments. Review suggestions, whether from maintainers or automated reviewers, aren't always correct or required. Please evaluate each comment on its merits, then make sure each thread has a clear outcome. For example, link to the commit if you applied a suggestion, explain why it wasn't applied, or ask a follow-up question. Automation flags a PR for human review once every review thread has a reply or is marked as resolved. Status across open PRs is visible on the pull request dashboard. |
Adds a catalog of definitions for common configs and metrics that are re-used, so we can just reference them. Eventually we can take this further for spans, but I think there's more we can do around the span metadata in general so I held off for now.
If it would make it easier to review, I can split this between the core code change and the metadata file updates, just let me know.
I've run a test on my fork (resulting updated file here), as well as already drafted what's needed on the ecosystem explorer side to ingest this new format.
Related to #19077 (comment)