ResourceBuilder API (#1533)
* Attempting to improve the Resource API. * XML comment change. * Updated Resource API based on feedback. * CHANGELOG update. * Tweaked variable name. * CHANGELOG updates. * Removed OtelEnvResourceDetector from default Resource. Fixed some XML comments. * Past tense fix for CHANGELOG. * CHANGELOG formatting. * Removed the ability to change the environment variable name for OtelEnvResourceDetector. * Updates for recent refactors. * Code review. * Example updates. * Cleanup. Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
This commit is contained in:
parent
65762cd792
commit
d24a042964
|
|
@ -35,7 +35,7 @@ namespace Examples.Console
|
|||
// and use a custom MyProcessor, along with Console exporter.
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddSource("MyCompany.MyProduct.MyWebServer")
|
||||
.SetResource(Resources.CreateServiceResource("MyServiceName"))
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyServiceName"))
|
||||
.AddProcessor(new MyProcessor()) // This must be added before ConsoleExporter
|
||||
.AddConsoleExporter()
|
||||
.Build();
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ namespace Examples.Console
|
|||
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.SetResource(Resources.CreateServiceResource("http-service-example"))
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("http-service-example"))
|
||||
.AddSource("http-client-test")
|
||||
.AddConsoleExporter()
|
||||
.Build();
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Examples.Console
|
|||
// and use a single pipeline with a custom MyProcessor, and Console exporter.
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddSource("MyCompany.MyProduct.MyWebServer")
|
||||
.SetResource(Resources.CreateServiceResource("MyServiceName"))
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyServiceName"))
|
||||
.AddConsoleExporter()
|
||||
.Build();
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace Examples.Console
|
|||
// and use Console exporter.
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddSource("MyCompany.MyProduct.MyWebServer")
|
||||
.SetResource(Resources.CreateServiceResource("MyServiceName"))
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyServiceName"))
|
||||
.AddConsoleExporter()
|
||||
.Build();
|
||||
|
||||
|
|
|
|||
|
|
@ -26,50 +26,6 @@ namespace OpenTelemetry.Trace
|
|||
// https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/trace/semantic_conventions
|
||||
// https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/exceptions.md
|
||||
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
|
||||
public const string AttributeServiceName = "service.name";
|
||||
public const string AttributeServiceNamespace = "service.namespace";
|
||||
public const string AttributeServiceInstance = "service.instance.id";
|
||||
public const string AttributeServiceVersion = "service.version";
|
||||
|
||||
public const string AttributeTelemetrySdkName = "telemetry.sdk.name";
|
||||
public const string AttributeTelemetrySdkLanguage = "telemetry.sdk.language";
|
||||
public const string AttributeTelemetrySdkVersion = "telemetry.sdk.version";
|
||||
|
||||
public const string AttributeContainerName = "container.name";
|
||||
public const string AttributeContainerImage = "container.image.name";
|
||||
public const string AttributeContainerTag = "container.image.tag";
|
||||
|
||||
public const string AttributeFaasName = "faas.name";
|
||||
public const string AttributeFaasId = "faas.id";
|
||||
public const string AttributeFaasVersion = "faas.version";
|
||||
public const string AttributeFaasInstance = "faas.instance";
|
||||
|
||||
public const string AttributeK8sCluster = "k8s.cluster.name";
|
||||
public const string AttributeK8sNamespace = "k8s.namespace.name";
|
||||
public const string AttributeK8sPod = "k8s.pod.name";
|
||||
public const string AttributeK8sDeployment = "k8s.deployment.name";
|
||||
|
||||
public const string AttributeHostHostname = "host.hostname";
|
||||
public const string AttributeHostId = "host.id";
|
||||
public const string AttributeHostName = "host.name";
|
||||
public const string AttributeHostType = "host.type";
|
||||
public const string AttributeHostImageName = "host.image.name";
|
||||
public const string AttributeHostImageId = "host.image.id";
|
||||
public const string AttributeHostImageVersion = "host.image.version";
|
||||
|
||||
public const string AttributeProcessId = "process.id";
|
||||
public const string AttributeProcessExecutableName = "process.executable.name";
|
||||
public const string AttributeProcessExecutablePath = "process.executable.path";
|
||||
public const string AttributeProcessCommand = "process.command";
|
||||
public const string AttributeProcessCommandLine = "process.command_line";
|
||||
public const string AttributeProcessUsername = "process.username";
|
||||
|
||||
public const string AttributeCloudProvider = "cloud.provider";
|
||||
public const string AttributeCloudAccount = "cloud.account.id";
|
||||
public const string AttributeCloudRegion = "cloud.region";
|
||||
public const string AttributeCloudZone = "cloud.zone";
|
||||
public const string AttributeComponent = "component";
|
||||
|
||||
public const string AttributeNetTransport = "net.transport";
|
||||
public const string AttributeNetPeerIp = "net.peer.ip";
|
||||
public const string AttributeNetPeerPort = "net.peer.port";
|
||||
|
|
|
|||
|
|
@ -105,10 +105,10 @@ namespace OpenTelemetry.Exporter.Jaeger
|
|||
{
|
||||
switch (key)
|
||||
{
|
||||
case Resource.ServiceNameKey:
|
||||
case ResourceSemanticConventions.AttributeServiceName:
|
||||
serviceName = strVal;
|
||||
continue;
|
||||
case Resource.ServiceNamespaceKey:
|
||||
case ResourceSemanticConventions.AttributeServiceNamespace:
|
||||
serviceNamespace = strVal;
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net46;netstandard2.0;netstandard2.1</TargetFrameworks>
|
||||
|
|
@ -18,7 +18,8 @@
|
|||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\IActivityEnumerator.cs" Link="Includes\IActivityEnumerator.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\EnumerationHelper.cs" Link="Includes\EnumerationHelper.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\PooledList.cs" Link="Includes\PooledList.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Exporter\PeerServiceResolver.cs" Link="Includes\PeerServiceResolver.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\PeerServiceResolver.cs" Link="Includes\PeerServiceResolver.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\ResourceSemanticConventions.cs" Link="Includes\ResourceSemanticConventions.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@
|
|||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\IActivityEnumerator.cs" Link="Includes\IActivityEnumerator.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\EnumerationHelper.cs" Link="Includes\EnumerationHelper.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\PooledList.cs" Link="Includes\PooledList.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Exporter\PeerServiceResolver.cs" Link="Includes\PeerServiceResolver.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\PeerServiceResolver.cs" Link="Includes\PeerServiceResolver.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\ResourceSemanticConventions.cs" Link="Includes\ResourceSemanticConventions.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol
|
|||
}
|
||||
}
|
||||
|
||||
if (!processResource.Attributes.Any(kvp => kvp.Key == Resource.ServiceNameKey))
|
||||
if (!processResource.Attributes.Any(kvp => kvp.Key == ResourceSemanticConventions.AttributeServiceName))
|
||||
{
|
||||
string serviceName = this.options.ServiceName;
|
||||
if (string.IsNullOrEmpty(serviceName))
|
||||
|
|
@ -114,7 +114,7 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol
|
|||
|
||||
processResource.Attributes.Add(new OtlpCommon.KeyValue
|
||||
{
|
||||
Key = Resource.ServiceNameKey,
|
||||
Key = ResourceSemanticConventions.AttributeServiceName,
|
||||
Value = new OtlpCommon.AnyValue { StringValue = serviceName },
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@
|
|||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\IActivityEnumerator.cs" Link="Includes\IActivityEnumerator.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\EnumerationHelper.cs" Link="Includes\EnumerationHelper.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\PooledList.cs" Link="Includes\PooledList.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Exporter\PeerServiceResolver.cs" Link="Includes\PeerServiceResolver.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\PeerServiceResolver.cs" Link="Includes\PeerServiceResolver.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\ResourceSemanticConventions.cs" Link="Includes\ResourceSemanticConventions.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ namespace OpenTelemetry.Exporter.Zipkin
|
|||
|
||||
switch (key)
|
||||
{
|
||||
case Resource.ServiceNameKey:
|
||||
case ResourceSemanticConventions.AttributeServiceName:
|
||||
serviceName = label.Value as string;
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,7 +126,11 @@ OpenTelemetry.Resources.Resource
|
|||
OpenTelemetry.Resources.Resource.Attributes.get -> System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
OpenTelemetry.Resources.Resource.Merge(OpenTelemetry.Resources.Resource other) -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.Resource.Resource(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> void
|
||||
OpenTelemetry.Resources.Resources
|
||||
OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.AddResource(OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.Build() -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.ResourceBuilder.Clear() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.ResourceBuilderExtensions
|
||||
OpenTelemetry.Sdk
|
||||
OpenTelemetry.SimpleExportProcessor<T>
|
||||
OpenTelemetry.SimpleExportProcessor<T>.SimpleExportProcessor(OpenTelemetry.BaseExporter<T> exporter) -> void
|
||||
|
|
@ -176,10 +180,6 @@ abstract OpenTelemetry.Metrics.Export.MetricExporter.ExportAsync(System.Collecti
|
|||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.FinishCollectionCycle(out System.Collections.Generic.IEnumerable<OpenTelemetry.Metrics.Export.Metric> metrics) -> void
|
||||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.Process(OpenTelemetry.Metrics.Export.Metric metric) -> void
|
||||
abstract OpenTelemetry.Trace.Sampler.ShouldSample(in OpenTelemetry.Trace.SamplingParameters samplingParameters) -> OpenTelemetry.Trace.SamplingResult
|
||||
const OpenTelemetry.Resources.Resource.ServiceInstanceIdKey = "service.instance.id" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNameKey = "service.name" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNamespaceKey = "service.namespace" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceVersionKey = "service.version" -> string
|
||||
override OpenTelemetry.BaseExportProcessor<T>.Dispose(bool disposing) -> void
|
||||
override OpenTelemetry.BaseExportProcessor<T>.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
override OpenTelemetry.BatchExportProcessor<T>.OnEnd(T data) -> void
|
||||
|
|
@ -227,8 +227,13 @@ override abstract OpenTelemetry.BaseExportProcessor<T>.OnEnd(T data) -> void
|
|||
override sealed OpenTelemetry.BaseExportProcessor<T>.OnStart(T data) -> void
|
||||
readonly OpenTelemetry.BaseExportProcessor<T>.exporter -> OpenTelemetry.BaseExporter<T>
|
||||
static OpenTelemetry.ProviderExtensions.GetResource(this OpenTelemetry.BaseProvider baseProvider) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddEnvironmentVariableDetector(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.Resource.Empty.get -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.Resources.Resources.CreateServiceResource(string serviceName, string serviceInstanceId = null, string serviceNamespace = null, string serviceVersion = null) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddAttributes(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddService(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, string serviceName, string serviceNamespace = null, string serviceVersion = null, bool autoGenerateServiceInstanceId = true, string serviceInstanceId = null) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddTelemetrySdk(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateDefault() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateEmpty() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Sdk.CreateMeterProviderBuilder() -> OpenTelemetry.Metrics.MeterProviderBuilder
|
||||
static OpenTelemetry.Sdk.CreateTracerProviderBuilder() -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Sdk.SetDefaultTextMapPropagator(OpenTelemetry.Context.Propagation.TextMapPropagator textMapPropagator) -> void
|
||||
|
|
@ -239,7 +244,7 @@ static OpenTelemetry.Trace.SamplingResult.operator !=(OpenTelemetry.Trace.Sampli
|
|||
static OpenTelemetry.Trace.SamplingResult.operator ==(OpenTelemetry.Trace.SamplingResult decision1, OpenTelemetry.Trace.SamplingResult decision2) -> bool
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Build(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetSampler(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Trace.Sampler sampler) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProvider provider, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.Shutdown(this OpenTelemetry.Trace.TracerProvider provider, int timeoutMilliseconds = -1) -> bool
|
||||
|
|
|
|||
|
|
@ -126,7 +126,11 @@ OpenTelemetry.Resources.Resource
|
|||
OpenTelemetry.Resources.Resource.Attributes.get -> System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
OpenTelemetry.Resources.Resource.Merge(OpenTelemetry.Resources.Resource other) -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.Resource.Resource(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> void
|
||||
OpenTelemetry.Resources.Resources
|
||||
OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.AddResource(OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.Build() -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.ResourceBuilder.Clear() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.ResourceBuilderExtensions
|
||||
OpenTelemetry.Sdk
|
||||
OpenTelemetry.SimpleExportProcessor<T>
|
||||
OpenTelemetry.SimpleExportProcessor<T>.SimpleExportProcessor(OpenTelemetry.BaseExporter<T> exporter) -> void
|
||||
|
|
@ -176,10 +180,6 @@ abstract OpenTelemetry.Metrics.Export.MetricExporter.ExportAsync(System.Collecti
|
|||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.FinishCollectionCycle(out System.Collections.Generic.IEnumerable<OpenTelemetry.Metrics.Export.Metric> metrics) -> void
|
||||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.Process(OpenTelemetry.Metrics.Export.Metric metric) -> void
|
||||
abstract OpenTelemetry.Trace.Sampler.ShouldSample(in OpenTelemetry.Trace.SamplingParameters samplingParameters) -> OpenTelemetry.Trace.SamplingResult
|
||||
const OpenTelemetry.Resources.Resource.ServiceInstanceIdKey = "service.instance.id" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNameKey = "service.name" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNamespaceKey = "service.namespace" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceVersionKey = "service.version" -> string
|
||||
override OpenTelemetry.BaseExportProcessor<T>.Dispose(bool disposing) -> void
|
||||
override OpenTelemetry.BaseExportProcessor<T>.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
override OpenTelemetry.BatchExportProcessor<T>.OnEnd(T data) -> void
|
||||
|
|
@ -227,8 +227,13 @@ override abstract OpenTelemetry.BaseExportProcessor<T>.OnEnd(T data) -> void
|
|||
override sealed OpenTelemetry.BaseExportProcessor<T>.OnStart(T data) -> void
|
||||
readonly OpenTelemetry.BaseExportProcessor<T>.exporter -> OpenTelemetry.BaseExporter<T>
|
||||
static OpenTelemetry.ProviderExtensions.GetResource(this OpenTelemetry.BaseProvider baseProvider) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddEnvironmentVariableDetector(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.Resource.Empty.get -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.Resources.Resources.CreateServiceResource(string serviceName, string serviceInstanceId = null, string serviceNamespace = null, string serviceVersion = null) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddAttributes(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddService(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, string serviceName, string serviceNamespace = null, string serviceVersion = null, bool autoGenerateServiceInstanceId = true, string serviceInstanceId = null) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddTelemetrySdk(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateDefault() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateEmpty() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Sdk.CreateMeterProviderBuilder() -> OpenTelemetry.Metrics.MeterProviderBuilder
|
||||
static OpenTelemetry.Sdk.CreateTracerProviderBuilder() -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Sdk.SetDefaultTextMapPropagator(OpenTelemetry.Context.Propagation.TextMapPropagator textMapPropagator) -> void
|
||||
|
|
@ -237,11 +242,11 @@ static OpenTelemetry.SuppressInstrumentationScope.Begin(bool value = true) -> Sy
|
|||
static OpenTelemetry.SuppressInstrumentationScope.Enter() -> int
|
||||
static OpenTelemetry.Trace.SamplingResult.operator !=(OpenTelemetry.Trace.SamplingResult decision1, OpenTelemetry.Trace.SamplingResult decision2) -> bool
|
||||
static OpenTelemetry.Trace.SamplingResult.operator ==(OpenTelemetry.Trace.SamplingResult decision1, OpenTelemetry.Trace.SamplingResult decision2) -> bool
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProvider provider, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.Shutdown(this OpenTelemetry.Trace.TracerProvider provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Build(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetSampler(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Trace.Sampler sampler) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
virtual OpenTelemetry.BaseExporter<T>.Dispose(bool disposing) -> void
|
||||
virtual OpenTelemetry.BaseExporter<T>.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
|
|
|
|||
|
|
@ -145,7 +145,11 @@ OpenTelemetry.Resources.Resource
|
|||
OpenTelemetry.Resources.Resource.Attributes.get -> System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
OpenTelemetry.Resources.Resource.Merge(OpenTelemetry.Resources.Resource other) -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.Resource.Resource(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> void
|
||||
OpenTelemetry.Resources.Resources
|
||||
OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.AddResource(OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.Build() -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.ResourceBuilder.Clear() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.ResourceBuilderExtensions
|
||||
OpenTelemetry.Sdk
|
||||
OpenTelemetry.SimpleExportProcessor<T>
|
||||
OpenTelemetry.SimpleExportProcessor<T>.SimpleExportProcessor(OpenTelemetry.BaseExporter<T> exporter) -> void
|
||||
|
|
@ -195,10 +199,6 @@ abstract OpenTelemetry.Metrics.Export.MetricExporter.ExportAsync(System.Collecti
|
|||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.FinishCollectionCycle(out System.Collections.Generic.IEnumerable<OpenTelemetry.Metrics.Export.Metric> metrics) -> void
|
||||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.Process(OpenTelemetry.Metrics.Export.Metric metric) -> void
|
||||
abstract OpenTelemetry.Trace.Sampler.ShouldSample(in OpenTelemetry.Trace.SamplingParameters samplingParameters) -> OpenTelemetry.Trace.SamplingResult
|
||||
const OpenTelemetry.Resources.Resource.ServiceInstanceIdKey = "service.instance.id" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNameKey = "service.name" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNamespaceKey = "service.namespace" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceVersionKey = "service.version" -> string
|
||||
override OpenTelemetry.BaseExportProcessor<T>.Dispose(bool disposing) -> void
|
||||
override OpenTelemetry.BaseExportProcessor<T>.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
override OpenTelemetry.BatchExportProcessor<T>.OnEnd(T data) -> void
|
||||
|
|
@ -247,8 +247,13 @@ override sealed OpenTelemetry.BaseExportProcessor<T>.OnStart(T data) -> void
|
|||
readonly OpenTelemetry.BaseExportProcessor<T>.exporter -> OpenTelemetry.BaseExporter<T>
|
||||
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions> configure = null) -> Microsoft.Extensions.Logging.ILoggingBuilder
|
||||
static OpenTelemetry.ProviderExtensions.GetResource(this OpenTelemetry.BaseProvider baseProvider) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddEnvironmentVariableDetector(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.Resource.Empty.get -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.Resources.Resources.CreateServiceResource(string serviceName, string serviceInstanceId = null, string serviceNamespace = null, string serviceVersion = null) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddAttributes(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddService(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, string serviceName, string serviceNamespace = null, string serviceVersion = null, bool autoGenerateServiceInstanceId = true, string serviceInstanceId = null) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddTelemetrySdk(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateDefault() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateEmpty() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Sdk.CreateMeterProviderBuilder() -> OpenTelemetry.Metrics.MeterProviderBuilder
|
||||
static OpenTelemetry.Sdk.CreateTracerProviderBuilder() -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Sdk.SetDefaultTextMapPropagator(OpenTelemetry.Context.Propagation.TextMapPropagator textMapPropagator) -> void
|
||||
|
|
@ -257,11 +262,11 @@ static OpenTelemetry.SuppressInstrumentationScope.Begin(bool value = true) -> Sy
|
|||
static OpenTelemetry.SuppressInstrumentationScope.Enter() -> int
|
||||
static OpenTelemetry.Trace.SamplingResult.operator !=(OpenTelemetry.Trace.SamplingResult decision1, OpenTelemetry.Trace.SamplingResult decision2) -> bool
|
||||
static OpenTelemetry.Trace.SamplingResult.operator ==(OpenTelemetry.Trace.SamplingResult decision1, OpenTelemetry.Trace.SamplingResult decision2) -> bool
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProvider provider, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.Shutdown(this OpenTelemetry.Trace.TracerProvider provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Build(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetSampler(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Trace.Sampler sampler) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
virtual OpenTelemetry.BaseExporter<T>.Dispose(bool disposing) -> void
|
||||
virtual OpenTelemetry.BaseExporter<T>.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
|
|
|
|||
|
|
@ -145,7 +145,11 @@ OpenTelemetry.Resources.Resource
|
|||
OpenTelemetry.Resources.Resource.Attributes.get -> System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
OpenTelemetry.Resources.Resource.Merge(OpenTelemetry.Resources.Resource other) -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.Resource.Resource(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> void
|
||||
OpenTelemetry.Resources.Resources
|
||||
OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.AddResource(OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.Resources.ResourceBuilder.Build() -> OpenTelemetry.Resources.Resource
|
||||
OpenTelemetry.Resources.ResourceBuilder.Clear() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
OpenTelemetry.ResourceBuilderExtensions
|
||||
OpenTelemetry.Sdk
|
||||
OpenTelemetry.SimpleExportProcessor<T>
|
||||
OpenTelemetry.SimpleExportProcessor<T>.SimpleExportProcessor(OpenTelemetry.BaseExporter<T> exporter) -> void
|
||||
|
|
@ -195,10 +199,6 @@ abstract OpenTelemetry.Metrics.Export.MetricExporter.ExportAsync(System.Collecti
|
|||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.FinishCollectionCycle(out System.Collections.Generic.IEnumerable<OpenTelemetry.Metrics.Export.Metric> metrics) -> void
|
||||
abstract OpenTelemetry.Metrics.Export.MetricProcessor.Process(OpenTelemetry.Metrics.Export.Metric metric) -> void
|
||||
abstract OpenTelemetry.Trace.Sampler.ShouldSample(in OpenTelemetry.Trace.SamplingParameters samplingParameters) -> OpenTelemetry.Trace.SamplingResult
|
||||
const OpenTelemetry.Resources.Resource.ServiceInstanceIdKey = "service.instance.id" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNameKey = "service.name" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceNamespaceKey = "service.namespace" -> string
|
||||
const OpenTelemetry.Resources.Resource.ServiceVersionKey = "service.version" -> string
|
||||
override OpenTelemetry.BaseExportProcessor<T>.Dispose(bool disposing) -> void
|
||||
override OpenTelemetry.BaseExportProcessor<T>.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
override OpenTelemetry.BatchExportProcessor<T>.OnEnd(T data) -> void
|
||||
|
|
@ -247,8 +247,13 @@ override sealed OpenTelemetry.BaseExportProcessor<T>.OnStart(T data) -> void
|
|||
readonly OpenTelemetry.BaseExportProcessor<T>.exporter -> OpenTelemetry.BaseExporter<T>
|
||||
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions> configure = null) -> Microsoft.Extensions.Logging.ILoggingBuilder
|
||||
static OpenTelemetry.ProviderExtensions.GetResource(this OpenTelemetry.BaseProvider baseProvider) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddEnvironmentVariableDetector(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.Resource.Empty.get -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.Resources.Resources.CreateServiceResource(string serviceName, string serviceInstanceId = null, string serviceNamespace = null, string serviceVersion = null) -> OpenTelemetry.Resources.Resource
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddAttributes(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddService(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder, string serviceName, string serviceNamespace = null, string serviceVersion = null, bool autoGenerateServiceInstanceId = true, string serviceInstanceId = null) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.ResourceBuilderExtensions.AddTelemetrySdk(this OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateDefault() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Resources.ResourceBuilder.CreateEmpty() -> OpenTelemetry.Resources.ResourceBuilder
|
||||
static OpenTelemetry.Sdk.CreateMeterProviderBuilder() -> OpenTelemetry.Metrics.MeterProviderBuilder
|
||||
static OpenTelemetry.Sdk.CreateTracerProviderBuilder() -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Sdk.SetDefaultTextMapPropagator(OpenTelemetry.Context.Propagation.TextMapPropagator textMapPropagator) -> void
|
||||
|
|
@ -257,11 +262,11 @@ static OpenTelemetry.SuppressInstrumentationScope.Begin(bool value = true) -> Sy
|
|||
static OpenTelemetry.SuppressInstrumentationScope.Enter() -> int
|
||||
static OpenTelemetry.Trace.SamplingResult.operator !=(OpenTelemetry.Trace.SamplingResult decision1, OpenTelemetry.Trace.SamplingResult decision2) -> bool
|
||||
static OpenTelemetry.Trace.SamplingResult.operator ==(OpenTelemetry.Trace.SamplingResult decision1, OpenTelemetry.Trace.SamplingResult decision2) -> bool
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProvider provider, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderExtensions.Shutdown(this OpenTelemetry.Trace.TracerProvider provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.BaseProcessor<System.Diagnostics.Activity> processor) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Build(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetResource(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Resources.Resource resource) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetSampler(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, OpenTelemetry.Trace.Sampler sampler) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
virtual OpenTelemetry.BaseExporter<T>.Dispose(bool disposing) -> void
|
||||
virtual OpenTelemetry.BaseExporter<T>.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
|
|
|
|||
|
|
@ -10,12 +10,25 @@
|
|||
* `Resource` is no longer added to observed `Activity` objects as a
|
||||
`CustomProperty`.
|
||||
([#1463](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1463))
|
||||
* Remove RentrantExportProcessor as it is not required by spec.
|
||||
* Removed `RentrantExportProcessor` as it is not required by spec.
|
||||
* `ActivitySourceAdapter` supports setting `ActivitySource` for Activities
|
||||
created without `ActivitySource`.
|
||||
([#1515](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1515/))
|
||||
* Implemented Shutdown for TracerProvider
|
||||
* Implemented `Shutdown` for `TracerProvider`.
|
||||
([#1489](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1489))
|
||||
* `Resources.CreateServiceResource` has been removed in
|
||||
favor of the `ResourceBuilder` API.
|
||||
([#1533](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1533))
|
||||
* `TracerProviderBuilder.SetResource` has been changed to
|
||||
`TracerProviderBuilder.SetResourceBuilder`.
|
||||
([#1533](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1533))
|
||||
* By default `TracerProvider` will set a `Resource` containing [Telemetry
|
||||
SDK](https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions#telemetry-sdk)
|
||||
details
|
||||
([#1533](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1533)):
|
||||
* `telemetry.sdk.name` = `opentelemetry`
|
||||
* `telemetry.sdk.language` = `dotnet`
|
||||
* `telemetry.sdk.version` = [SDK version]
|
||||
|
||||
## 0.8.0-beta.1
|
||||
|
||||
|
|
@ -24,7 +37,6 @@ Released 2020-Nov-5
|
|||
* TracerProviderBuilder API changes Renamed AddInstrumentation to
|
||||
AddDiagnosticSourceInstrumentation and made internal. Added AddInstrumentation
|
||||
([#1454](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1454))
|
||||
|
||||
* DiagnosticSource subscription helper classes (DiagnosticSourceSubscriber,
|
||||
ListenerHandler,PropertyFetcher) are made internal.
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
// <copyright file="ResourceSemanticConventions.cs" company="OpenTelemetry Authors">
|
||||
// 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.
|
||||
// </copyright>
|
||||
|
||||
namespace OpenTelemetry.Resources
|
||||
{
|
||||
internal static class ResourceSemanticConventions
|
||||
{
|
||||
public const string AttributeServiceName = "service.name";
|
||||
public const string AttributeServiceNamespace = "service.namespace";
|
||||
public const string AttributeServiceInstance = "service.instance.id";
|
||||
public const string AttributeServiceVersion = "service.version";
|
||||
|
||||
public const string AttributeTelemetrySdkName = "telemetry.sdk.name";
|
||||
public const string AttributeTelemetrySdkLanguage = "telemetry.sdk.language";
|
||||
public const string AttributeTelemetrySdkVersion = "telemetry.sdk.version";
|
||||
|
||||
public const string AttributeContainerName = "container.name";
|
||||
public const string AttributeContainerImage = "container.image.name";
|
||||
public const string AttributeContainerTag = "container.image.tag";
|
||||
|
||||
public const string AttributeFaasName = "faas.name";
|
||||
public const string AttributeFaasId = "faas.id";
|
||||
public const string AttributeFaasVersion = "faas.version";
|
||||
public const string AttributeFaasInstance = "faas.instance";
|
||||
|
||||
public const string AttributeK8sCluster = "k8s.cluster.name";
|
||||
public const string AttributeK8sNamespace = "k8s.namespace.name";
|
||||
public const string AttributeK8sPod = "k8s.pod.name";
|
||||
public const string AttributeK8sDeployment = "k8s.deployment.name";
|
||||
|
||||
public const string AttributeHostHostname = "host.hostname";
|
||||
public const string AttributeHostId = "host.id";
|
||||
public const string AttributeHostName = "host.name";
|
||||
public const string AttributeHostType = "host.type";
|
||||
public const string AttributeHostImageName = "host.image.name";
|
||||
public const string AttributeHostImageId = "host.image.id";
|
||||
public const string AttributeHostImageVersion = "host.image.version";
|
||||
|
||||
public const string AttributeProcessId = "process.id";
|
||||
public const string AttributeProcessExecutableName = "process.executable.name";
|
||||
public const string AttributeProcessExecutablePath = "process.executable.path";
|
||||
public const string AttributeProcessCommand = "process.command";
|
||||
public const string AttributeProcessCommandLine = "process.command_line";
|
||||
public const string AttributeProcessUsername = "process.username";
|
||||
|
||||
public const string AttributeCloudProvider = "cloud.provider";
|
||||
public const string AttributeCloudAccount = "cloud.account.id";
|
||||
public const string AttributeCloudRegion = "cloud.region";
|
||||
public const string AttributeCloudZone = "cloud.zone";
|
||||
public const string AttributeComponent = "component";
|
||||
}
|
||||
}
|
||||
|
|
@ -14,7 +14,6 @@
|
|||
// limitations under the License.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenTelemetry.Internal;
|
||||
|
|
@ -27,22 +26,12 @@ namespace OpenTelemetry.Resources
|
|||
/// </summary>
|
||||
public class Resource
|
||||
{
|
||||
public const string ServiceNameKey = "service.name";
|
||||
public const string ServiceNamespaceKey = "service.namespace";
|
||||
public const string ServiceInstanceIdKey = "service.instance.id";
|
||||
public const string ServiceVersionKey = "service.version";
|
||||
private const string TelemetrySdkNameKey = "telemetry.sdk.name";
|
||||
private const string TelemetrySdkLanguageKey = "telemetry.sdk.language";
|
||||
private const string TelemetrySdkVersionKey = "telemetry.sdk.version";
|
||||
|
||||
private static readonly Version Version = typeof(Resource).Assembly.GetName().Version;
|
||||
|
||||
// this implementation follows https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/sdk.md
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Resource"/> class.
|
||||
/// </summary>
|
||||
/// <param name="attributes">An <see cref="IDictionary{String, Object}"/> of attributes that describe the resource.</param>
|
||||
/// <param name="attributes">An <see cref="IEnumerable{T}"/> of attributes that describe the resource.</param>
|
||||
public Resource(IEnumerable<KeyValuePair<string, object>> attributes)
|
||||
{
|
||||
if (attributes == null)
|
||||
|
|
@ -66,13 +55,6 @@ namespace OpenTelemetry.Resources
|
|||
/// </summary>
|
||||
public IEnumerable<KeyValuePair<string, object>> Attributes { get; }
|
||||
|
||||
private static Resource TelemetryResource { get; } = new Resource(new List<KeyValuePair<string, object>>
|
||||
{
|
||||
new KeyValuePair<string, object>(TelemetrySdkNameKey, "opentelemetry"),
|
||||
new KeyValuePair<string, object>(TelemetrySdkLanguageKey, "dotnet"),
|
||||
new KeyValuePair<string, object>(TelemetrySdkVersionKey, Version.ToString()),
|
||||
});
|
||||
|
||||
/// <summary>
|
||||
/// Returns a new, merged <see cref="Resource"/> by merging the current <see cref="Resource"/> with the.
|
||||
/// <code>other</code> <see cref="Resource"/>. In case of a collision the current <see cref="Resource"/> takes precedence.
|
||||
|
|
@ -105,36 +87,9 @@ namespace OpenTelemetry.Resources
|
|||
return new Resource(newAttributes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a new <see cref="Resource"/> with added attributes from telemetry sdk and the <see cref="OtelEnvResourceDetector"/>.
|
||||
/// </summary>
|
||||
/// <returns><see cref="Resource"/>.</returns>
|
||||
internal Resource GetResourceWithDefaultAttributes()
|
||||
{
|
||||
return this.Merge(TelemetryResource).Merge(new OtelEnvResourceDetector().Detect());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a new <see cref="Resource"/> with added attributes from resource detectors in the order of the list.
|
||||
/// </summary>
|
||||
/// <param name="detectors">A list of <see cref="IResourceDetector"/>.</param>
|
||||
/// <returns><see cref="Resource"/>.</returns>
|
||||
internal Resource GetResourceFromDetectors(List<IResourceDetector> detectors)
|
||||
{
|
||||
var resource = this;
|
||||
foreach (IResourceDetector detector in detectors)
|
||||
{
|
||||
resource = resource.Merge(detector.Detect());
|
||||
}
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
private static KeyValuePair<string, object> SanitizeAttribute(KeyValuePair<string, object> attribute)
|
||||
{
|
||||
string sanitizedKey = null;
|
||||
object sanitizedValue = null;
|
||||
|
||||
string sanitizedKey;
|
||||
if (attribute.Key == null)
|
||||
{
|
||||
OpenTelemetrySdkEventSource.Log.InvalidArgument("Create resource", "attribute key", "Attribute key should be non-null string.");
|
||||
|
|
@ -145,6 +100,7 @@ namespace OpenTelemetry.Resources
|
|||
sanitizedKey = attribute.Key;
|
||||
}
|
||||
|
||||
object sanitizedValue;
|
||||
if (!IsValidValue(attribute.Value))
|
||||
{
|
||||
OpenTelemetrySdkEventSource.Log.InvalidArgument("Create resource", "attribute value", "Attribute value should be a non-null string, long, bool or double.");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,111 @@
|
|||
// <copyright file="ResourceBuilder.cs" company="OpenTelemetry Authors">
|
||||
// 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.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace OpenTelemetry.Resources
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains methods for building <see cref="Resource"/> instances.
|
||||
/// </summary>
|
||||
public class ResourceBuilder
|
||||
{
|
||||
private readonly List<Resource> resources = new List<Resource>();
|
||||
|
||||
private ResourceBuilder()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="ResourceBuilder"/> instance with SDK defaults
|
||||
/// added. See <a
|
||||
/// href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/semantic_conventions/">resource
|
||||
/// semantic conventions</a> for details.
|
||||
/// </summary>
|
||||
/// <returns>Created <see cref="ResourceBuilder"/>.</returns>
|
||||
public static ResourceBuilder CreateDefault()
|
||||
=> new ResourceBuilder().AddTelemetrySdk(); // TODO: Seek spec clarify on whether or not OtelEnvResourceDetector should be added by default.
|
||||
|
||||
/// <summary>
|
||||
/// Creates an empty <see cref="ResourceBuilder"/> instance.
|
||||
/// </summary>
|
||||
/// <returns>Created <see cref="ResourceBuilder"/>.</returns>
|
||||
public static ResourceBuilder CreateEmpty()
|
||||
=> new ResourceBuilder();
|
||||
|
||||
/// <summary>
|
||||
/// Add a <see cref="Resource"/> to the builder.
|
||||
/// </summary>
|
||||
/// <param name="resource"><see cref="Resource"/>.</param>
|
||||
/// <returns><see cref="ResourceBuilder"/> for chaining.</returns>
|
||||
public ResourceBuilder AddResource(Resource resource)
|
||||
{
|
||||
if (resource == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(resource));
|
||||
}
|
||||
|
||||
this.resources.Add(resource);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clears the <see cref="Resource"/>s added to the builder.
|
||||
/// </summary>
|
||||
/// <returns><see cref="ResourceBuilder"/> for chaining.</returns>
|
||||
public ResourceBuilder Clear()
|
||||
{
|
||||
this.resources.Clear();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Build a merged <see cref="Resource"/> from all the <see cref="Resource"/>s added to the builder.
|
||||
/// </summary>
|
||||
/// <returns><see cref="Resource"/>.</returns>
|
||||
public Resource Build()
|
||||
{
|
||||
Resource finalResource = Resource.Empty;
|
||||
|
||||
foreach (Resource resource in this.resources)
|
||||
{
|
||||
finalResource = finalResource.Merge(resource);
|
||||
}
|
||||
|
||||
return finalResource;
|
||||
}
|
||||
|
||||
internal ResourceBuilder AddDetector(IResourceDetector resourceDetector)
|
||||
{
|
||||
if (resourceDetector == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(resourceDetector));
|
||||
}
|
||||
|
||||
Resource resource = resourceDetector.Detect();
|
||||
|
||||
if (resource != null)
|
||||
{
|
||||
this.resources.Add(resource);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
// <copyright file="ResourceBuilderExtensions.cs" company="OpenTelemetry Authors">
|
||||
// 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.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenTelemetry.Resources;
|
||||
|
||||
namespace OpenTelemetry
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains extension methods for building <see cref="Resource"/>s.
|
||||
/// </summary>
|
||||
public static class ResourceBuilderExtensions
|
||||
{
|
||||
private static readonly Version Version = typeof(Resource).Assembly.GetName().Version;
|
||||
|
||||
private static Resource TelemetryResource { get; } = new Resource(new Dictionary<string, object>
|
||||
{
|
||||
[ResourceSemanticConventions.AttributeTelemetrySdkName] = "opentelemetry",
|
||||
[ResourceSemanticConventions.AttributeTelemetrySdkLanguage] = "dotnet",
|
||||
[ResourceSemanticConventions.AttributeTelemetrySdkVersion] = Version.ToString(),
|
||||
});
|
||||
|
||||
/// <summary>
|
||||
/// Adds service information to a <see cref="ResourceBuilder"/>
|
||||
/// following <a
|
||||
/// href="https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions#service">semantic
|
||||
/// conventions</a>.
|
||||
/// </summary>
|
||||
/// <param name="resourceBuilder"><see cref="ResourceBuilder"/>.</param>
|
||||
/// <param name="serviceName">Name of the service.</param>
|
||||
/// <param name="serviceNamespace">Optional namespace of the service.</param>
|
||||
/// <param name="serviceVersion">Optional version of the service.</param>
|
||||
/// <param name="autoGenerateServiceInstanceId">Specify <see langword="true"/> to automatically generate a <see cref="Guid"/> for <paramref name="serviceInstanceId"/> if not supplied.</param>
|
||||
/// <param name="serviceInstanceId">Optional unique identifier of the service instance.</param>
|
||||
/// <returns>Returns <see cref="ResourceBuilder"/> for chaining.</returns>
|
||||
public static ResourceBuilder AddService(
|
||||
this ResourceBuilder resourceBuilder,
|
||||
string serviceName,
|
||||
string serviceNamespace = null,
|
||||
string serviceVersion = null,
|
||||
bool autoGenerateServiceInstanceId = true,
|
||||
string serviceInstanceId = null)
|
||||
{
|
||||
Dictionary<string, object> resourceAttributes = new Dictionary<string, object>();
|
||||
|
||||
if (string.IsNullOrEmpty(serviceName))
|
||||
{
|
||||
throw new ArgumentNullException(nameof(serviceName));
|
||||
}
|
||||
|
||||
resourceAttributes.Add(ResourceSemanticConventions.AttributeServiceName, serviceName);
|
||||
|
||||
if (!string.IsNullOrEmpty(serviceNamespace))
|
||||
{
|
||||
resourceAttributes.Add(ResourceSemanticConventions.AttributeServiceNamespace, serviceNamespace);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(serviceVersion))
|
||||
{
|
||||
resourceAttributes.Add(ResourceSemanticConventions.AttributeServiceVersion, serviceVersion);
|
||||
}
|
||||
|
||||
if (serviceInstanceId == null && autoGenerateServiceInstanceId)
|
||||
{
|
||||
serviceInstanceId = Guid.NewGuid().ToString();
|
||||
}
|
||||
|
||||
if (serviceInstanceId != null)
|
||||
{
|
||||
resourceAttributes.Add(ResourceSemanticConventions.AttributeServiceInstance, serviceInstanceId);
|
||||
}
|
||||
|
||||
return resourceBuilder.AddResource(new Resource(resourceAttributes));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds service information to a <see cref="ResourceBuilder"/>
|
||||
/// following <a
|
||||
/// href="https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions#telemetry-sdk">semantic
|
||||
/// conventions</a>.
|
||||
/// </summary>
|
||||
/// <param name="resourceBuilder"><see cref="ResourceBuilder"/>.</param>
|
||||
/// <returns>Returns <see cref="ResourceBuilder"/> for chaining.</returns>
|
||||
public static ResourceBuilder AddTelemetrySdk(this ResourceBuilder resourceBuilder)
|
||||
{
|
||||
return resourceBuilder.AddResource(TelemetryResource);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds attributes to a <see cref="ResourceBuilder"/>.
|
||||
/// </summary>
|
||||
/// <param name="resourceBuilder"><see cref="ResourceBuilder"/>.</param>
|
||||
/// <param name="attributes">An <see cref="IEnumerable{T}"/> of attributes that describe the resource.</param>
|
||||
/// <returns>Returns <see cref="ResourceBuilder"/> for chaining.</returns>
|
||||
public static ResourceBuilder AddAttributes(this ResourceBuilder resourceBuilder, IEnumerable<KeyValuePair<string, object>> attributes)
|
||||
{
|
||||
return resourceBuilder.AddResource(new Resource(attributes));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds resource attributes parsed from an environment variable to a
|
||||
/// <see cref="ResourceBuilder"/> following the <a
|
||||
/// href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/sdk.md#specifying-resource-information-via-an-environment-variable">Resource
|
||||
/// SDK</a>.
|
||||
/// </summary>
|
||||
/// <param name="resourceBuilder"><see cref="ResourceBuilder"/>.</param>
|
||||
/// <returns>Returns <see cref="ResourceBuilder"/> for chaining.</returns>
|
||||
public static ResourceBuilder AddEnvironmentVariableDetector(this ResourceBuilder resourceBuilder)
|
||||
{
|
||||
return resourceBuilder.AddDetector(new OtelEnvResourceDetector());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
// <copyright file="Resources.cs" company="OpenTelemetry Authors">
|
||||
// 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.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenTelemetry.Internal;
|
||||
|
||||
namespace OpenTelemetry.Resources
|
||||
{
|
||||
public static class Resources
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="Resource"/> from service information following standard convention
|
||||
/// https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-resource-semantic-conventions.md#service.
|
||||
/// </summary>
|
||||
/// <param name="serviceName">Name of the service.</param>
|
||||
/// <param name="serviceInstanceId">Unique identifier of the service instance.</param>
|
||||
/// <param name="serviceNamespace">Optional namespace of the service.</param>
|
||||
/// <param name="serviceVersion">Optional version of the service.</param>
|
||||
/// <returns>Returns a new <see cref="Resource"/>.</returns>
|
||||
public static Resource CreateServiceResource(string serviceName, string serviceInstanceId = null, string serviceNamespace = null, string serviceVersion = null)
|
||||
{
|
||||
if (serviceName == null)
|
||||
{
|
||||
OpenTelemetrySdkEventSource.Log.InvalidArgument("Create service resource", "serviceName", "is null");
|
||||
return Resource.Empty.GetResourceWithDefaultAttributes();
|
||||
}
|
||||
|
||||
var attributes = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>(Resource.ServiceNameKey, serviceName), };
|
||||
|
||||
if (serviceInstanceId == null)
|
||||
{
|
||||
serviceInstanceId = Guid.NewGuid().ToString();
|
||||
}
|
||||
|
||||
attributes.Add(new KeyValuePair<string, object>(Resource.ServiceInstanceIdKey, serviceInstanceId));
|
||||
|
||||
if (serviceNamespace != null)
|
||||
{
|
||||
attributes.Add(new KeyValuePair<string, object>(Resource.ServiceNamespaceKey, serviceNamespace));
|
||||
}
|
||||
|
||||
if (serviceVersion != null)
|
||||
{
|
||||
attributes.Add(new KeyValuePair<string, object>(Resource.ServiceVersionKey, serviceVersion));
|
||||
}
|
||||
|
||||
return new Resource(attributes).GetResourceWithDefaultAttributes();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -42,13 +42,13 @@ namespace OpenTelemetry.Trace
|
|||
/// Sets the <see cref="Resource"/> describing the app associated with all traces. Overwrites currently set resource.
|
||||
/// </summary>
|
||||
/// <param name="tracerProviderBuilder">TracerProviderBuilder instance.</param>
|
||||
/// <param name="resource">Resource to be associate with all traces.</param>
|
||||
/// <param name="resourceBuilder"><see cref="ResourceBuilder"/> to be associate with all traces.</param>
|
||||
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
|
||||
public static TracerProviderBuilder SetResource(this TracerProviderBuilder tracerProviderBuilder, Resource resource)
|
||||
public static TracerProviderBuilder SetResourceBuilder(this TracerProviderBuilder tracerProviderBuilder, ResourceBuilder resourceBuilder)
|
||||
{
|
||||
if (tracerProviderBuilder is TracerProviderBuilderSdk tracerProviderBuilderSdk)
|
||||
{
|
||||
tracerProviderBuilderSdk.SetResource(resource);
|
||||
tracerProviderBuilderSdk.SetResourceBuilder(resourceBuilder);
|
||||
}
|
||||
|
||||
return tracerProviderBuilder;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
|
|
@ -30,7 +31,7 @@ namespace OpenTelemetry.Trace
|
|||
|
||||
private readonly List<BaseProcessor<Activity>> processors = new List<BaseProcessor<Activity>>();
|
||||
private readonly List<string> sources = new List<string>();
|
||||
private Resource resource = Resource.Empty.GetResourceWithDefaultAttributes();
|
||||
private ResourceBuilder resourceBuilder = ResourceBuilder.CreateDefault();
|
||||
private Sampler sampler = new ParentBasedSampler(new AlwaysOnSampler());
|
||||
|
||||
internal TracerProviderBuilderSdk()
|
||||
|
|
@ -95,28 +96,18 @@ namespace OpenTelemetry.Trace
|
|||
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
|
||||
internal TracerProviderBuilder SetSampler(Sampler sampler)
|
||||
{
|
||||
if (sampler == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(sampler));
|
||||
}
|
||||
|
||||
this.sampler = sampler;
|
||||
this.sampler = sampler ?? throw new ArgumentNullException(nameof(sampler));
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the <see cref="Resource"/> describing the app associated with all traces. Overwrites currently set resource.
|
||||
/// </summary>
|
||||
/// <param name="resource">Resource to be associate with all traces.</param>
|
||||
/// <param name="resourceBuilder"><see cref="ResourceBuilder"/> to be associate with all traces.</param>
|
||||
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
|
||||
internal TracerProviderBuilder SetResource(Resource resource)
|
||||
internal TracerProviderBuilder SetResourceBuilder(ResourceBuilder resourceBuilder)
|
||||
{
|
||||
if (resource == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(resource));
|
||||
}
|
||||
|
||||
this.resource = resource;
|
||||
this.resourceBuilder = resourceBuilder ?? throw new ArgumentNullException(nameof(resourceBuilder));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -139,7 +130,13 @@ namespace OpenTelemetry.Trace
|
|||
|
||||
internal TracerProvider Build()
|
||||
{
|
||||
return new TracerProviderSdk(this.resource, this.sources, this.diagnosticSourceInstrumentationFactories, this.instrumentationFactories, this.sampler, this.processors);
|
||||
return new TracerProviderSdk(
|
||||
this.resourceBuilder.Build(),
|
||||
this.sources,
|
||||
this.diagnosticSourceInstrumentationFactories,
|
||||
this.instrumentationFactories,
|
||||
this.sampler,
|
||||
this.processors);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ namespace Benchmarks.Instrumentation
|
|||
public class InstrumentedHttpClientBenchmark
|
||||
{
|
||||
private const string ActivityName = "incoming request";
|
||||
private const string ResourceName = "http-service-example";
|
||||
private const string ServiceName = "http-service-example";
|
||||
private const string SourceName = "http-client-test";
|
||||
|
||||
private HttpClient httpClient;
|
||||
|
|
@ -53,7 +53,7 @@ namespace Benchmarks.Instrumentation
|
|||
|
||||
this.tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.SetResource(Resources.CreateServiceResource(ResourceName))
|
||||
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(ServiceName))
|
||||
.AddSource(SourceName)
|
||||
.Build();
|
||||
|
||||
|
|
|
|||
|
|
@ -57,11 +57,11 @@ namespace OpenTelemetry.Exporter.Jaeger.Tests
|
|||
|
||||
Assert.Equal("TestService", process.ServiceName);
|
||||
|
||||
jaegerTraceExporter.SetResource(Resources.Resources.CreateServiceResource("MyService"));
|
||||
jaegerTraceExporter.SetResource(ResourceBuilder.CreateEmpty().AddService("MyService").Build());
|
||||
|
||||
Assert.Equal("MyService", process.ServiceName);
|
||||
|
||||
jaegerTraceExporter.SetResource(Resources.Resources.CreateServiceResource("MyService", serviceNamespace: "MyNamespace"));
|
||||
jaegerTraceExporter.SetResource(ResourceBuilder.CreateEmpty().AddService("MyService", "MyNamespace").Build());
|
||||
|
||||
Assert.Equal("MyNamespace.MyService", process.ServiceName);
|
||||
}
|
||||
|
|
@ -109,8 +109,8 @@ namespace OpenTelemetry.Exporter.Jaeger.Tests
|
|||
|
||||
jaegerTraceExporter.SetResource(new Resource(new Dictionary<string, object>
|
||||
{
|
||||
[Resource.ServiceNameKey] = "servicename",
|
||||
[Resource.ServiceNamespaceKey] = "servicenamespace",
|
||||
[ResourceSemanticConventions.AttributeServiceName] = "servicename",
|
||||
[ResourceSemanticConventions.AttributeServiceNamespace] = "servicenamespace",
|
||||
}));
|
||||
|
||||
Assert.Null(process.Tags);
|
||||
|
|
|
|||
|
|
@ -83,8 +83,8 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests
|
|||
new Resources.Resource(
|
||||
new List<KeyValuePair<string, object>>
|
||||
{
|
||||
new KeyValuePair<string, object>(Resources.Resource.ServiceNameKey, "service-name"),
|
||||
new KeyValuePair<string, object>(Resources.Resource.ServiceNamespaceKey, "ns1"),
|
||||
new KeyValuePair<string, object>(Resources.ResourceSemanticConventions.AttributeServiceName, "service-name"),
|
||||
new KeyValuePair<string, object>(Resources.ResourceSemanticConventions.AttributeServiceNamespace, "ns1"),
|
||||
}));
|
||||
}
|
||||
else
|
||||
|
|
@ -124,12 +124,12 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests
|
|||
var oltpResource = request.ResourceSpans.First().Resource;
|
||||
if (addResource)
|
||||
{
|
||||
Assert.Contains(oltpResource.Attributes, (kvp) => kvp.Key == Resources.Resource.ServiceNameKey && kvp.Value.StringValue == "service-name");
|
||||
Assert.Contains(oltpResource.Attributes, (kvp) => kvp.Key == Resources.Resource.ServiceNamespaceKey && kvp.Value.StringValue == "ns1");
|
||||
Assert.Contains(oltpResource.Attributes, (kvp) => kvp.Key == Resources.ResourceSemanticConventions.AttributeServiceName && kvp.Value.StringValue == "service-name");
|
||||
Assert.Contains(oltpResource.Attributes, (kvp) => kvp.Key == Resources.ResourceSemanticConventions.AttributeServiceNamespace && kvp.Value.StringValue == "ns1");
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Contains(oltpResource.Attributes, (kvp) => kvp.Key == Resources.Resource.ServiceNameKey && kvp.Value.StringValue == optionsServiceName);
|
||||
Assert.Contains(oltpResource.Attributes, (kvp) => kvp.Key == Resources.ResourceSemanticConventions.AttributeServiceName && kvp.Value.StringValue == optionsServiceName);
|
||||
}
|
||||
|
||||
foreach (var instrumentationLibrarySpans in request.ResourceSpans.First().InstrumentationLibrarySpans)
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ namespace OpenTelemetry.Exporter.Zipkin.Tests
|
|||
|
||||
exporter.SetLocalEndpointFromResource(new Resource(new Dictionary<string, object>
|
||||
{
|
||||
[Resource.ServiceNameKey] = serviceName,
|
||||
[ResourceSemanticConventions.AttributeServiceName] = serviceName,
|
||||
["service.tag"] = "hello world",
|
||||
}));
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,86 @@
|
|||
// <copyright file="ResourceBuilderTests.cs" company="OpenTelemetry Authors">
|
||||
// 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.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Xunit;
|
||||
|
||||
namespace OpenTelemetry.Resources.Tests
|
||||
{
|
||||
public class ResourceBuilderTests
|
||||
{
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceName()
|
||||
{
|
||||
var resource = ResourceBuilder.CreateEmpty().AddService("my-service").Build();
|
||||
Assert.Equal(2, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceName, "my-service"), resource.Attributes);
|
||||
Assert.Single(resource.Attributes.Where(kvp => kvp.Key == ResourceSemanticConventions.AttributeServiceName));
|
||||
Assert.True(Guid.TryParse((string)resource.Attributes.Single(kvp => kvp.Key == ResourceSemanticConventions.AttributeServiceInstance).Value, out _));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceNameAndInstance()
|
||||
{
|
||||
var resource = ResourceBuilder.CreateEmpty().AddService("my-service", serviceInstanceId: "123").Build();
|
||||
Assert.Equal(2, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceName, "my-service"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceInstance, "123"), resource.Attributes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceNameAndInstanceAndNamespace()
|
||||
{
|
||||
var resource = ResourceBuilder.CreateEmpty().AddService("my-service", "my-namespace", serviceInstanceId: "123").Build();
|
||||
Assert.Equal(3, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceName, "my-service"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceInstance, "123"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceNamespace, "my-namespace"), resource.Attributes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceNameAndInstanceAndNamespaceAndVersion()
|
||||
{
|
||||
var resource = ResourceBuilder.CreateEmpty().AddService("my-service", "my-namespace", "semVer:1.2.3", serviceInstanceId: "123").Build();
|
||||
Assert.Equal(4, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceName, "my-service"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceInstance, "123"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceNamespace, "my-namespace"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceVersion, "semVer:1.2.3"), resource.Attributes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_AutoGenerateServiceInstanceIdOff()
|
||||
{
|
||||
var resource = ResourceBuilder.CreateEmpty().AddService("my-service", autoGenerateServiceInstanceId: false).Build();
|
||||
Assert.Single(resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceName, "my-service"), resource.Attributes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ClearTest()
|
||||
{
|
||||
var resource = ResourceBuilder.CreateEmpty()
|
||||
.AddTelemetrySdk()
|
||||
.Clear()
|
||||
.AddService("my-service", autoGenerateServiceInstanceId: false)
|
||||
.Build();
|
||||
Assert.Single(resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(ResourceSemanticConventions.AttributeServiceName, "my-service"), resource.Attributes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -26,7 +26,6 @@ namespace OpenTelemetry.Resources.Tests
|
|||
private const string KeyName = "key";
|
||||
private const string ValueName = "value";
|
||||
private const string OtelEnvVarKey = "OTEL_RESOURCE_ATTRIBUTES";
|
||||
private static readonly Random Random = new Random();
|
||||
|
||||
public ResourceTest()
|
||||
{
|
||||
|
|
@ -339,11 +338,10 @@ namespace OpenTelemetry.Resources.Tests
|
|||
public void GetResourceWithDefaultAttributes_EmptyResource()
|
||||
{
|
||||
// Arrange
|
||||
var resource = Resource.Empty;
|
||||
var new_resource = resource.GetResourceWithDefaultAttributes();
|
||||
var resource = ResourceBuilder.CreateDefault().AddEnvironmentVariableDetector().Build();
|
||||
|
||||
// Assert
|
||||
var attributes = new_resource.Attributes;
|
||||
var attributes = resource.Attributes;
|
||||
Assert.Equal(3, attributes.Count());
|
||||
ValidateTelemetrySdkAttributes(attributes);
|
||||
}
|
||||
|
|
@ -352,11 +350,10 @@ namespace OpenTelemetry.Resources.Tests
|
|||
public void GetResourceWithDefaultAttributes_ResourceWithAttrs()
|
||||
{
|
||||
// Arrange
|
||||
var resource = new Resource(this.CreateAttributes(2));
|
||||
var new_resource = resource.GetResourceWithDefaultAttributes();
|
||||
var resource = ResourceBuilder.CreateDefault().AddEnvironmentVariableDetector().AddAttributes(this.CreateAttributes(2)).Build();
|
||||
|
||||
// Assert
|
||||
var attributes = new_resource.Attributes;
|
||||
var attributes = resource.Attributes;
|
||||
Assert.Equal(5, attributes.Count());
|
||||
ValidateAttributes(attributes, 0, 1);
|
||||
ValidateTelemetrySdkAttributes(attributes);
|
||||
|
|
@ -367,11 +364,10 @@ namespace OpenTelemetry.Resources.Tests
|
|||
{
|
||||
// Arrange
|
||||
Environment.SetEnvironmentVariable(OtelEnvVarKey, "EVKey1=EVVal1,EVKey2=EVVal2");
|
||||
var resource = new Resource(this.CreateAttributes(2));
|
||||
var new_resource = resource.GetResourceWithDefaultAttributes();
|
||||
var resource = ResourceBuilder.CreateDefault().AddEnvironmentVariableDetector().AddAttributes(this.CreateAttributes(2)).Build();
|
||||
|
||||
// Assert
|
||||
var attributes = new_resource.Attributes;
|
||||
var attributes = resource.Attributes;
|
||||
Assert.Equal(7, attributes.Count());
|
||||
ValidateAttributes(attributes, 0, 1);
|
||||
ValidateTelemetrySdkAttributes(attributes);
|
||||
|
|
@ -379,26 +375,6 @@ namespace OpenTelemetry.Resources.Tests
|
|||
Assert.Contains(new KeyValuePair<string, object>("EVKey2", "EVVal2"), attributes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetResourceFromDetectors_OtelEnvDetector()
|
||||
{
|
||||
// Arrange
|
||||
Environment.SetEnvironmentVariable(OtelEnvVarKey, "EVKey11=EVVal11,EVKey22=EVVal22");
|
||||
var detectors = new List<IResourceDetector>
|
||||
{
|
||||
new OtelEnvResourceDetector(),
|
||||
};
|
||||
var resource = new Resource(this.CreateAttributes(2));
|
||||
var new_resource = resource.GetResourceFromDetectors(detectors);
|
||||
|
||||
// Assert
|
||||
var attributes = new_resource.Attributes;
|
||||
Assert.Equal(4, attributes.Count());
|
||||
ValidateAttributes(attributes, 0, 1);
|
||||
Assert.Contains(new KeyValuePair<string, object>("EVKey11", "EVVal11"), attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>("EVKey22", "EVVal22"), attributes);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Environment.SetEnvironmentVariable(OtelEnvVarKey, null);
|
||||
|
|
@ -440,13 +416,6 @@ namespace OpenTelemetry.Resources.Tests
|
|||
Assert.Single(versionAttribute);
|
||||
}
|
||||
|
||||
private static string RandomString(int length)
|
||||
{
|
||||
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||
return new string(Enumerable.Repeat(chars, length)
|
||||
.Select(s => s[Random.Next(s.Length)]).ToArray());
|
||||
}
|
||||
|
||||
private Dictionary<string, object> CreateAttributes(int attributeCount, int startIndex = 0)
|
||||
{
|
||||
var attributes = new Dictionary<string, object>();
|
||||
|
|
|
|||
|
|
@ -1,87 +0,0 @@
|
|||
// <copyright file="ResourcesTests.cs" company="OpenTelemetry Authors">
|
||||
// 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.
|
||||
// </copyright>
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenTelemetry.Trace;
|
||||
using Xunit;
|
||||
|
||||
namespace OpenTelemetry.Resources.Tests
|
||||
{
|
||||
public class ResourcesTests
|
||||
{
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceName()
|
||||
{
|
||||
var resource = OpenTelemetry.Resources.Resources.CreateServiceResource("my-service");
|
||||
Assert.Equal(5, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceNameKey, "my-service"), resource.Attributes);
|
||||
Assert.Single(resource.Attributes.Where(kvp => kvp.Key == Resource.ServiceNameKey));
|
||||
Assert.True(Guid.TryParse((string)resource.Attributes.Single(kvp => kvp.Key == Resource.ServiceInstanceIdKey).Value, out _));
|
||||
this.AssertDefaultAttributes(resource);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceNameAndInstance()
|
||||
{
|
||||
var resource = OpenTelemetry.Resources.Resources.CreateServiceResource("my-service", "123");
|
||||
Assert.Equal(5, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceNameKey, "my-service"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceInstanceIdKey, "123"), resource.Attributes);
|
||||
this.AssertDefaultAttributes(resource);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceNameAndInstanceAndNamespace()
|
||||
{
|
||||
var resource = OpenTelemetry.Resources.Resources.CreateServiceResource("my-service", "123", "my-namespace");
|
||||
Assert.Equal(6, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceNameKey, "my-service"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceInstanceIdKey, "123"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceNamespaceKey, "my-namespace"), resource.Attributes);
|
||||
this.AssertDefaultAttributes(resource);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_ServiceNameAndInstanceAndNamespaceAndVersion()
|
||||
{
|
||||
var resource = OpenTelemetry.Resources.Resources.CreateServiceResource("my-service", "123", "my-namespace", "semVer:1.2.3");
|
||||
Assert.Equal(7, resource.Attributes.Count());
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceNameKey, "my-service"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceInstanceIdKey, "123"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceNamespaceKey, "my-namespace"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(Resource.ServiceVersionKey, "semVer:1.2.3"), resource.Attributes);
|
||||
this.AssertDefaultAttributes(resource);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ServiceResource_NullParams()
|
||||
{
|
||||
var resource = OpenTelemetry.Resources.Resources.CreateServiceResource(null);
|
||||
Assert.Equal(3, resource.Attributes.Count());
|
||||
this.AssertDefaultAttributes(resource);
|
||||
}
|
||||
|
||||
private void AssertDefaultAttributes(Resource resource)
|
||||
{
|
||||
Assert.Contains(new KeyValuePair<string, object>(SemanticConventions.AttributeTelemetrySdkName, "opentelemetry"), resource.Attributes);
|
||||
Assert.Contains(new KeyValuePair<string, object>(SemanticConventions.AttributeTelemetrySdkLanguage, "dotnet"), resource.Attributes);
|
||||
var versionAttribute = resource.Attributes.Where(pair => pair.Key.Equals("telemetry.sdk.version"));
|
||||
Assert.Single(versionAttribute);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue