Update OtlpExporter options (#1781)
* Modify OtlpExporterOptions * Updated CHANGELOG.md * Address PR comments * Address PR comments * Updated the Timeout property summary * Updated CHANGELOG.md Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
This commit is contained in:
parent
fbfdb7030d
commit
e0bcc80f33
|
|
@ -11,9 +11,11 @@ OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.get -> string
|
|||
OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> Grpc.Core.Metadata
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> string
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.OtlpExporterOptions() -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.get -> int
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.set -> void
|
||||
OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.Export(in OpenTelemetry.Batch<System.Diagnostics.Activity> activityBatch) -> OpenTelemetry.ExportResult
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
|
|
|
|||
|
|
@ -11,9 +11,11 @@ OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.get -> string
|
|||
OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> Grpc.Core.Metadata
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> string
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.OtlpExporterOptions() -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.get -> int
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.set -> void
|
||||
OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.Export(in OpenTelemetry.Batch<System.Diagnostics.Activity> activityBatch) -> OpenTelemetry.ExportResult
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
|
|
|
|||
|
|
@ -11,9 +11,11 @@ OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.get -> string
|
|||
OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> Grpc.Core.Metadata
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> string
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.OtlpExporterOptions() -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.get -> int
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.set -> void
|
||||
OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.Export(in OpenTelemetry.Batch<System.Diagnostics.Activity> activityBatch) -> OpenTelemetry.ExportResult
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
|
|
|
|||
|
|
@ -9,9 +9,11 @@ OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.get -> System.Uri
|
|||
OpenTelemetry.Exporter.OtlpExporterOptions.Endpoint.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.ExportProcessorType.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> Grpc.Core.Metadata
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.get -> string
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.Headers.set -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.OtlpExporterOptions() -> void
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.get -> int
|
||||
OpenTelemetry.Exporter.OtlpExporterOptions.TimeoutMilliseconds.set -> void
|
||||
OpenTelemetry.Trace.OtlpTraceExporterHelperExtensions
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.Export(in OpenTelemetry.Batch<System.Diagnostics.Activity> activityBatch) -> OpenTelemetry.ExportResult
|
||||
override OpenTelemetry.Exporter.OtlpTraceExporter.OnShutdown(int timeoutMilliseconds) -> bool
|
||||
|
|
|
|||
|
|
@ -6,8 +6,12 @@
|
|||
`OpenTelemetry.Exporter` namespace.
|
||||
([#1770](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1770))
|
||||
* Changed default port for OTLP Exporter from 55680 to 4317
|
||||
* Default ServiceName, if not found in Resource, is obtained from SDK
|
||||
using GetDefaultResource().
|
||||
* Default ServiceName, if not found in Resource, is obtained from SDK using
|
||||
GetDefaultResource().
|
||||
* Modified the data type of Headers option to string; Added a new option called
|
||||
TimeoutMilliseconds for computing the `deadline` to be used by gRPC client for
|
||||
`Export`
|
||||
([#1781](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1781))
|
||||
|
||||
## 1.0.0-rc2
|
||||
|
||||
|
|
|
|||
|
|
@ -62,9 +62,15 @@ namespace OpenTelemetry.Exporter
|
|||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets optional headers for the connection.
|
||||
/// Gets or sets optional headers for the connection. Refer to the <a href="https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#specifying-headers-via-environment-variables">
|
||||
/// specification</a> for information on the expected format for Headers.
|
||||
/// </summary>
|
||||
public Metadata Headers { get; set; } = new Metadata();
|
||||
public string Headers { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the max waiting time (in milliseconds) for the backend to process each span batch. The default value is 10000.
|
||||
/// </summary>
|
||||
public int TimeoutMilliseconds { get; set; } = 10000;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the export processor type to be used with the OpenTelemetry Protocol Exporter.
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ namespace OpenTelemetry.Exporter
|
|||
#endif
|
||||
private readonly OtlpCollector.TraceService.ITraceServiceClient traceClient;
|
||||
private readonly Metadata headers;
|
||||
private DateTime deadline;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="OtlpTraceExporter"/> class.
|
||||
|
|
@ -63,7 +64,12 @@ namespace OpenTelemetry.Exporter
|
|||
internal OtlpTraceExporter(OtlpExporterOptions options, OtlpCollector.TraceService.ITraceServiceClient traceServiceClient = null)
|
||||
{
|
||||
this.options = options ?? throw new ArgumentNullException(nameof(options));
|
||||
this.headers = options.Headers ?? throw new ArgumentException("Headers were not provided on options.", nameof(options));
|
||||
this.headers = GetMetadataFromHeaders(options.Headers);
|
||||
if (this.options.TimeoutMilliseconds <= 0)
|
||||
{
|
||||
throw new ArgumentException("Timeout value provided is not a positive number.", nameof(this.options.TimeoutMilliseconds));
|
||||
}
|
||||
|
||||
if (traceServiceClient != null)
|
||||
{
|
||||
this.traceClient = traceServiceClient;
|
||||
|
|
@ -97,10 +103,11 @@ namespace OpenTelemetry.Exporter
|
|||
OtlpCollector.ExportTraceServiceRequest request = new OtlpCollector.ExportTraceServiceRequest();
|
||||
|
||||
request.AddBatch(this.ProcessResource, activityBatch);
|
||||
this.deadline = DateTime.UtcNow.AddMilliseconds(this.options.TimeoutMilliseconds);
|
||||
|
||||
try
|
||||
{
|
||||
this.traceClient.Export(request, headers: this.headers);
|
||||
this.traceClient.Export(request, headers: this.headers, deadline: this.deadline);
|
||||
}
|
||||
catch (RpcException ex)
|
||||
{
|
||||
|
|
@ -159,5 +166,29 @@ namespace OpenTelemetry.Exporter
|
|||
|
||||
return Task.WaitAny(new Task[] { this.channel.ShutdownAsync(), Task.Delay(timeoutMilliseconds) }) == 0;
|
||||
}
|
||||
|
||||
private static Metadata GetMetadataFromHeaders(string headers)
|
||||
{
|
||||
var metadata = new Metadata();
|
||||
if (!string.IsNullOrEmpty(headers))
|
||||
{
|
||||
Array.ForEach(
|
||||
headers.Split(','),
|
||||
(pair) =>
|
||||
{
|
||||
var keyValueData = pair.Split('=');
|
||||
if (keyValueData.Length != 2)
|
||||
{
|
||||
throw new ArgumentException("Headers provided in an invalid format.");
|
||||
}
|
||||
|
||||
var key = keyValueData[0].Trim();
|
||||
var value = keyValueData[1].Trim();
|
||||
metadata.Add(key, value);
|
||||
});
|
||||
}
|
||||
|
||||
return metadata;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue