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
<PackageReference Include="Marius.OpenTelemetry.Exporter.XRay" Version="1.0.13" />
paket add Marius.OpenTelemetry.Exporter.XRay --version 1.0.13
#r "nuget: Marius.OpenTelemetry.Exporter.XRay, 1.0.13"
// 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.
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:
- If trace provider builder supports dependency injection then the exporter
will try to resolve
IAmazonXRay
from service provider - 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 | Versions 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. |
-
.NETCoreApp 3.1
- AWSSDK.XRay (>= 3.7.0.217)
- OpenTelemetry (>= 1.3.1)
-
.NETStandard 2.1
- AWSSDK.XRay (>= 3.7.0.217)
- OpenTelemetry (>= 1.3.1)
- System.Text.Json (>= 6.0.6)
-
net5.0
- AWSSDK.XRay (>= 3.7.0.217)
- OpenTelemetry (>= 1.3.1)
-
net6.0
- AWSSDK.XRay (>= 3.7.0.217)
- OpenTelemetry (>= 1.3.1)
-
net7.0
- AWSSDK.XRay (>= 3.7.0.217)
- OpenTelemetry (>= 1.3.1)
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 |