/* * Copyright The OpenTelemetry Authors * SPDX-License-Identifier: Apache-2.0 */ package com.example.javaagent; import com.google.auto.service.AutoService; import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer; import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder; import io.opentelemetry.sdk.trace.SpanLimits; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import java.util.HashMap; import java.util.Map; /** * This is one of the main entry points for Instrumentation Agent's customizations. It allows * configuring the {@link AutoConfigurationCustomizer}. See the {@link * #customize(AutoConfigurationCustomizer)} method below. * *

Also see https://github.com/open-telemetry/opentelemetry-java/issues/2022 * * @see AutoConfigurationCustomizerProvider * @see DemoPropagatorProvider */ @AutoService(AutoConfigurationCustomizerProvider.class) public class DemoAutoConfigurationCustomizerProvider implements AutoConfigurationCustomizerProvider { @Override public void customize(AutoConfigurationCustomizer autoConfiguration) { autoConfiguration .addTracerProviderCustomizer(this::configureSdkTracerProvider) .addPropertiesSupplier(this::getDefaultProperties); } private SdkTracerProviderBuilder configureSdkTracerProvider( SdkTracerProviderBuilder tracerProvider, ConfigProperties config) { return tracerProvider .setIdGenerator(new DemoIdGenerator()) .setSpanLimits(SpanLimits.builder().setMaxNumberOfAttributes(1024).build()) .addSpanProcessor(new DemoSpanProcessor()) .addSpanProcessor(SimpleSpanProcessor.create(new DemoSpanExporter())); } private Map getDefaultProperties() { Map properties = new HashMap<>(); properties.put("otel.exporter.otlp.endpoint", "http://backend:8080"); properties.put("otel.exporter.otlp.insecure", "true"); properties.put("otel.config.max.attrs", "16"); properties.put("otel.traces.sampler", "demo"); return properties; } }