All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.opentelemetry.exporter.otlp.internal.OtlpSpanExporterProvider Maven / Gradle / Ivy

There is a newer version: 1.45.0
Show newest version
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package io.opentelemetry.exporter.otlp.internal;

import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_TRACES;
import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.PROTOCOL_GRPC;
import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.PROTOCOL_HTTP_PROTOBUF;

import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter;
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener;
import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider;
import io.opentelemetry.sdk.trace.export.SpanExporter;
import java.util.concurrent.atomic.AtomicReference;

/**
 * {@link SpanExporter} SPI implementation for {@link OtlpGrpcSpanExporter} and {@link
 * OtlpHttpSpanExporter}.
 *
 * 

This class is internal and is hence not for public use. Its APIs are unstable and can change * at any time. */ public class OtlpSpanExporterProvider implements ConfigurableSpanExporterProvider, AutoConfigureListener { private final AtomicReference meterProviderRef = new AtomicReference<>(MeterProvider.noop()); @Override public SpanExporter createExporter(ConfigProperties config) { String protocol = OtlpConfigUtil.getOtlpProtocol(DATA_TYPE_TRACES, config); if (protocol.equals(PROTOCOL_HTTP_PROTOBUF)) { OtlpHttpSpanExporterBuilder builder = httpBuilder(); OtlpConfigUtil.configureOtlpExporterBuilder( DATA_TYPE_TRACES, config, builder::setEndpoint, builder::addHeader, builder::setCompression, builder::setTimeout, builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode); builder.setMeterProvider(meterProviderRef::get); return builder.build(); } else if (protocol.equals(PROTOCOL_GRPC)) { OtlpGrpcSpanExporterBuilder builder = grpcBuilder(); OtlpConfigUtil.configureOtlpExporterBuilder( DATA_TYPE_TRACES, config, builder::setEndpoint, builder::addHeader, builder::setCompression, builder::setTimeout, builder::setTrustedCertificates, builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode); builder.setMeterProvider(meterProviderRef::get); return builder.build(); } throw new ConfigurationException("Unsupported OTLP traces protocol: " + protocol); } @Override public String getName() { return "otlp"; } // Visible for testing OtlpHttpSpanExporterBuilder httpBuilder() { return OtlpHttpSpanExporter.builder(); } // Visible for testing OtlpGrpcSpanExporterBuilder grpcBuilder() { return OtlpGrpcSpanExporter.builder(); } @Override public void afterAutoConfigure(OpenTelemetrySdk sdk) { meterProviderRef.set(sdk.getMeterProvider()); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy