-
Notifications
You must be signed in to change notification settings - Fork 847
Open
Labels
bugSomething isn't workingSomething isn't workingneeds-triageNew issues which have not been classified or triaged by a community memberNew issues which have not been classified or triaged by a community memberpkg:OpenTelemetry.Exporter.OpenTelemetryProtocolIssues related to OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet packageIssues related to OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet package
Description
Package
OpenTelemetry.Exporter.OpenTelemetryProtocol
Package Version
Package Name | Version |
---|---|
OpenTelemetry.Extensions.Hosting | 1.13.0 |
OpenTelemetry | 1.13.0 |
OpenTelemetry.Exporter.OpenTelemetryProtocal | 1.13.0 |
Runtime Version
net9.0
Description
When environment variables are set after IConfiguration
is built (during WebHost building), even though they are set before exporters are configured, OtlpExporterOptions
does not pick them up.
Steps to Reproduce
You can run the code here: https://dotnetfiddle.net/aaHOPk
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Logging;
using OpenTelemetry.Trace;
using OpenTelemetry.Exporter;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("------------------------------Not Working----------------------------");
PrintEndpoint(NotWorking(args).Build());
Console.WriteLine();
Console.WriteLine("------------------------------Working----------------------------");
PrintEndpoint(Working(args).Build());
}
private const string TestEndpoint = "https://example.com:4317";
private static IHostBuilder NotWorking(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {})
.ConfigureServices((context, services) => {
// this happens after IConfiguration build, but before otlp export configuration
Environment.SetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT", TestEndpoint);
var otelBuilder = services.AddOpenTelemetry();
otelBuilder.WithTracing(tracer => {
tracer.AddOtlpExporter();
});
});
}
private static IHostBuilder Working(string[] args)
{
Environment.SetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT", TestEndpoint);
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {})
.ConfigureServices((context, services) => {
var otelBuilder = services.AddOpenTelemetry();
otelBuilder.WithTracing(tracer => {
tracer.AddOtlpExporter();
});
});
}
private static void PrintEndpoint(IHost host){
var option = host.Services.GetRequiredService<IOptions<OtlpExporterOptions>>();
var optionFromFactory = host.Services.GetRequiredService<IOptionsFactory<OtlpExporterOptions>>().Create(null);
Console.WriteLine($"expected: {TestEndpoint}, got: {option.Value.Endpoint}");
Console.WriteLine($"expected: {TestEndpoint}, got: {optionFromFactory.Endpoint}");
}
}
Expected Result
------------------------------Not Working----------------------------
expected: https://example.com:4317, got: https://example.com:4317/
expected: https://example.com:4317, got: https://example.com:4317/
------------------------------Working----------------------------
expected: https://example.com:4317, got: https://example.com:4317/
expected: https://example.com:4317, got: https://example.com:4317/
Actual Result
------------------------------Not Working----------------------------
expected: https://example.com:4317, got: http://localhost:4317/
expected: https://example.com:4317, got: http://localhost:4317/
------------------------------Working----------------------------
expected: https://example.com:4317, got: https://example.com:4317/
expected: https://example.com:4317, got: https://example.com:4317/
Additional Context
No response
Tip
React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1
or me too
, to help us triage it. Learn more here.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingneeds-triageNew issues which have not been classified or triaged by a community memberNew issues which have not been classified or triaged by a community memberpkg:OpenTelemetry.Exporter.OpenTelemetryProtocolIssues related to OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet packageIssues related to OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet package