@@ -32,20 +32,20 @@ public static IServiceCollection AddGameFrameXOpenTelemetry(this IServiceCollect
3232 return services ;
3333 }
3434
35- var serviceName = string . IsNullOrEmpty ( servicePrefix )
35+ var serviceName = string . IsNullOrEmpty ( servicePrefix )
3636 ? $ "{ setting . ServerName } -{ setting . TagName } "
3737 : $ "{ servicePrefix } :{ setting . ServerName } -{ setting . TagName } ";
3838
3939 var tracingSource = string . IsNullOrEmpty ( tracingSourcePrefix )
40- ? $ "GameFrameX.{ setting . ServerName } .{ setting . TagName } "
41- : $ "{ tracingSourcePrefix } :GameFrameX.{ setting . ServerName } .{ setting . TagName } ";
40+ ? $ "GameFrameX.{ setting . ServerName } .{ setting . TagName } "
41+ : $ "{ tracingSourcePrefix } :GameFrameX.{ setting . ServerName } .{ setting . TagName } ";
4242
4343 var builder = services . AddOpenTelemetry ( )
44- . ConfigureResource ( configure =>
45- {
46- configure . AddService ( serviceName , string . IsNullOrEmpty ( servicePrefix ) ? "GameFrameX" : "GameFrameX.HTTP" )
47- . AddTelemetrySdk ( ) ;
48- } ) ;
44+ . ConfigureResource ( configure =>
45+ {
46+ configure . AddService ( serviceName , string . IsNullOrEmpty ( servicePrefix ) ? "GameFrameX" : "GameFrameX.HTTP" )
47+ . AddTelemetrySdk ( ) ;
48+ } ) ;
4949
5050 if ( setting . IsOpenTelemetryMetrics )
5151 {
@@ -60,9 +60,18 @@ public static IServiceCollection AddGameFrameXOpenTelemetry(this IServiceCollect
6060 // Metrics provides by ASP.NET Core in .NET 8
6161 configure . AddMeter ( "Microsoft.AspNetCore.Hosting" ) ;
6262 configure . AddMeter ( "Microsoft.AspNetCore.Server.Kestrel" ) ;
63+
6364 // Metrics provided by System.Net libraries
6465 configure . AddMeter ( "System.Net.Http" ) ;
6566 configure . AddMeter ( "System.Net.NameResolution" ) ;
67+
68+ // Metrics provided by .NET Runtime (available in .NET 9+)
69+ configure . AddMeter ( "System.Runtime" ) ;
70+
71+ // Additional ASP.NET Core metrics for Blazor components (if applicable)
72+ // configure.AddMeter("Microsoft.AspNetCore.Components");
73+ // configure.AddMeter("Microsoft.AspNetCore.Components.Lifecycle");
74+ // configure.AddMeter("Microsoft.AspNetCore.Components.Server.Circuits");
6675 configure . AddPrometheusExporter ( ) ;
6776 } ) ;
6877 }
@@ -97,6 +106,7 @@ public static ILoggingBuilder AddGameFrameXOpenTelemetryLogging(this ILoggingBui
97106 {
98107 logging . AddOpenTelemetry ( configure => { configure . UseGrafana ( ) ; } ) ;
99108 }
109+
100110 return logging ;
101111 }
102112
@@ -121,59 +131,65 @@ public static async Task<WebApplication> CreateMetricsServerAsync(AppSetting set
121131 }
122132
123133 var builder = WebApplication . CreateBuilder ( ) ;
124-
125- var serviceName = string . IsNullOrEmpty ( servicePrefix )
134+
135+ var serviceName = string . IsNullOrEmpty ( servicePrefix )
126136 ? $ "{ setting . ServerName } -{ setting . TagName } -Metrics"
127137 : $ "{ servicePrefix } :{ setting . ServerName } -{ setting . TagName } -Metrics";
128138
129139 // 配置Web主机
130- builder . WebHost . UseKestrel ( options =>
131- {
132- options . ListenAnyIP ( setting . MetricsPort ) ;
133- } ) ;
140+ builder . WebHost . UseKestrel ( options => { options . ListenAnyIP ( setting . MetricsPort ) ; } ) ;
134141
135142 // 配置OpenTelemetry指标
136143 builder . Services . AddOpenTelemetry ( )
137- . ConfigureResource ( configure =>
138- {
139- configure . AddService ( serviceName , "GameFrameX.Metrics" )
140- . AddTelemetrySdk ( ) ;
141- } )
142- . WithMetrics ( configure =>
143- {
144- configure . AddAspNetCoreInstrumentation ( ) ;
145- if ( EnvironmentHelper . IsDevelopment ( ) && LogOptions . Default . IsConsole )
146- {
147- configure . AddConsoleExporter ( ) ;
148- }
149-
150- // Metrics provides by ASP.NET Core in .NET 8
151- configure . AddMeter ( "Microsoft.AspNetCore.Hosting" ) ;
152- configure . AddMeter ( "Microsoft.AspNetCore.Server.Kestrel" ) ;
153- // Metrics provided by System.Net libraries
154- configure . AddMeter ( "System.Net.Http" ) ;
155- configure . AddMeter ( "System.Net.NameResolution" ) ;
156- configure . AddPrometheusExporter ( ) ;
157- } )
158- . UseGrafana ( ) ;
144+ . ConfigureResource ( configure =>
145+ {
146+ configure . AddService ( serviceName , "GameFrameX.Metrics" )
147+ . AddTelemetrySdk ( ) ;
148+ } )
149+ . WithMetrics ( configure =>
150+ {
151+ configure . AddAspNetCoreInstrumentation ( ) ;
152+ if ( EnvironmentHelper . IsDevelopment ( ) && LogOptions . Default . IsConsole )
153+ {
154+ configure . AddConsoleExporter ( ) ;
155+ }
156+
157+ // Metrics provides by ASP.NET Core in .NET 8
158+ configure . AddMeter ( "Microsoft.AspNetCore.Hosting" ) ;
159+ configure . AddMeter ( "Microsoft.AspNetCore.Server.Kestrel" ) ;
160+
161+ // Metrics provided by System.Net libraries
162+ configure . AddMeter ( "System.Net.Http" ) ;
163+ configure . AddMeter ( "System.Net.NameResolution" ) ;
164+
165+ // Metrics provided by .NET Runtime (available in .NET 9+)
166+ configure . AddMeter ( "System.Runtime" ) ;
167+
168+ // Additional ASP.NET Core metrics for Blazor components (if applicable)
169+ // configure.AddMeter("Microsoft.AspNetCore.Components");
170+ // configure.AddMeter("Microsoft.AspNetCore.Components.Lifecycle");
171+ // configure.AddMeter("Microsoft.AspNetCore.Components.Server.Circuits");
172+ configure . AddPrometheusExporter ( ) ;
173+ } )
174+ . UseGrafana ( ) ;
159175
160176 var app = builder . Build ( ) ;
161-
177+
162178 // 配置Prometheus端点
163179 app . MapPrometheusScrapingEndpoint ( ) ;
164-
180+
165181 // 添加健康检查端点
166182 app . MapGet ( "/health" , ( ) => "OK" ) ;
167-
183+
168184 await app . StartAsync ( ) ;
169-
185+
170186 var ipList = NetHelper . GetLocalIpList ( ) ;
171187 foreach ( var ip in ipList )
172188 {
173189 LogHelper . InfoConsole ( $ "独立 Prometheus metrics 端点已启用: http://{ ip } :{ setting . MetricsPort } /metrics") ;
174190 LogHelper . InfoConsole ( $ "独立 Metrics 健康检查端点: http://{ ip } :{ setting . MetricsPort } /health") ;
175191 }
176-
192+
177193 return app ;
178194 }
179195}
0 commit comments