Skip to content

Instrumentation metadata#2773

Open
laurit wants to merge 3 commits intosignalfx:mainfrom
laurit:instrumentation-metadata
Open

Instrumentation metadata#2773
laurit wants to merge 3 commits intosignalfx:mainfrom
laurit:instrumentation-metadata

Conversation

@laurit
Copy link
Copy Markdown
Collaborator

@laurit laurit commented Apr 17, 2026

Use https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/instrumentation-list.yaml to generate instrumentation metadata. Move instrumentation settings under instrumentations like in dotnet. See https://help.splunk.com/en/splunk-observability-cloud/manage-data/available-data-sources/supported-integrations-in-splunk-observability-cloud/apm-instrumentation/instrument-a-.net-application/requirements and https://help.splunk.com/en/splunk-observability-cloud/manage-data/available-data-sources/supported-integrations-in-splunk-observability-cloud/apm-instrumentation/instrument-a-java-application/requirements
Due to the way upstream metadata is structured when different versions of the framework have different instrumentations we'll list them all. Known issues in upstream metadata are

  • runtime telemetry includes experimental metrics that are not enabled by default
  • some instrumentations use otel.instrumentation.servlet.capture-request-parameters, probably should be otel.instrumentation.servlet.experimental.capture-request-parameters
    At least we don't have to manually keep this up to date any more.

@laurit laurit requested review from a team as code owners April 17, 2026 12:35
@@ -866,7 +892,7 @@ otel.exporter.otlp.metrics.temporality.preference OTEL_EXPORTER_OTLP_METRICS_TEM
SettingCategory.INSTRUMENTATION));

// DB statement sanitization
// https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/#db-statement-sanitization
// https://opentelemetry.io/docs/zero-code/java/agent/instrumentation/#db-statement-sanitization
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are probably other pages that have changed. I think we should try to tackle this in a subsequent PR.

.component("Apache Kafka Connect API", "2.6 and higher")
// https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/README.md
// these metrics are created by kafka, we only collect these as otel metrics
.customMetric(
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upstream metadata doesn't include these. The exact metrics you'll get depends on the kafka client version. I think the plan is to disable the kafka metrics by default in the next major release.

@@ -4528,12 +2249,12 @@ Map<String, Object> build() {
if (!metrics.isEmpty()) {
signals.add(Collections.singletonMap("metrics", metrics));
}
if (!dependencies.isEmpty()) {
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we never add dependencies to the instrumentations (I believe resource providers use this) so removed it

Copy link
Copy Markdown
Contributor

@robsunday robsunday left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are lots of changes hard to validate manually, but it looks good with few small comments.

metadata = yaml.load(inputStream);
}

if (!"0.5".equals(metadata.get("file_format").toString())) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any chance it can be 0.5.1, which in theory should be backward compatible with 0.5 ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not really. When the format changes we expect to manually validate that the new version is fine.

@@ -4238,6 +2061,11 @@ private static Map<String, Object> setting(
String defaultValue,
SettingType type,
SettingCategory category) {
if ("otel.instrumentation.spring-batch.item.enabled".equals(property)) {
// SplunkConfiguration overrides the default value of this settings to true
Copy link
Copy Markdown
Contributor

@robsunday robsunday Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is not the case for declarative config. It must be placed in yaml explcitly.

Also there is otel.instrumentation.spring-batch.enabled as well defaulting for env var config schema to true

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is not the case for declarative config. It must be placed in yaml explcitly.

It is fine. This option was added for a certain customer that is not a customer any more. We can disable it by default in the next major release.

Also there is otel.instrumentation.spring-batch.enabled as well defaulting for env var config schema to true

This is a bit annoying. Upstream metadata has a disabled_by_default tag. Perhaps we should append This instrumentation is disabled by default. to the description of the disabled instrumentations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants