Skip to content

Commit

Permalink
Fix some deprecations (#848)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mateusz Rzeszutek authored Jul 22, 2022
1 parent 50fb3ca commit 5607031
Show file tree
Hide file tree
Showing 15 changed files with 79 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SuppressWarnings("deprecation") // we'll need to wait for the SDK config customization
@AutoService(ConfigCustomizer.class)
public class SplunkConfiguration implements ConfigCustomizer {
private static final Logger log = LoggerFactory.getLogger(SplunkConfiguration.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

package com.splunk.opentelemetry.instrumentation;

import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;

/**
* Instrumentation can extend this class instead of InstrumentationModule if they require metrics to
Expand All @@ -31,8 +31,8 @@ protected MetricsInstrumentationModule(
}

@Override
public boolean defaultEnabled() {
boolean metricsEnabled = Config.get().getBoolean("splunk.metrics.enabled", false);
return metricsEnabled && super.defaultEnabled();
public boolean defaultEnabled(ConfigProperties config) {
boolean metricsEnabled = config.getBoolean("splunk.metrics.enabled", false);
return metricsEnabled && super.defaultEnabled(config);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.config.Config;

/**
* Adds {@code Server-Timing} header (and {@code Access-Control-Expose-Headers}) to the HTTP
Expand All @@ -30,12 +29,6 @@ public final class ServerTimingHeader {
public static final String SERVER_TIMING = "Server-Timing";
public static final String EXPOSE_HEADERS = "Access-Control-Expose-Headers";

private static final String EMIT_RESPONSE_HEADERS = "splunk.trace-response-header.enabled";

public static boolean shouldEmitServerTimingHeader() {
return Config.get().getBoolean(EMIT_RESPONSE_HEADERS, true);
}

public static <RS> void setHeaders(Context context, RS response, TextMapSetter<RS> headerSetter) {
if (!Span.fromContext(context).getSpanContext().isValid()) {
return;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright Splunk Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.splunk.opentelemetry.instrumentation.servertiming;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;

public final class ServerTimingHeaderConfig {

private static final String EMIT_RESPONSE_HEADERS = "splunk.trace-response-header.enabled";

private ServerTimingHeaderConfig() {}

// needs to be in a separate class to appease muzzle
public static boolean shouldEmitServerTimingHeader(ConfigProperties config) {
return config.getBoolean(EMIT_RESPONSE_HEADERS, true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import static com.splunk.opentelemetry.SplunkConfiguration.METRICS_ENABLED_PROPERTY;
import static com.splunk.opentelemetry.SplunkConfiguration.METRICS_IMPLEMENTATION;
import static com.splunk.opentelemetry.SplunkConfiguration.PROFILER_MEMORY_ENABLED_PROPERTY;
import static java.util.Collections.singleton;

import com.google.auto.service.AutoService;
import com.splunk.opentelemetry.instrumentation.jvmmetrics.micrometer.MicrometerAllocatedMemoryMetrics;
Expand All @@ -36,34 +35,31 @@
import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.javaagent.extension.AgentListener;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;

@AutoService(AgentListener.class)
public class JvmMetricsInstaller implements AgentListener {
private static final String metricsImplementation =
Config.get().getString(METRICS_IMPLEMENTATION);
private static final boolean useOtelMetrics = "opentelemetry".equals(metricsImplementation);
private static final boolean useMicrometerMetrics = "micrometer".equals(metricsImplementation);

@Override
public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) {
ConfigProperties config = autoConfiguredOpenTelemetrySdk.getConfig();
boolean metricsEnabled = config.getBoolean(METRICS_ENABLED_PROPERTY, false);
if (!isInstrumentationEnabled(config, singleton("jvm-metrics-splunk"), metricsEnabled)) {
if (!config.getBoolean("otel.instrumentation.jvm-metrics.splunk.enabled", metricsEnabled)) {
return;
}

if (useMicrometerMetrics) {
String metricsImplementation = config.getString(METRICS_IMPLEMENTATION);

if (useMicrometerMetrics(metricsImplementation)) {
new ClassLoaderMetrics().bindTo(Metrics.globalRegistry);
new JvmGcMetrics().bindTo(Metrics.globalRegistry);
new JvmHeapPressureMetrics().bindTo(Metrics.globalRegistry);
new JvmMemoryMetrics().bindTo(Metrics.globalRegistry);
new JvmThreadMetrics().bindTo(Metrics.globalRegistry);
}
if (useOtelMetrics) {
if (useOtelMetrics(metricsImplementation)) {
new OtelJvmGcMetrics().install();
new OtelJvmHeapPressureMetrics().install();
new OtelJvmMemoryMetrics().install();
Expand All @@ -73,32 +69,22 @@ public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetr
// Following metrics are experimental, we'll enable them only when memory profiling is enabled
if (config.getBoolean(PROFILER_MEMORY_ENABLED_PROPERTY, false)
|| config.getBoolean("splunk.metrics.experimental.enabled", false)) {
if (useMicrometerMetrics) {
if (useMicrometerMetrics(metricsImplementation)) {
new MicrometerAllocatedMemoryMetrics().bindTo(Metrics.globalRegistry);
new MicrometerGcMemoryMetrics().bindTo(Metrics.globalRegistry);
}
if (useOtelMetrics) {
if (useOtelMetrics(metricsImplementation)) {
new OtelAllocatedMemoryMetrics().install();
new OtelGcMemoryMetrics().install();
}
}
}

private static boolean isInstrumentationEnabled(
ConfigProperties config, Iterable<String> instrumentationNames, boolean defaultEnabled) {
// If default is enabled, we want to enable individually,
// if default is disabled, we want to disable individually.
boolean anyEnabled = defaultEnabled;
for (String name : instrumentationNames) {
String propertyName = "otel.instrumentation." + name.replace('-', '.') + ".enabled";
boolean enabled = config.getBoolean(propertyName, defaultEnabled);
private static boolean useMicrometerMetrics(String metricsImplementation) {
return "micrometer".equalsIgnoreCase(metricsImplementation);
}

if (defaultEnabled) {
anyEnabled &= enabled;
} else {
anyEnabled |= enabled;
}
}
return anyEnabled;
private static boolean useOtelMetrics(String metricsImplementation) {
return "opentelemetry".equalsIgnoreCase(metricsImplementation);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@

package com.splunk.opentelemetry.instrumentation.liberty.metrics;

import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;

public final class LibertyThreadPoolMetrics {
private static final String metricsImplementation =
Config.get().getString("splunk.metrics.implementation");
InstrumentationConfig.get().getString("splunk.metrics.implementation");
private static final boolean useOtelMetrics = "opentelemetry".equals(metricsImplementation);
private static final boolean useMicrometerMetrics = "micrometer".equals(metricsImplementation);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import application.io.micrometer.core.instrument.Timer;
import application.io.micrometer.core.instrument.distribution.DistributionStatisticConfig;
import application.io.micrometer.core.instrument.distribution.pause.PauseDetector;
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import java.util.function.ToDoubleFunction;
Expand Down Expand Up @@ -171,7 +172,7 @@ protected DistributionStatisticConfig defaultHistogramConfig() {
// same as StepMeterRegistry - which is a bit hacky because we can't easily access the agent
// registry config object
Duration exportInterval =
io.opentelemetry.instrumentation.api.config.Config.get()
InstrumentationConfig.get()
.getDuration("splunk.metrics.export.interval", Duration.ofSeconds(30));
return DistributionStatisticConfig.builder()
.expiry(exportInterval)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;

import com.google.auto.service.AutoService;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeader;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeaderConfig;
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import java.util.Collections;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;
Expand All @@ -40,8 +41,9 @@ public int order() {

// enable the instrumentation only if the server-timing header flag is on
@Override
public boolean defaultEnabled() {
return super.defaultEnabled() && ServerTimingHeader.shouldEmitServerTimingHeader();
public boolean defaultEnabled(ConfigProperties config) {
return super.defaultEnabled(config)
&& ServerTimingHeaderConfig.shouldEmitServerTimingHeader(config);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@
import static net.bytebuddy.matcher.ElementMatchers.not;

import com.google.auto.service.AutoService;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeader;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeaderConfig;
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import java.util.Collections;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;
Expand All @@ -41,8 +42,9 @@ public int order() {

// enable the instrumentation only if the server-timing header flag is on
@Override
public boolean defaultEnabled() {
return super.defaultEnabled() && ServerTimingHeader.shouldEmitServerTimingHeader();
public boolean defaultEnabled(ConfigProperties config) {
return super.defaultEnabled(config)
&& ServerTimingHeaderConfig.shouldEmitServerTimingHeader(config);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;

import com.google.auto.service.AutoService;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeader;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeaderConfig;
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import java.util.Collections;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;
Expand All @@ -40,8 +41,9 @@ public int order() {

// enable the instrumentation only if the server-timing header flag is on
@Override
public boolean defaultEnabled() {
return super.defaultEnabled() && ServerTimingHeader.shouldEmitServerTimingHeader();
public boolean defaultEnabled(ConfigProperties config) {
return super.defaultEnabled(config)
&& ServerTimingHeaderConfig.shouldEmitServerTimingHeader(config);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@

import com.google.auto.service.AutoService;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeader;
import com.splunk.opentelemetry.instrumentation.servertiming.ServerTimingHeaderConfig;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.javaagent.bootstrap.CallDepth;
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import java.util.Collections;
import java.util.List;
import javax.servlet.ServletResponse;
Expand All @@ -54,8 +56,9 @@ public int order() {

// enable the instrumentation only if the server-timing header flag is on
@Override
public boolean defaultEnabled() {
return super.defaultEnabled() && ServerTimingHeader.shouldEmitServerTimingHeader();
public boolean defaultEnabled(ConfigProperties config) {
return super.defaultEnabled(config)
&& ServerTimingHeaderConfig.shouldEmitServerTimingHeader(config);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@

package com.splunk.opentelemetry.instrumentation.tomcat.metrics;

import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
import org.apache.tomcat.util.net.AbstractEndpoint;

public final class TomcatThreadPoolMetrics {
private static final String metricsImplementation =
Config.get().getString("splunk.metrics.implementation");
InstrumentationConfig.get().getString("splunk.metrics.implementation");
private static final boolean useOtelMetrics = "opentelemetry".equals(metricsImplementation);
private static final boolean useMicrometerMetrics = "micrometer".equals(metricsImplementation);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@

package com.splunk.opentelemetry.instrumentation.weblogic.metrics;

import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;

public final class WebLogicThreadPoolMetrics {
private static final String metricsImplementation =
Config.get().getString("splunk.metrics.implementation");
InstrumentationConfig.get().getString("splunk.metrics.implementation");
private static final boolean useOtelMetrics = "opentelemetry".equals(metricsImplementation);
private static final boolean useMicrometerMetrics = "micrometer".equals(metricsImplementation);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.util.Locale;
import java.util.Map;

@SuppressWarnings("deprecation") // we'll need to wait for the SDK config customization
@AutoService(ConfigCustomizer.class)
public class Configuration implements ConfigCustomizer {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

import com.google.auto.service.AutoService;
import io.opentelemetry.context.ContextStorage;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.instrumentation.api.internal.ConfigPropertiesUtil;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;

Expand All @@ -39,6 +39,6 @@ private boolean jfrIsAvailable() {
}

private boolean jfrIsEnabledInConfig() {
return Config.get().getBoolean(CONFIG_KEY_ENABLE_PROFILER, false);
return ConfigPropertiesUtil.getBoolean(CONFIG_KEY_ENABLE_PROFILER, false);
}
}

0 comments on commit 5607031

Please sign in to comment.