Skip to content

Commit

Permalink
[OpenTelemetry.Extensions] Add baggage Activity processor (#1659)
Browse files Browse the repository at this point in the history
Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
Co-authored-by: Piotr Kiełkowicz <pkiekowicz@splunk.com>
  • Loading branch information
3 people committed Apr 26, 2024
1 parent df77cbb commit fb5342c
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/component_owners.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ components:
- SergeyKanzhelev
src/OpenTelemetry.Extensions/:
- codeblanch
- mikegoldsmith
src/OpenTelemetry.Extensions.AWS/:
- srprash
- atshaw43
Expand Down Expand Up @@ -114,6 +115,7 @@ components:
- SergeyKanzhelev
test/OpenTelemetry.Extensions.Tests/:
- codeblanch
- mikegoldsmith
test/OpenTelemetry.Extensions.AWS.Tests/:
- srprash
- atshaw43
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ OpenTelemetry.Logs.LogToActivityEventConversionOptions.StateConverter.set -> voi
OpenTelemetry.Trace.TracerProviderBuilderExtensions
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AttachLogsToActivityEvent(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions, System.Action<OpenTelemetry.Logs.LogToActivityEventConversionOptions!>? configure = null) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddAutoFlushActivityProcessor(this OpenTelemetry.Trace.TracerProviderBuilder! builder, System.Func<System.Diagnostics.Activity!, bool>! predicate, int timeoutMilliseconds = 10000) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddBaggageActivityProcessor(this OpenTelemetry.Trace.TracerProviderBuilder! builder) -> OpenTelemetry.Trace.TracerProviderBuilder!
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ OpenTelemetry.Logs.LogToActivityEventConversionOptions.StateConverter.set -> voi
OpenTelemetry.Trace.TracerProviderBuilderExtensions
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AttachLogsToActivityEvent(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions, System.Action<OpenTelemetry.Logs.LogToActivityEventConversionOptions!>? configure = null) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddAutoFlushActivityProcessor(this OpenTelemetry.Trace.TracerProviderBuilder! builder, System.Func<System.Diagnostics.Activity!, bool>! predicate, int timeoutMilliseconds = 10000) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddBaggageActivityProcessor(this OpenTelemetry.Trace.TracerProviderBuilder! builder) -> OpenTelemetry.Trace.TracerProviderBuilder!
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ OpenTelemetry.Logs.LogToActivityEventConversionOptions.StateConverter.set -> voi
OpenTelemetry.Trace.TracerProviderBuilderExtensions
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AttachLogsToActivityEvent(this OpenTelemetry.Logs.OpenTelemetryLoggerOptions! loggerOptions, System.Action<OpenTelemetry.Logs.LogToActivityEventConversionOptions!>? configure = null) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddAutoFlushActivityProcessor(this OpenTelemetry.Trace.TracerProviderBuilder! builder, System.Func<System.Diagnostics.Activity!, bool>! predicate, int timeoutMilliseconds = 10000) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddBaggageActivityProcessor(this OpenTelemetry.Trace.TracerProviderBuilder! builder) -> OpenTelemetry.Trace.TracerProviderBuilder!
3 changes: 3 additions & 0 deletions src/OpenTelemetry.Extensions/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
* Update OpenTelemetry SDK version to `1.8.1`.
([#1668](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/1668))

* Add Baggage Activity Processor.
([#1659](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/1659))

## 1.0.0-beta.4

Released 2023-Feb-27
Expand Down
15 changes: 15 additions & 0 deletions src/OpenTelemetry.Extensions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,18 @@ public static TracerProviderBuilder AddMyExporter(this TracerProviderBuilder bui
.AddAutoFlushActivityProcessor(a => a.Parent == null && (a.Kind == ActivityKind.Server || a.Kind == ActivityKind.Consumer), 5000);
}
```

### BaggageActivityProcessor

The BaggageActivityProcessor reads entries stored in Baggage from the current `Baggage`
and adds the baggage keys and values to the `Activity` as tags (attributes) on start.

Add this activity processor to a tracer provider.

Example of adding BaggageActivityProcessor to `TracerProvider`:

```cs
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddBaggageActivityProcessor()
.Build();
```
21 changes: 21 additions & 0 deletions src/OpenTelemetry.Extensions/Trace/BaggageActivityProcessor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

using System.Diagnostics;

namespace OpenTelemetry.Trace;

/// <summary>
/// Activity processor that adds <see cref="Baggage"/> fields to every new span.
/// </summary>
internal sealed class BaggageActivityProcessor : BaseProcessor<Activity>
{
/// <inheritdoc />
public override void OnStart(Activity activity)
{
foreach (var entry in Baggage.Current)
{
activity.SetTag(entry.Key, entry.Value);
}
}
}
16 changes: 16 additions & 0 deletions src/OpenTelemetry.Extensions/TracerProviderBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System;
using System.Diagnostics;
using System.Threading;
using OpenTelemetry.Internal;

namespace OpenTelemetry.Trace;

Expand Down Expand Up @@ -45,6 +46,21 @@ public static TracerProviderBuilder AddAutoFlushActivityProcessor(

#pragma warning disable CA2000 // Dispose objects before losing scope
return builder.AddProcessor(new AutoFlushActivityProcessor(predicate, timeoutMilliseconds));
#pragma warning restore CA2000 // Dispose objects before losing scope
}

/// <summary>
/// Adds the <see cref="BaggageActivityProcessor"/> to the <see cref="TracerProviderBuilder"/>.
/// </summary>
/// <param name="builder"><see cref="TracerProviderBuilder"/> to add the <see cref="BaggageActivityProcessor"/> to.</param>
/// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns>
public static TracerProviderBuilder AddBaggageActivityProcessor(
this TracerProviderBuilder builder)
{
Guard.ThrowIfNull(builder);

#pragma warning disable CA2000 // Dispose objects before losing scope
return builder.AddProcessor(new BaggageActivityProcessor());
#pragma warning restore CA2000 // Dispose objects before losing scope
}
}

0 comments on commit fb5342c

Please sign in to comment.