Skip to content

Commit bd2e01e

Browse files
committed
[增加]1. 增加HTTP的 OpenTelemetry 处理
1 parent 5be4fe2 commit bd2e01e

File tree

2 files changed

+72
-31
lines changed

2 files changed

+72
-31
lines changed

GameFrameX.StartUp/AppStartUpByHTTPServer.cs

Lines changed: 68 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using GameFrameX.SuperSocket.Server.Host;
88
using GameFrameX.Utility;
99
using GameFrameX.Utility.Setting;
10+
using Grafana.OpenTelemetry;
1011
using Microsoft.AspNetCore.Builder;
1112
using Microsoft.AspNetCore.Diagnostics;
1213
using Microsoft.AspNetCore.Hosting;
@@ -15,6 +16,7 @@
1516
using Microsoft.Extensions.Hosting;
1617
using Microsoft.Extensions.Logging;
1718
using Microsoft.OpenApi.Models;
19+
using OpenTelemetry.Metrics;
1820
using OpenTelemetry.Resources;
1921
using OpenTelemetry.Trace;
2022
using Serilog;
@@ -200,37 +202,73 @@ private async Task StartHttpServer(List<BaseHttpHandler> baseHandler, Func<strin
200202
}
201203

202204
// 配置Web主机
203-
builder.WebHost.UseKestrel(options =>
204-
{
205-
options.ListenAnyIP(Setting.HttpPort);
206-
207-
if (Setting.HttpsPort > 0 && NetHelper.PortIsAvailable(Setting.HttpsPort))
208-
{
209-
throw new NotImplementedException("HTTPS 未实现,请取消HTTPS端口配置");
210-
}
211-
})
212-
.ConfigureLogging(logging =>
213-
{
214-
logging.ClearProviders();
215-
logging.AddSerilog(Log.Logger);
216-
logging.SetMinimumLevel(minimumLevelLogLevel);
217-
})
218-
// 配置OpenTelemetry服务
219-
.ConfigureServices(services =>
220-
{
221-
services.AddOpenTelemetry()
222-
.ConfigureResource(configure =>
223-
{
224-
configure.AddService("HTTP:" + Setting.ServerName + "-" + Setting.TagName, "GameFrameX.HTTP")
225-
.AddTelemetrySdk();
226-
})
227-
.WithTracing(configure =>
228-
{
229-
configure.AddAspNetCoreInstrumentation();
230-
configure.AddConsoleExporter();
231-
});
232-
});
205+
var hostBuilder = builder.WebHost.UseKestrel(options =>
206+
{
207+
options.ListenAnyIP(Setting.HttpPort);
208+
209+
if (Setting.HttpsPort > 0 && NetHelper.PortIsAvailable(Setting.HttpsPort))
210+
{
211+
throw new NotImplementedException("HTTPS 未实现,请取消HTTPS端口配置");
212+
}
213+
});
233214

215+
if (Setting.IsOpenTelemetry)
216+
{
217+
// 配置OpenTelemetry服务
218+
hostBuilder.ConfigureServices(services =>
219+
{
220+
var openTelemetryBuilder = services.AddOpenTelemetry()
221+
.ConfigureResource(configure =>
222+
{
223+
configure.AddService("HTTP:" + Setting.ServerName + "-" + Setting.TagName, "GameFrameX.HTTP")
224+
.AddTelemetrySdk();
225+
});
226+
if (Setting.IsOpenTelemetryMetrics)
227+
{
228+
openTelemetryBuilder.WithMetrics(configure =>
229+
{
230+
configure.AddAspNetCoreInstrumentation();
231+
if (EnvironmentHelper.IsDevelopment())
232+
{
233+
configure.AddConsoleExporter();
234+
}
235+
236+
// Metrics provides by ASP.NET Core in .NET 8
237+
configure.AddMeter("Microsoft.AspNetCore.Hosting");
238+
configure.AddMeter("Microsoft.AspNetCore.Server.Kestrel");
239+
// Metrics provided by System.Net libraries
240+
configure.AddMeter("System.Net.Http");
241+
configure.AddMeter("System.Net.NameResolution");
242+
configure.AddPrometheusExporter();
243+
});
244+
}
245+
246+
if (Setting.IsOpenTelemetryTracing)
247+
{
248+
openTelemetryBuilder.WithTracing(configure =>
249+
{
250+
configure.AddAspNetCoreInstrumentation();
251+
configure.AddHttpClientInstrumentation();
252+
configure.AddSource("HTTP:GameFrameX." + Setting.ServerName + "." + Setting.TagName);
253+
if (EnvironmentHelper.IsDevelopment())
254+
{
255+
configure.AddConsoleExporter();
256+
}
257+
});
258+
}
259+
});
260+
}
261+
262+
hostBuilder.ConfigureLogging(logging =>
263+
{
264+
logging.ClearProviders();
265+
logging.AddSerilog(Log.Logger);
266+
logging.SetMinimumLevel(minimumLevelLogLevel);
267+
if (Setting.IsOpenTelemetry)
268+
{
269+
logging.AddOpenTelemetry(configure => { configure.UseGrafana(); });
270+
}
271+
});
234272
var app = builder.Build();
235273

236274
// 开发环境下的Swagger UI配置

GameFrameX.StartUp/AppStartUpByServer.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,10 @@ private async Task StartServer<TMessageDecoderHandler>(List<BaseHttpHandler> bas
311311
logging.ClearProviders();
312312
logging.AddSerilog(Log.Logger, true);
313313
logging.SetMinimumLevel(minimumLevelLogLevel);
314-
logging.AddOpenTelemetry(configure => { configure.UseGrafana(); });
314+
if (Setting.IsOpenTelemetry)
315+
{
316+
logging.AddOpenTelemetry(configure => { configure.UseGrafana(); });
317+
}
315318
});
316319

317320
using var tracerProvider = Sdk.CreateTracerProviderBuilder()

0 commit comments

Comments
 (0)