Update to OTel 1.1.0 (#2744)
* Update to OTel 1.1.0 * Use transform safe logger * Finish Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
This commit is contained in:
parent
38e98ebdad
commit
a4ea1c9db2
|
@ -8,8 +8,8 @@ configurations.all {
|
|||
|
||||
ext {
|
||||
versions = [
|
||||
opentelemetry : '1.0.1',
|
||||
opentelemetryAlpha: "1.0.1-alpha",
|
||||
opentelemetry : '1.1.0',
|
||||
opentelemetryAlpha: "1.1.0-alpha",
|
||||
|
||||
slf4j : "1.7.30",
|
||||
guava : "30.1-jre",
|
||||
|
|
|
@ -40,7 +40,10 @@ public class ApacheCamelInstrumentationModule extends InstrumentationModule {
|
|||
|
||||
@Override
|
||||
public String[] additionalHelperClassNames() {
|
||||
return new String[] {"io.opentelemetry.extension.aws.AwsXrayPropagator"};
|
||||
return new String[] {
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator",
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator$1"
|
||||
};
|
||||
}
|
||||
|
||||
public static class CamelContextInstrumentation implements TypeInstrumentation {
|
||||
|
|
|
@ -20,7 +20,10 @@ public class AwsLambdaInstrumentationModule extends InstrumentationModule {
|
|||
|
||||
@Override
|
||||
public String[] additionalHelperClassNames() {
|
||||
return new String[] {"io.opentelemetry.extension.aws.AwsXrayPropagator"};
|
||||
return new String[] {
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator",
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator$1"
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -20,7 +20,10 @@ public class AwsSdkInstrumentationModule extends InstrumentationModule {
|
|||
|
||||
@Override
|
||||
public String[] additionalHelperClassNames() {
|
||||
return new String[] {"io.opentelemetry.extension.aws.AwsXrayPropagator"};
|
||||
return new String[] {
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator",
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator$1"
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -26,7 +26,10 @@ public class AwsSdkInstrumentationModule extends InstrumentationModule {
|
|||
|
||||
@Override
|
||||
public String[] additionalHelperClassNames() {
|
||||
return new String[] {"io.opentelemetry.extension.aws.AwsXrayPropagator"};
|
||||
return new String[] {
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator",
|
||||
"io.opentelemetry.extension.aws.AwsXrayPropagator$1"
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -23,7 +23,7 @@ public class OpenTelemetryMetricsInstrumentation implements TypeInstrumentation
|
|||
|
||||
@Override
|
||||
public ElementMatcher<? super TypeDescription> typeMatcher() {
|
||||
return named("application.io.opentelemetry.api.metrics.GlobalMetricsProvider");
|
||||
return named("application.io.opentelemetry.api.metrics.GlobalMeterProvider");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -15,7 +15,7 @@ public class ApplicationMeterProvider implements MeterProvider {
|
|||
private final io.opentelemetry.api.metrics.MeterProvider agentMeterProvider;
|
||||
|
||||
public ApplicationMeterProvider() {
|
||||
this.agentMeterProvider = io.opentelemetry.api.metrics.GlobalMetricsProvider.get();
|
||||
this.agentMeterProvider = io.opentelemetry.api.metrics.GlobalMeterProvider.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,7 +12,7 @@ import static java.util.concurrent.TimeUnit.SECONDS
|
|||
|
||||
import com.google.common.base.Stopwatch
|
||||
import io.opentelemetry.api.metrics.AsynchronousInstrument
|
||||
import io.opentelemetry.api.metrics.GlobalMetricsProvider
|
||||
import io.opentelemetry.api.metrics.GlobalMeterProvider
|
||||
import io.opentelemetry.api.metrics.common.Labels
|
||||
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
|
||||
import io.opentelemetry.sdk.metrics.data.MetricData
|
||||
|
@ -27,7 +27,7 @@ class MeterTest extends AgentInstrumentationSpecification {
|
|||
def instrumentationName = "test" + new Random().nextLong()
|
||||
|
||||
when:
|
||||
def meter = GlobalMetricsProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def meter = GlobalMeterProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def instrument = meter."$builderMethod"("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
|
@ -78,7 +78,7 @@ class MeterTest extends AgentInstrumentationSpecification {
|
|||
def instrumentationName = "test" + new Random().nextLong()
|
||||
|
||||
when:
|
||||
def meter = GlobalMetricsProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def meter = GlobalMeterProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def instrument = meter."$builderMethod"("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
|
@ -124,7 +124,7 @@ class MeterTest extends AgentInstrumentationSpecification {
|
|||
def instrumentationName = "test" + new Random().nextLong()
|
||||
|
||||
when:
|
||||
def meter = GlobalMetricsProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def meter = GlobalMeterProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def instrument = meter."$builderMethod"("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
|
@ -206,7 +206,7 @@ class MeterTest extends AgentInstrumentationSpecification {
|
|||
def instrumentationName = "test" + new Random().nextLong()
|
||||
|
||||
when:
|
||||
def meter = GlobalMetricsProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def meter = GlobalMeterProvider.getMeter(instrumentationName, "1.2.3")
|
||||
def longCounter = meter.longCounterBuilder("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
|
@ -264,6 +264,7 @@ class MeterTest extends AgentInstrumentationSpecification {
|
|||
List<PointData> points(MetricData metricData) {
|
||||
def points = []
|
||||
points.addAll(metricData.getDoubleGaugeData().getPoints())
|
||||
points.addAll(metricData.getDoubleHistogramData().getPoints())
|
||||
points.addAll(metricData.getDoubleSumData().getPoints())
|
||||
points.addAll(metricData.getDoubleSummaryData().getPoints())
|
||||
points.addAll(metricData.getLongGaugeData().getPoints())
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
package io.opentelemetry.instrumentation.oshi;
|
||||
|
||||
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||
import io.opentelemetry.api.metrics.GlobalMeterProvider;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.api.metrics.common.Labels;
|
||||
import oshi.SystemInfo;
|
||||
|
@ -20,7 +20,7 @@ public class ProcessMetrics {
|
|||
|
||||
/** Register observers for java runtime metrics. */
|
||||
public static void registerObservers() {
|
||||
Meter meter = GlobalMetricsProvider.get().get(ProcessMetrics.class.getName());
|
||||
Meter meter = GlobalMeterProvider.get().get(ProcessMetrics.class.getName());
|
||||
SystemInfo systemInfo = new SystemInfo();
|
||||
OperatingSystem osInfo = systemInfo.getOperatingSystem();
|
||||
OSProcess processInfo = osInfo.getProcess(osInfo.getProcessId());
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
package io.opentelemetry.instrumentation.oshi;
|
||||
|
||||
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||
import io.opentelemetry.api.metrics.GlobalMeterProvider;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.api.metrics.common.Labels;
|
||||
import oshi.SystemInfo;
|
||||
|
@ -25,7 +25,7 @@ public class SystemMetrics {
|
|||
|
||||
/** Register observers for system metrics. */
|
||||
public static void registerObservers() {
|
||||
Meter meter = GlobalMetricsProvider.get().get("io.opentelemetry.instrumentation.oshi");
|
||||
Meter meter = GlobalMeterProvider.get().get("io.opentelemetry.instrumentation.oshi");
|
||||
SystemInfo systemInfo = new SystemInfo();
|
||||
HardwareAbstractionLayer hal = systemInfo.getHardware();
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ class AbstractMetricsTest {
|
|||
.setExportIntervalMillis(100)
|
||||
.setMetricExporter(testMetricExporter)
|
||||
.setMetricProducers(Collections.singletonList(meterProvider))
|
||||
.build();
|
||||
.buildAndStart();
|
||||
}
|
||||
|
||||
public void verify(
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
package io.opentelemetry.instrumentation.runtimemetrics;
|
||||
|
||||
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||
import io.opentelemetry.api.metrics.GlobalMeterProvider;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.api.metrics.common.Labels;
|
||||
import java.lang.management.GarbageCollectorMXBean;
|
||||
|
@ -35,7 +35,7 @@ public final class GarbageCollector {
|
|||
/** Register all observers provided by this module. */
|
||||
public static void registerObservers() {
|
||||
List<GarbageCollectorMXBean> garbageCollectors = ManagementFactory.getGarbageCollectorMXBeans();
|
||||
Meter meter = GlobalMetricsProvider.getMeter(GarbageCollector.class.getName());
|
||||
Meter meter = GlobalMeterProvider.getMeter(GarbageCollector.class.getName());
|
||||
List<Labels> labelSets = new ArrayList<>(garbageCollectors.size());
|
||||
for (final GarbageCollectorMXBean gc : garbageCollectors) {
|
||||
labelSets.add(Labels.of(GC_LABEL_KEY, gc.getName()));
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
package io.opentelemetry.instrumentation.runtimemetrics;
|
||||
|
||||
import io.opentelemetry.api.metrics.AsynchronousInstrument.LongResult;
|
||||
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||
import io.opentelemetry.api.metrics.GlobalMeterProvider;
|
||||
import io.opentelemetry.api.metrics.LongUpDownSumObserver;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.api.metrics.common.Labels;
|
||||
|
@ -59,7 +59,7 @@ public final class MemoryPools {
|
|||
/** Register only the "area" observers. */
|
||||
public static void registerMemoryAreaObservers() {
|
||||
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
|
||||
Meter meter = GlobalMetricsProvider.getMeter(MemoryPools.class.getName());
|
||||
Meter meter = GlobalMeterProvider.getMeter(MemoryPools.class.getName());
|
||||
final LongUpDownSumObserver areaMetric =
|
||||
meter
|
||||
.longUpDownSumObserverBuilder("runtime.jvm.memory.area")
|
||||
|
@ -76,7 +76,7 @@ public final class MemoryPools {
|
|||
/** Register only the "pool" observers. */
|
||||
public static void registerMemoryPoolObservers() {
|
||||
List<MemoryPoolMXBean> poolBeans = ManagementFactory.getMemoryPoolMXBeans();
|
||||
Meter meter = GlobalMetricsProvider.getMeter(MemoryPools.class.getName());
|
||||
Meter meter = GlobalMeterProvider.getMeter(MemoryPools.class.getName());
|
||||
List<Labels> usedLabelSets = new ArrayList<>(poolBeans.size());
|
||||
List<Labels> committedLabelSets = new ArrayList<>(poolBeans.size());
|
||||
List<Labels> maxLabelSets = new ArrayList<>(poolBeans.size());
|
||||
|
|
|
@ -52,7 +52,7 @@ dependencies {
|
|||
implementation deps.autoservice
|
||||
implementation deps.slf4j
|
||||
|
||||
implementation group: 'io.grpc', name: 'grpc-netty', version: '1.34.1'
|
||||
implementation group: 'io.grpc', name: 'grpc-netty', version: '1.35.1'
|
||||
|
||||
testImplementation project(':testing-common')
|
||||
testImplementation deps.assertj
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
package io.opentelemetry.javaagent.tooling;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||
import io.opentelemetry.api.metrics.GlobalMeterProvider;
|
||||
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
|
||||
import io.opentelemetry.instrumentation.api.config.Config;
|
||||
import io.opentelemetry.javaagent.spi.exporter.MetricExporterFactory;
|
||||
|
@ -128,8 +128,8 @@ public class AgentTracerProviderConfigurer implements SdkTracerProviderConfigure
|
|||
MetricExporter metricExporter = metricExporterFactory.fromConfig(config.asJavaProperties());
|
||||
IntervalMetricReader.builder()
|
||||
.setMetricExporter(metricExporter)
|
||||
.setMetricProducers(Collections.singleton((SdkMeterProvider) GlobalMetricsProvider.get()))
|
||||
.build();
|
||||
.setMetricProducers(Collections.singleton((SdkMeterProvider) GlobalMeterProvider.get()))
|
||||
.buildAndStart();
|
||||
log.info("Installed metric exporter: " + metricExporter.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,7 +47,8 @@ import org.slf4j.LoggerFactory;
|
|||
* possible to extend and reuse them in vendor distributions.
|
||||
*/
|
||||
public abstract class InstrumentationModule {
|
||||
private static final Logger log = LoggerFactory.getLogger(InstrumentationModule.class);
|
||||
private static final TransformSafeLogger log =
|
||||
TransformSafeLogger.getLogger(InstrumentationModule.class);
|
||||
private static final Logger muzzleLog = LoggerFactory.getLogger("muzzleMatcher");
|
||||
|
||||
private static final String[] EMPTY = new String[0];
|
||||
|
@ -233,7 +234,7 @@ public abstract class InstrumentationModule {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
if (muzzleLog.isDebugEnabled()) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug(
|
||||
"Applying instrumentation: {} -- {} on {}",
|
||||
mainInstrumentationName(),
|
||||
|
|
|
@ -7,6 +7,7 @@ package io.opentelemetry.javaagent.tooling;
|
|||
|
||||
import static org.slf4j.event.Level.DEBUG;
|
||||
import static org.slf4j.event.Level.TRACE;
|
||||
import static org.slf4j.event.Level.WARN;
|
||||
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
|
@ -103,6 +104,30 @@ public class TransformSafeLogger {
|
|||
}
|
||||
}
|
||||
|
||||
public void warn(String format, Object arg) {
|
||||
if (logMessageQueue != null) {
|
||||
logMessageQueue.offer(new LogMessage(WARN, logger, format, arg));
|
||||
} else {
|
||||
logger.warn(format, arg);
|
||||
}
|
||||
}
|
||||
|
||||
public void warn(String format, Object arg1, Object arg2) {
|
||||
if (logMessageQueue != null) {
|
||||
logMessageQueue.offer(new LogMessage(WARN, logger, format, arg1, arg2));
|
||||
} else {
|
||||
logger.warn(format, arg1, arg2);
|
||||
}
|
||||
}
|
||||
|
||||
public void warn(String format, Object... arguments) {
|
||||
if (logMessageQueue != null) {
|
||||
logMessageQueue.offer(new LogMessage(WARN, logger, format, arguments));
|
||||
} else {
|
||||
logger.warn(format, arguments);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isTraceEnabled() {
|
||||
return logger.isTraceEnabled();
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ import io.opentelemetry.proto.common.v1.StringKeyValue;
|
|||
import io.opentelemetry.proto.metrics.v1.DoubleDataPoint;
|
||||
import io.opentelemetry.proto.metrics.v1.DoubleHistogramDataPoint;
|
||||
import io.opentelemetry.proto.metrics.v1.DoubleSum;
|
||||
import io.opentelemetry.proto.metrics.v1.DoubleSummaryDataPoint;
|
||||
import io.opentelemetry.proto.metrics.v1.InstrumentationLibraryMetrics;
|
||||
import io.opentelemetry.proto.metrics.v1.IntDataPoint;
|
||||
import io.opentelemetry.proto.metrics.v1.IntSum;
|
||||
|
@ -45,6 +46,8 @@ import io.opentelemetry.proto.trace.v1.Status;
|
|||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
|
||||
import io.opentelemetry.sdk.metrics.data.DoubleGaugeData;
|
||||
import io.opentelemetry.sdk.metrics.data.DoubleHistogramData;
|
||||
import io.opentelemetry.sdk.metrics.data.DoubleHistogramPointData;
|
||||
import io.opentelemetry.sdk.metrics.data.DoublePointData;
|
||||
import io.opentelemetry.sdk.metrics.data.DoubleSumData;
|
||||
import io.opentelemetry.sdk.metrics.data.DoubleSummaryData;
|
||||
|
@ -66,6 +69,7 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public final class AgentTestingExporterAccess {
|
||||
|
@ -306,6 +310,16 @@ public final class AgentTestingExporterAccess {
|
|||
getTemporality(doubleSum.getAggregationTemporality()),
|
||||
getDoublePointDatas(metric.getDoubleSum().getDataPointsList())));
|
||||
case DOUBLE_HISTOGRAM:
|
||||
return MetricData.createDoubleHistogram(
|
||||
resource,
|
||||
instrumentationLibraryInfo,
|
||||
metric.getName(),
|
||||
metric.getDescription(),
|
||||
metric.getUnit(),
|
||||
DoubleHistogramData.create(
|
||||
getTemporality(metric.getDoubleHistogram().getAggregationTemporality()),
|
||||
getDoubleHistogramDataPoints(metric.getDoubleHistogram().getDataPointsList())));
|
||||
case DOUBLE_SUMMARY:
|
||||
return MetricData.createDoubleSummary(
|
||||
resource,
|
||||
instrumentationLibraryInfo,
|
||||
|
@ -313,7 +327,7 @@ public final class AgentTestingExporterAccess {
|
|||
metric.getDescription(),
|
||||
metric.getUnit(),
|
||||
DoubleSummaryData.create(
|
||||
getDoubleHistogramDataPoints(metric.getDoubleHistogram().getDataPointsList())));
|
||||
getDoubleSummaryDataPoints(metric.getDoubleSummary().getDataPointsList())));
|
||||
default:
|
||||
throw new AssertionError("Unexpected metric data: " + metric.getDataCase());
|
||||
}
|
||||
|
@ -351,8 +365,23 @@ public final class AgentTestingExporterAccess {
|
|||
.collect(toList());
|
||||
}
|
||||
|
||||
private static Collection<DoubleSummaryPointData> getDoubleHistogramDataPoints(
|
||||
private static Collection<DoubleHistogramPointData> getDoubleHistogramDataPoints(
|
||||
List<DoubleHistogramDataPoint> dataPointsList) {
|
||||
return dataPointsList.stream()
|
||||
.map(
|
||||
point ->
|
||||
DoubleHistogramPointData.create(
|
||||
point.getStartTimeUnixNano(),
|
||||
point.getTimeUnixNano(),
|
||||
createLabels(point.getLabelsList()),
|
||||
point.getSum(),
|
||||
point.getExplicitBoundsList(),
|
||||
point.getBucketCountsList()))
|
||||
.collect(toList());
|
||||
}
|
||||
|
||||
private static Collection<DoubleSummaryPointData> getDoubleSummaryDataPoints(
|
||||
List<DoubleSummaryDataPoint> dataPointsList) {
|
||||
return dataPointsList.stream()
|
||||
.map(
|
||||
point ->
|
||||
|
@ -366,12 +395,10 @@ public final class AgentTestingExporterAccess {
|
|||
.collect(toList());
|
||||
}
|
||||
|
||||
private static List<ValueAtPercentile> getValues(DoubleHistogramDataPoint point) {
|
||||
List<ValueAtPercentile> values = new ArrayList<>();
|
||||
for (int i = 0; i < point.getExplicitBoundsCount(); i++) {
|
||||
values.add(ValueAtPercentile.create(point.getExplicitBounds(i), point.getBucketCounts(i)));
|
||||
}
|
||||
return values;
|
||||
private static List<ValueAtPercentile> getValues(DoubleSummaryDataPoint point) {
|
||||
return point.getQuantileValuesList().stream()
|
||||
.map(v -> ValueAtPercentile.create(v.getQuantile(), v.getValue()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private static AggregationTemporality getTemporality(
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
package io.opentelemetry.javaagent.testing.exporter;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||
import io.opentelemetry.api.metrics.GlobalMeterProvider;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.SdkTracerProviderConfigurer;
|
||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||
import io.opentelemetry.sdk.metrics.export.IntervalMetricReader;
|
||||
|
@ -34,7 +34,7 @@ public class AgentTestingSdkCustomizer implements SdkTracerProviderConfigurer {
|
|||
IntervalMetricReader.builder()
|
||||
.setExportIntervalMillis(100)
|
||||
.setMetricExporter(AgentTestingExporterFactory.metricExporter)
|
||||
.setMetricProducers(Collections.singleton((SdkMeterProvider) GlobalMetricsProvider.get()))
|
||||
.build();
|
||||
.setMetricProducers(Collections.singleton((SdkMeterProvider) GlobalMeterProvider.get()))
|
||||
.buildAndStart();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue