Extract common OTLP config logic to utility function (#3525)
This commit is contained in:
parent
068bffba9e
commit
3555965a34
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.autoconfigure;
|
||||
|
||||
import static io.opentelemetry.sdk.autoconfigure.OtlpConfigUtil.DATA_TYPE_METRICS;
|
||||
|
||||
import io.opentelemetry.exporter.logging.LoggingMetricExporter;
|
||||
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
|
||||
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder;
|
||||
|
|
@ -16,9 +18,6 @@ import io.opentelemetry.sdk.metrics.export.IntervalMetricReaderBuilder;
|
|||
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
||||
import io.prometheus.client.exporter.HTTPServer;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.time.Duration;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
|
@ -92,47 +91,13 @@ final class MetricExporterConfiguration {
|
|||
}
|
||||
OtlpGrpcMetricExporterBuilder builder = OtlpGrpcMetricExporter.builder();
|
||||
|
||||
String endpoint = config.getString("otel.exporter.otlp.metrics.endpoint");
|
||||
if (endpoint == null) {
|
||||
endpoint = config.getString("otel.exporter.otlp.endpoint");
|
||||
}
|
||||
if (endpoint != null) {
|
||||
builder.setEndpoint(endpoint);
|
||||
}
|
||||
|
||||
Map<String, String> headers = config.getCommaSeparatedMap("otel.exporter.otlp.metrics.headers");
|
||||
if (headers.isEmpty()) {
|
||||
headers = config.getCommaSeparatedMap("otel.exporter.otlp.headers");
|
||||
}
|
||||
headers.forEach(builder::addHeader);
|
||||
|
||||
config.getCommaSeparatedMap("otel.exporter.otlp.headers").forEach(builder::addHeader);
|
||||
|
||||
Duration timeout = config.getDuration("otel.exporter.otlp.metrics.timeout");
|
||||
if (timeout == null) {
|
||||
timeout = config.getDuration("otel.exporter.otlp.timeout");
|
||||
}
|
||||
if (timeout != null) {
|
||||
builder.setTimeout(timeout);
|
||||
}
|
||||
|
||||
String certificate = config.getString("otel.exporter.otlp.metrics.certificate");
|
||||
if (certificate == null) {
|
||||
certificate = config.getString("otel.exporter.otlp.certificate");
|
||||
}
|
||||
if (certificate != null) {
|
||||
Path path = Paths.get(certificate);
|
||||
if (!Files.exists(path)) {
|
||||
throw new ConfigurationException("Invalid OTLP certificate path: " + path);
|
||||
}
|
||||
final byte[] certificateBytes;
|
||||
try {
|
||||
certificateBytes = Files.readAllBytes(path);
|
||||
} catch (IOException e) {
|
||||
throw new ConfigurationException("Error reading OTLP certificate.", e);
|
||||
}
|
||||
builder.setTrustedCertificates(certificateBytes);
|
||||
}
|
||||
OtlpConfigUtil.configureOtlpExporterBuilder(
|
||||
DATA_TYPE_METRICS,
|
||||
config,
|
||||
builder::setEndpoint,
|
||||
builder::addHeader,
|
||||
builder::setTimeout,
|
||||
builder::setTrustedCertificates);
|
||||
|
||||
OtlpGrpcMetricExporter exporter = builder.build();
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.autoconfigure;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.time.Duration;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
final class OtlpConfigUtil {
|
||||
|
||||
static final String DATA_TYPE_TRACES = "traces";
|
||||
static final String DATA_TYPE_METRICS = "metrics";
|
||||
|
||||
static void configureOtlpExporterBuilder(
|
||||
String dataType,
|
||||
ConfigProperties config,
|
||||
Consumer<String> setEndpoint,
|
||||
BiConsumer<String, String> addHeader,
|
||||
Consumer<Duration> setTimeout,
|
||||
Consumer<byte[]> setTrustedCertificates) {
|
||||
String endpoint = config.getString(String.format("otel.exporter.otlp.%s.endpoint", dataType));
|
||||
if (endpoint == null) {
|
||||
endpoint = config.getString("otel.exporter.otlp.endpoint");
|
||||
}
|
||||
if (endpoint != null) {
|
||||
setEndpoint.accept(endpoint);
|
||||
}
|
||||
|
||||
Map<String, String> headers =
|
||||
config.getCommaSeparatedMap(String.format("otel.exporter.otlp.%s.headers", dataType));
|
||||
if (headers.isEmpty()) {
|
||||
headers = config.getCommaSeparatedMap("otel.exporter.otlp.headers");
|
||||
}
|
||||
headers.forEach(addHeader);
|
||||
|
||||
Duration timeout = config.getDuration(String.format("otel.exporter.otlp.%s.timeout", dataType));
|
||||
if (timeout == null) {
|
||||
timeout = config.getDuration("otel.exporter.otlp.timeout");
|
||||
}
|
||||
if (timeout != null) {
|
||||
setTimeout.accept(timeout);
|
||||
}
|
||||
|
||||
String certificate =
|
||||
config.getString(String.format("otel.exporter.otlp.%s.certificate", dataType));
|
||||
if (certificate == null) {
|
||||
certificate = config.getString("otel.exporter.otlp.certificate");
|
||||
}
|
||||
if (certificate != null) {
|
||||
Path path = Paths.get(certificate);
|
||||
if (!Files.exists(path)) {
|
||||
throw new ConfigurationException("Invalid OTLP certificate path: " + path);
|
||||
}
|
||||
final byte[] certificateBytes;
|
||||
try {
|
||||
certificateBytes = Files.readAllBytes(path);
|
||||
} catch (IOException e) {
|
||||
throw new ConfigurationException("Error reading OTLP certificate.", e);
|
||||
}
|
||||
setTrustedCertificates.accept(certificateBytes);
|
||||
}
|
||||
}
|
||||
|
||||
private OtlpConfigUtil() {}
|
||||
}
|
||||
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.autoconfigure;
|
||||
|
||||
import static io.opentelemetry.sdk.autoconfigure.OtlpConfigUtil.DATA_TYPE_TRACES;
|
||||
|
||||
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
|
||||
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporterBuilder;
|
||||
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
|
||||
|
|
@ -14,10 +16,6 @@ import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
|
|||
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurableSpanExporterProvider;
|
||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.time.Duration;
|
||||
import java.util.Map;
|
||||
import java.util.ServiceLoader;
|
||||
|
|
@ -70,45 +68,13 @@ final class SpanExporterConfiguration {
|
|||
"opentelemetry-exporter-otlp");
|
||||
OtlpGrpcSpanExporterBuilder builder = OtlpGrpcSpanExporter.builder();
|
||||
|
||||
String endpoint = config.getString("otel.exporter.otlp.traces.endpoint");
|
||||
if (endpoint == null) {
|
||||
endpoint = config.getString("otel.exporter.otlp.endpoint");
|
||||
}
|
||||
if (endpoint != null) {
|
||||
builder.setEndpoint(endpoint);
|
||||
}
|
||||
|
||||
Map<String, String> headers = config.getCommaSeparatedMap("otel.exporter.otlp.traces.headers");
|
||||
if (headers.isEmpty()) {
|
||||
headers = config.getCommaSeparatedMap("otel.exporter.otlp.headers");
|
||||
}
|
||||
headers.forEach(builder::addHeader);
|
||||
|
||||
Duration timeout = config.getDuration("otel.exporter.otlp.traces.timeout");
|
||||
if (timeout == null) {
|
||||
timeout = config.getDuration("otel.exporter.otlp.timeout");
|
||||
}
|
||||
if (timeout != null) {
|
||||
builder.setTimeout(timeout);
|
||||
}
|
||||
|
||||
String certificate = config.getString("otel.exporter.otlp.traces.certificate");
|
||||
if (certificate == null) {
|
||||
certificate = config.getString("otel.exporter.otlp.certificate");
|
||||
}
|
||||
if (certificate != null) {
|
||||
Path path = Paths.get(certificate);
|
||||
if (!Files.exists(path)) {
|
||||
throw new ConfigurationException("Invalid OTLP certificate path: " + path);
|
||||
}
|
||||
final byte[] certificateBytes;
|
||||
try {
|
||||
certificateBytes = Files.readAllBytes(path);
|
||||
} catch (IOException e) {
|
||||
throw new ConfigurationException("Error reading OTLP certificate.", e);
|
||||
}
|
||||
builder.setTrustedCertificates(certificateBytes);
|
||||
}
|
||||
OtlpConfigUtil.configureOtlpExporterBuilder(
|
||||
DATA_TYPE_TRACES,
|
||||
config,
|
||||
builder::setEndpoint,
|
||||
builder::addHeader,
|
||||
builder::setTimeout,
|
||||
builder::setTrustedCertificates);
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue