Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions baggage-processor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,36 @@ processors through configuration.
| `otel.java.experimental.span-attributes.copy-from-baggage.include` | Add baggage entries as span attributes, e.g. `key1,key2` or `*` to add all baggage items as keys. |
| `otel.java.experimental.log-attributes.copy-from-baggage.include` | Add baggage entries as log attributes, e.g. `key1,key2` or `*` to add all baggage items as keys. |

### Usage with declarative configuration

You can configure the baggage span and log record processors using declarative YAML configuration with the OpenTelemetry SDK.

For the tracer provider (span processor):

```yaml
file_format: 1.0-rc.1
tracer_provider:
processors:
- baggage:
included: [foo]
excluded: [bar]
```

For the logger provider (log record processor):

```yaml
file_format: 1.0-rc.1
logger_provider:
processors:
- baggage:
included: [foo]
excluded: [bar]
```

This will configure the respective processor to include baggage keys listed in `included` and
exclude those in `excluded` as explained in
[Properties which pattern matching](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/CONTRIBUTING.md#properties-which-pattern-matching).

### Usage through programmatic activation

Add the span and log processor when configuring the tracer and logger providers.
Expand Down
8 changes: 8 additions & 0 deletions baggage-processor/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,19 @@ description = "OpenTelemetry Baggage Span Processor"
otelJava.moduleName.set("io.opentelemetry.contrib.baggage.processor")

dependencies {
annotationProcessor("com.google.auto.service:auto-service")
compileOnly("com.google.auto.service:auto-service-annotations")
api("io.opentelemetry:opentelemetry-api")
api("io.opentelemetry:opentelemetry-sdk")
implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
compileOnly("io.opentelemetry:opentelemetry-sdk-common")
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-incubator")
Comment thread
trask marked this conversation as resolved.

testAnnotationProcessor("com.google.auto.service:auto-service")
testCompileOnly("com.google.auto.service:auto-service-annotations")
testImplementation("io.opentelemetry:opentelemetry-sdk-common")
testImplementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
testImplementation("io.opentelemetry:opentelemetry-sdk-extension-incubator")
testImplementation("io.opentelemetry:opentelemetry-sdk-testing")
testImplementation("org.mockito:mockito-inline")
testImplementation("com.google.guava:guava")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.baggage.processor;

import com.google.auto.service.AutoService;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.internal.IncludeExcludePredicate;
Comment thread
trask marked this conversation as resolved.
import io.opentelemetry.sdk.logs.LogRecordProcessor;

@SuppressWarnings("rawtypes")
@AutoService(ComponentProvider.class)
public class BaggageLogRecordComponentProvider implements ComponentProvider<LogRecordProcessor> {
@Override
public String getName() {
return "baggage";
}

@Override
public LogRecordProcessor create(DeclarativeConfigProperties config) {
return new BaggageLogRecordProcessor(
IncludeExcludePredicate.createPatternMatching(
config.getScalarList("included", String.class),
config.getScalarList("excluded", String.class)));
}

@Override
public Class<LogRecordProcessor> getType() {
return LogRecordProcessor.class;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@

package io.opentelemetry.contrib.baggage.processor;

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.logs.SdkLoggerProviderBuilder;
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
import java.util.List;

@AutoService(AutoConfigurationCustomizerProvider.class)
public class BaggageProcessorCustomizer implements AutoConfigurationCustomizerProvider {
@Override
public void customize(AutoConfigurationCustomizer autoConfigurationCustomizer) {
Expand Down Expand Up @@ -57,7 +59,7 @@ private static void addLogRecordProcessor(
return;
}

// need to add before the batch span processor
// need to add before the batch log processor
sdkLoggerProviderBuilder.addLogRecordProcessorFirst(createBaggageLogRecordProcessor(keys));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.baggage.processor;

import com.google.auto.service.AutoService;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.internal.IncludeExcludePredicate;
import io.opentelemetry.sdk.trace.SpanProcessor;

@SuppressWarnings("rawtypes")
@AutoService(ComponentProvider.class)
public class BaggageSpanComponentProvider implements ComponentProvider<SpanProcessor> {
@Override
public String getName() {
return "baggage";
}

@Override
public SpanProcessor create(DeclarativeConfigProperties config) {
return new BaggageSpanProcessor(
IncludeExcludePredicate.createPatternMatching(
config.getScalarList("included", String.class),
config.getScalarList("excluded", String.class)));
}

@Override
public Class<SpanProcessor> getType() {
return SpanProcessor.class;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.baggage.processor;

import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
import org.junit.jupiter.api.Test;

class BaggageLogRecordComponentProviderTest {

@Test
void declarativeConfig() {
String yaml =
"file_format: 1.0-rc.1\n"
+ "logger_provider:\n"
+ " processors:\n"
+ " - baggage:\n"
+ " included: [foo]\n"
+ " excluded: [bar]\n";

OpenTelemetrySdk sdk =
DeclarativeConfiguration.parseAndCreate(
new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8)));

assertThat(sdk).asString().contains("BaggageLogRecordProcessor");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.contrib.baggage.processor;

import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
import org.junit.jupiter.api.Test;

class BaggageSpanComponentProviderTest {

@Test
void declarativeConfig() {
String yaml =
"file_format: 1.0-rc.1\n"
+ "tracer_provider:\n"
+ " processors:\n"
+ " - baggage:\n"
+ " included: [foo]\n"
+ " excluded: [bar]\n";

OpenTelemetrySdk sdk =
DeclarativeConfiguration.parseAndCreate(
new ByteArrayInputStream(yaml.getBytes(StandardCharsets.UTF_8)));

assertThat(sdk).asString().contains("BaggageSpanProcessor");
}
}
Loading