Initial Propagators support. (#389)
This commit is contained in:
parent
6cfe2256ef
commit
009cc6ad1e
|
@ -56,6 +56,7 @@ public class Config {
|
||||||
|
|
||||||
public static final String EXPORTER_JAR = "exporter.jar";
|
public static final String EXPORTER_JAR = "exporter.jar";
|
||||||
public static final String SERVICE = "service";
|
public static final String SERVICE = "service";
|
||||||
|
public static final String PROPAGATORS = "propagators";
|
||||||
public static final String CONFIGURATION_FILE = "trace.config";
|
public static final String CONFIGURATION_FILE = "trace.config";
|
||||||
public static final String TRACE_ENABLED = "trace.enabled";
|
public static final String TRACE_ENABLED = "trace.enabled";
|
||||||
public static final String INTEGRATIONS_ENABLED = "integrations.enabled";
|
public static final String INTEGRATIONS_ENABLED = "integrations.enabled";
|
||||||
|
@ -104,6 +105,7 @@ public class Config {
|
||||||
|
|
||||||
@Getter private final String exporterJar;
|
@Getter private final String exporterJar;
|
||||||
@Getter private final String serviceName;
|
@Getter private final String serviceName;
|
||||||
|
@Getter private final List<String> propagators;
|
||||||
@Getter private final boolean traceEnabled;
|
@Getter private final boolean traceEnabled;
|
||||||
@Getter private final boolean integrationsEnabled;
|
@Getter private final boolean integrationsEnabled;
|
||||||
@Getter private final List<String> excludedClasses;
|
@Getter private final List<String> excludedClasses;
|
||||||
|
@ -150,6 +152,7 @@ public class Config {
|
||||||
Config() {
|
Config() {
|
||||||
propertiesFromConfigFile = loadConfigurationFile();
|
propertiesFromConfigFile = loadConfigurationFile();
|
||||||
|
|
||||||
|
propagators = getListSettingFromEnvironment(PROPAGATORS, null);
|
||||||
exporterJar = getSettingFromEnvironment(EXPORTER_JAR, null);
|
exporterJar = getSettingFromEnvironment(EXPORTER_JAR, null);
|
||||||
serviceName = getSettingFromEnvironment(SERVICE, "(unknown)");
|
serviceName = getSettingFromEnvironment(SERVICE, "(unknown)");
|
||||||
traceEnabled = getBooleanSettingFromEnvironment(TRACE_ENABLED, DEFAULT_TRACE_ENABLED);
|
traceEnabled = getBooleanSettingFromEnvironment(TRACE_ENABLED, DEFAULT_TRACE_ENABLED);
|
||||||
|
@ -211,6 +214,8 @@ public class Config {
|
||||||
exporterJar = properties.getProperty(EXPORTER_JAR, parent.exporterJar);
|
exporterJar = properties.getProperty(EXPORTER_JAR, parent.exporterJar);
|
||||||
serviceName = properties.getProperty(SERVICE, parent.serviceName);
|
serviceName = properties.getProperty(SERVICE, parent.serviceName);
|
||||||
|
|
||||||
|
propagators = getPropertyListValue(properties, PROPAGATORS, parent.propagators);
|
||||||
|
|
||||||
traceEnabled = getPropertyBooleanValue(properties, TRACE_ENABLED, parent.traceEnabled);
|
traceEnabled = getPropertyBooleanValue(properties, TRACE_ENABLED, parent.traceEnabled);
|
||||||
integrationsEnabled =
|
integrationsEnabled =
|
||||||
getPropertyBooleanValue(properties, INTEGRATIONS_ENABLED, parent.integrationsEnabled);
|
getPropertyBooleanValue(properties, INTEGRATIONS_ENABLED, parent.integrationsEnabled);
|
||||||
|
|
|
@ -19,6 +19,7 @@ dependencies {
|
||||||
compile deps.opentelemetryApi
|
compile deps.opentelemetryApi
|
||||||
compile deps.opentelemetrySdk
|
compile deps.opentelemetrySdk
|
||||||
compile deps.opentelemetrySdkAutoConfig
|
compile deps.opentelemetrySdkAutoConfig
|
||||||
|
compile deps.opentelemetryTraceProps
|
||||||
|
|
||||||
// TODO: move the interface in exporter-support into opentelemetry-sdk-contrib-auto-config
|
// TODO: move the interface in exporter-support into opentelemetry-sdk-contrib-auto-config
|
||||||
compile project(':exporter-support')
|
compile project(':exporter-support')
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
*
|
||||||
|
* 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 io.opentelemetry.auto.tooling;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import io.opentelemetry.OpenTelemetry;
|
||||||
|
import io.opentelemetry.context.propagation.DefaultContextPropagators;
|
||||||
|
import io.opentelemetry.context.propagation.HttpTextFormat;
|
||||||
|
import io.opentelemetry.contrib.trace.propagation.B3Propagator;
|
||||||
|
import io.opentelemetry.trace.propagation.HttpTraceContext;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class PropagatorsInitializer {
|
||||||
|
private static final String TRACE_CONTEXT = "tracecontext";
|
||||||
|
private static final String B3 = "b3";
|
||||||
|
|
||||||
|
private static final Map<String, HttpTextFormat> TEXTMAP_PROPAGATORS =
|
||||||
|
ImmutableMap.of(
|
||||||
|
TRACE_CONTEXT, new HttpTraceContext(),
|
||||||
|
B3, new B3Propagator());
|
||||||
|
|
||||||
|
/** Initialize OpenTelemetry global Propagators with propagator list, if any. */
|
||||||
|
public static void initializePropagators(List<String> propagators) {
|
||||||
|
/* Only override the default propagators *if* the user specified any. */
|
||||||
|
if (propagators.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultContextPropagators.Builder propagatorsBuilder = DefaultContextPropagators.builder();
|
||||||
|
|
||||||
|
for (String propagatorId : propagators) {
|
||||||
|
HttpTextFormat textPropagator = TEXTMAP_PROPAGATORS.get(propagatorId.trim().toLowerCase());
|
||||||
|
if (textPropagator != null) {
|
||||||
|
propagatorsBuilder.addHttpTextFormat(textPropagator);
|
||||||
|
log.info("Added " + textPropagator + " propagator");
|
||||||
|
} else {
|
||||||
|
log.warn("No matching propagator for " + propagatorId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenTelemetry.setPropagators(propagatorsBuilder.build());
|
||||||
|
}
|
||||||
|
}
|
|
@ -48,6 +48,8 @@ public class TracerInstaller {
|
||||||
} else {
|
} else {
|
||||||
log.info("Tracing is disabled.");
|
log.info("Tracing is disabled.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PropagatorsInitializer.initializePropagators(Config.get().getPropagators());
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
|
|
@ -28,6 +28,7 @@ ext {
|
||||||
// OpenTelemetry
|
// OpenTelemetry
|
||||||
opentelemetryApi : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-api', version: versions.opentelemetry),
|
opentelemetryApi : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-api', version: versions.opentelemetry),
|
||||||
opentelemetryApiAutoAnnotations: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-contrib-auto-annotations', version: versions.opentelemetry),
|
opentelemetryApiAutoAnnotations: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-contrib-auto-annotations', version: versions.opentelemetry),
|
||||||
|
opentelemetryTraceProps : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-contrib-trace-propagators', version: versions.opentelemetry),
|
||||||
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetry),
|
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetry),
|
||||||
opentelemetrySdkAutoConfig : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk-contrib-auto-config', version: versions.opentelemetry),
|
opentelemetrySdkAutoConfig : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk-contrib-auto-config', version: versions.opentelemetry),
|
||||||
opentelemetryJaeger : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-jaeger', version: versions.opentelemetry),
|
opentelemetryJaeger : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-jaeger', version: versions.opentelemetry),
|
||||||
|
|
Loading…
Reference in New Issue