Marius.OpenTelemetry.Exporter.XRay 1.0.13

dotnet add package Marius.OpenTelemetry.Exporter.XRay --version 1.0.13                
NuGet\Install-Package Marius.OpenTelemetry.Exporter.XRay -Version 1.0.13                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Marius.OpenTelemetry.Exporter.XRay" Version="1.0.13" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Marius.OpenTelemetry.Exporter.XRay --version 1.0.13                
#r "nuget: Marius.OpenTelemetry.Exporter.XRay, 1.0.13"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Marius.OpenTelemetry.Exporter.XRay as a Cake Addin
#addin nuget:?package=Marius.OpenTelemetry.Exporter.XRay&version=1.0.13

// Install Marius.OpenTelemetry.Exporter.XRay as a Cake Tool
#tool nuget:?package=Marius.OpenTelemetry.Exporter.XRay&version=1.0.13                

AWS X-Ray Exporter for OpenTelemetry .NET

NOTE: This exporter is not affiliated with or officially supported by Amazon.

This is a port of AWS X-Ray Tracing Exporter for OpenTelemetry Collector.

NuGet NuGet

The XRay Exporter exports telemetry to AWS X-Ray service without the need for X-Ray daemon or AWS Distro for Open Telemetry.

Installation

dotnet add package Marius.OpenTelemetry.Exporter.XRay

Traces

using var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .SetSampler(new AlwaysOnSampler())
    .AddSource("DemoSource")
    .AddXRayExporter()
    .Build();
}

XRay exporter requires X-Ray compatible trace ids thus overwrites Activity.TraceIdGenerator with a compatible generator. If OpenTelemetry.Contrib.Extensions.AWSXRay is used to generate trace ids then set XRayExporterOptions.GenerateTraceIds = false.

XRayExporterOptions

XRayExporterOptions contains various options to configure the XRay Exporter.

AmazonXRayClientFactory (optional, default: null)

If client factory is not provided then default will be used:

  1. If trace provider builder supports dependency injection then the exporter will try to resolve IAmazonXRay from service provider
  2. Otherwise a new instance of AmazonXRayClient is created
GenerateTraceIds (optional, default: true)

If true then default trace ids generator will be used. The value false should be only used if OpenTelemetry.Contrib.Extensions.AWSXRay is configured to generate trace ids.

IndexAllAttribute (optional, default: true), IndexedAttributes (optional, default: empty)

If IndexAllAttributes is set to true the all non-XRay tags and attributes are passed as annotations for AWS X-Ray service to be indexed.

If IndexAllAttributes is set to false then only the attributes/tags listed in IndexAttributes will be passed as annotations, other values will be passed as metadata.

IndexedAttributes

A list of attributes to be passed as annotations to X-Ray. Resource attributes must have "otel.resource." prefix.

ShouldIndexAttribute (optional, default: null)

If provided then this function is used to determine which attributes/tags are to be passed via annotations for X-Ray service to be indexed.

ShouldIndexAttribute is only called for attributes that are not in IndexedAttributes list.

If function returns true then attribute/tag is passed as annotation.

If function returns false then attribute/tag is passed as metadata.

Example:


options.IndexAllAttributes = false; // Set to false otherwise ShouldIndexAttribute is ignored
options.ShouldIndexAttribute = ShouldIndexAttribute;

bool ShouldIndexAttribute(string name, bool isResource)
{
    if (isResource)
    {
        // In case of resource the final key is "otel.resource." + name
        // var key = "otel.resource." + name;
        if (name == "build"
            || name.Contains("internal"))
        {
            // index otel.resource.key (will ne normalized to otel_resource_key) and 
            // any other key that contains "internal"
            return true;
        }
        
        return false;
    }
    
    // Only index tenant_id and correlation_id
    return name == "tenant_id" || name == "correlation_id";
}

Both indexed attributes and function:

options.IndexAllAttributes = false; // Set to false otherwise ShouldIndexAttribute is ignored
options.ShouldIndexAttribute = ShouldIndexAttribute;
options.IndexedAttributes = new[] 
{
    "otel.resource.build",
    "tenant_id",
    "correlation_id",
};

bool ShouldIndexAttribute(string name, bool isResource)
{
    if (isResource)
    {
        // In case of resource the final key is "otel.resource." + name
        // var key = "otel.resource." + name;
        return name.Contains("internal");
    }
    
    // "tenant_id" and "correlation_id" are already indexed
    // don't index anything else
    return false;
}

IndexActivityNames (optional, default: true)

If true then activity_display_name and activity_operation_name corresponding to Activity.DisplayName and Activity.OperationName are passed as annotations.

ValidateTraceId (optional, default: false)

If true then will reject/ignore activities that have either invalid aws trace id or trace id has expired.

LogGroupNames (optional, default: null)

List of log group names for cloud watch if not provided by resource attributes ("aws.log.group.names" and "aws.log.group.arns").

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.13 24,364 1/26/2023
1.0.12 298 1/26/2023
1.0.11 3,366 1/24/2023
1.0.10 1,277 1/10/2023
1.0.9 3,146 11/13/2022
1.0.8 361 11/2/2022
1.0.7 349 10/31/2022
1.0.6 641 10/26/2022
1.0.5 386 10/25/2022
1.0.4 387 10/24/2022
1.0.3 414 10/23/2022
1.0.2 388 10/23/2022
1.0.1 387 10/22/2022
1.0.0 409 10/20/2022