Skip to content

Add delcarative config support for specifying internal telemetry version #7928

@jack-berg

Description

@jack-berg

A variety of SDK components now follow the pattern for configuring internal telemetry:

Builder setInternalTelemetryVersion(InternalTelemetryVersion);
Builder setMeterProvider(Supplier<MeterProvider>);

For example,

/**
* Sets the {@link MeterProvider} supplier to use to collect metrics related to export. If not
* set, uses {@link GlobalOpenTelemetry#getMeterProvider()}.
*
* @since 1.32.0
*/
public OtlpHttpSpanExporterBuilder setMeterProvider(
Supplier<MeterProvider> meterProviderSupplier) {
requireNonNull(meterProviderSupplier, "meterProviderSupplier");
delegate.setMeterProvider(meterProviderSupplier);
return this;
}
/**
* Sets the {@link InternalTelemetryVersion} defining which self-monitoring metrics this exporter
* collects.
*
* @since 1.51.0
*/
public OtlpHttpSpanExporterBuilder setInternalTelemetryVersion(
InternalTelemetryVersion schemaVersion) {
requireNonNull(schemaVersion, "schemaVersion");
delegate.setInternalTelemetryVersion(schemaVersion);
return this;
}

However, we lack controls for specifying the internal telemetry version using autoconfiguration mechanisms based on env vars and declarative config.

Let's add support to specify this in declarative config.

For example, I should be able to specify that I prefer InternalTelemetryVersion.LATEST with something like:

resource: ...
tracer_provider: ...
meter_provider: ...
logger_provider: ...
intstrumentation/development:
  java:
    sdk_internal:
      telemetry_version: latest

Metadata

Metadata

Assignees

No one assigned

    Labels

    Feature RequestSuggest an idea for this project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions