11using System ;
2+ using System . Collections . Generic ;
23using Microsoft . Extensions . Configuration ;
34using Microsoft . Extensions . DependencyInjection ;
5+ using OpenTelemetry ;
46using OpenTelemetry . Context . Propagation ;
7+ using OpenTelemetry . Resources ;
58using OpenTelemetry . Trace ;
6- using OpenTelemetry . Trace . Samplers ;
79
810namespace OpenCodeFoundation . OpenTelemetry
911{
@@ -46,10 +48,10 @@ public static T GetOptions<T>(
4648
4749 private static void ConfigureOpenTelemetry ( IServiceCollection services , OpenTelemetryOptions openTelemetryOptions )
4850 {
49- services . AddOpenTelemetry ( configure =>
51+ services . AddOpenTelemetryTracing ( configure =>
5052 {
5153 ConfigureSampler ( openTelemetryOptions , configure ) ;
52- ConfigureInstrumentations ( openTelemetryOptions , configure ) ;
54+ ConfigureInstrumentation ( openTelemetryOptions , configure ) ;
5355 ConfigureExporters ( openTelemetryOptions , configure ) ;
5456 } ) ;
5557 }
@@ -66,34 +68,42 @@ private static void ConfigureExporters(OpenTelemetryOptions openTelemetryOptions
6668 {
6769 if ( openTelemetryOptions . Jaeger . Enabled )
6870 {
69- configure . UseJaegerExporter ( config =>
70- {
71- config . ServiceName = openTelemetryOptions . Jaeger . ServiceName ;
71+ configure . SetResourceBuilder ( ResourceBuilder . CreateDefault ( )
72+ . AddService ( openTelemetryOptions . Jaeger . ServiceName ) ) ;
7273
74+ configure . AddJaegerExporter ( config =>
75+ {
7376 config . AgentHost = openTelemetryOptions . Jaeger . Host ;
7477 config . AgentPort = openTelemetryOptions . Jaeger . Port ;
7578 } ) ;
7679 }
7780 }
7881
79- private static void ConfigureInstrumentations ( OpenTelemetryOptions openTelemetryOptions , TracerProviderBuilder configure )
82+ private static void ConfigureInstrumentation ( OpenTelemetryOptions openTelemetryOptions , TracerProviderBuilder configure )
83+ {
84+ Sdk . SetDefaultTextMapPropagator ( GetPropagator ( openTelemetryOptions ) ) ;
85+
86+ configure . AddAspNetCoreInstrumentation ( ) ;
87+
88+ configure . AddHttpClientInstrumentation ( ) ;
89+
90+ configure . AddSqlClientInstrumentation ( ) ;
91+ }
92+
93+ private static TextMapPropagator GetPropagator ( OpenTelemetryOptions openTelemetryOptions )
8094 {
81- configure . AddAspNetCoreInstrumentation ( config =>
95+ var propagators = new List < TextMapPropagator > ( )
8296 {
83- config . TextFormat = GetTextFormat ( openTelemetryOptions ) ;
84- } ) ;
97+ new TraceContextPropagator ( ) ,
98+ new BaggagePropagator ( ) ,
99+ } ;
85100
86- configure . AddHttpClientInstrumentation ( config =>
101+ if ( openTelemetryOptions . Istio )
87102 {
88- config . TextFormat = GetTextFormat ( openTelemetryOptions ) ;
89- } ) ;
103+ propagators . Add ( new B3Propagator ( ) ) ;
104+ }
90105
91- configure . AddSqlClientDependencyInstrumentation ( ) ;
106+ return new CompositeTextMapPropagator ( propagators ) ;
92107 }
93-
94- private static ITextFormat GetTextFormat ( OpenTelemetryOptions openTelemetryOptions )
95- => openTelemetryOptions . Istio
96- ? new B3Format ( )
97- : ( ITextFormat ) new TraceContextFormat ( ) ;
98108 }
99109}
0 commit comments