From 4b7e50928f6f24b78e18424fb1941fab9b4273d9 Mon Sep 17 00:00:00 2001 From: jack-berg <34418638+jack-berg@users.noreply.github.com> Date: Mon, 8 Nov 2021 22:59:33 -0600 Subject: [PATCH] Configure periodic metric reader interval with otel.metric.export.interval (#3840) --- sdk-extensions/autoconfigure/README.md | 7 ++++--- .../sdk/autoconfigure/MetricExporterConfiguration.java | 5 ++++- .../sdk/autoconfigure/OtlpGrpcConfigTest.java | 2 +- .../sdk/autoconfigure/OtlpHttpConfigTest.java | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/sdk-extensions/autoconfigure/README.md b/sdk-extensions/autoconfigure/README.md index cb0e535e02b..04b8075c03f 100644 --- a/sdk-extensions/autoconfigure/README.md +++ b/sdk-extensions/autoconfigure/README.md @@ -233,11 +233,12 @@ These properties can be used to control the maximum size of recordings per span. |--------------------------|--------------------------|-----------------------------------------------------------------------------------| | otel.metrics.exemplar.filter | OTEL_METRICS_EXEMPLAR_FILTER | The filter for exemplar sampling. Can be `NONE`, `ALL` or `WITH_SAMPLED_TRACE`. Default is `WITH_SAMPLED_TRACE`.| -## Interval metric reader +## Periodic Metric Reader | System property | Environment variable | Description | |--------------------------|--------------------------|-----------------------------------------------------------------------------------| -| otel.imr.export.interval | OTEL_IMR_EXPORT_INTERVAL | The interval, in milliseconds, between pushes to the exporter. Default is `60000`.| +| otel.metric.export.interval | OTEL_METRIC_EXPORT_INTERVAL | The interval, in milliseconds, between the start of two export attempts. Default is `60000`.| +| otel.imr.export.interval | OTEL_IMR_EXPORT_INTERVAL | **DEPRECATED for removal in 1.10.0.** The interval, in milliseconds, between the start of two export attempts. Default is `60000`.| ## Customizing the OpenTelemetry SDK @@ -245,5 +246,5 @@ Autoconfiguration exposes SPI [hooks](../autoconfigure-spi/src/main/java/io/open It's recommended to use the above configuration properties where possible, only implementing the SPI to add functionality not found in the SDK by default. -[javadoc-image]: https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure.svg +[javadoc-image]: https://www.javadoc.io/badge/io.opentelemetry/opentelemetry- sdk-extension-autoconfigure.svg [javadoc-url]: https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure diff --git a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/MetricExporterConfiguration.java b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/MetricExporterConfiguration.java index 36e3c04afdc..e78a97bc3ad 100644 --- a/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/MetricExporterConfiguration.java +++ b/sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/MetricExporterConfiguration.java @@ -145,7 +145,10 @@ private static void configurePeriodicMetricReader( SdkMeterProviderBuilder sdkMeterProviderBuilder, MetricExporter exporter) { - Duration exportInterval = config.getDuration("otel.imr.export.interval"); + Duration exportInterval = config.getDuration("otel.metric.export.interval"); + if (exportInterval == null) { + exportInterval = config.getDuration("otel.imr.export.interval"); + } if (exportInterval == null) { exportInterval = Duration.ofMinutes(1); } diff --git a/sdk-extensions/autoconfigure/src/testOtlpGrpc/java/io/opentelemetry/sdk/autoconfigure/OtlpGrpcConfigTest.java b/sdk-extensions/autoconfigure/src/testOtlpGrpc/java/io/opentelemetry/sdk/autoconfigure/OtlpGrpcConfigTest.java index a49ea12d620..c5e9c8f61a8 100644 --- a/sdk-extensions/autoconfigure/src/testOtlpGrpc/java/io/opentelemetry/sdk/autoconfigure/OtlpGrpcConfigTest.java +++ b/sdk-extensions/autoconfigure/src/testOtlpGrpc/java/io/opentelemetry/sdk/autoconfigure/OtlpGrpcConfigTest.java @@ -228,7 +228,7 @@ void configuresGlobal() { System.setProperty("otel.exporter.otlp.endpoint", "https://localhost:" + server.httpsPort()); System.setProperty( "otel.exporter.otlp.certificate", certificate.certificateFile().getAbsolutePath()); - System.setProperty("otel.imr.export.interval", "1s"); + System.setProperty("otel.metric.export.interval", "1s"); GlobalOpenTelemetry.get().getTracer("test").spanBuilder("test").startSpan().end(); diff --git a/sdk-extensions/autoconfigure/src/testOtlpHttp/java/io/opentelemetry/sdk/autoconfigure/OtlpHttpConfigTest.java b/sdk-extensions/autoconfigure/src/testOtlpHttp/java/io/opentelemetry/sdk/autoconfigure/OtlpHttpConfigTest.java index ad74910b387..271ba6eb9b1 100644 --- a/sdk-extensions/autoconfigure/src/testOtlpHttp/java/io/opentelemetry/sdk/autoconfigure/OtlpHttpConfigTest.java +++ b/sdk-extensions/autoconfigure/src/testOtlpHttp/java/io/opentelemetry/sdk/autoconfigure/OtlpHttpConfigTest.java @@ -363,7 +363,7 @@ void configuresGlobal() { "otel.exporter.otlp.endpoint", "https://" + canonicalHostName + ":" + server.httpsPort() + "/"); System.setProperty("otel.exporter.otlp.certificate", certificateExtension.filePath); - System.setProperty("otel.imr.export.interval", "1s"); + System.setProperty("otel.metric.export.interval", "1s"); GlobalOpenTelemetry.get().getTracer("test").spanBuilder("test").startSpan().end();