Skip to content

Commit d74ef1a

Browse files
committed
[增加]1. 增加监控相关的接口
1 parent 4ba1830 commit d74ef1a

File tree

3 files changed

+57
-11
lines changed

3 files changed

+57
-11
lines changed

GameFrameX.StartUp/AppStartUpByHTTPServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ private async Task StartHttpServer(List<BaseHttpHandler> baseHandler, Func<strin
206206
{
207207
var builder = WebApplication.CreateBuilder();
208208

209-
var development = Setting.HttpIsDevelopment || builder.Environment.IsDevelopment();
209+
var development = Setting.HttpIsDevelopment || EnvironmentHelper.IsDevelopment();
210210

211211
var openApiInfo = GetOpenApiInfo();
212212
if (development)

GameFrameX.StartUp/AppStartUpByServer.cs

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
using GameFrameX.Utility;
1919
using GameFrameX.Utility.Extensions;
2020
using GameFrameX.Utility.Setting;
21+
using Grafana.OpenTelemetry;
2122
using Microsoft.AspNetCore.Builder;
2223
using Microsoft.AspNetCore.Diagnostics;
2324
using Microsoft.AspNetCore.Hosting;
@@ -27,10 +28,12 @@
2728
using Microsoft.Extensions.Hosting;
2829
using Microsoft.Extensions.Logging;
2930
using Microsoft.OpenApi.Models;
31+
using OpenTelemetry.Metrics;
3032
using OpenTelemetry.Resources;
3133
using OpenTelemetry.Trace;
3234
using Serilog;
3335
using CloseReason = GameFrameX.SuperSocket.WebSocket.CloseReason;
36+
using Sdk = OpenTelemetry.Sdk;
3437

3538
namespace GameFrameX.StartUp;
3639

@@ -257,28 +260,67 @@ private async Task StartServer<TMessageDecoderHandler>(List<BaseHttpHandler> bas
257260
// await StartHttpServerAsync(hostBuilder,baseHandler, httpFactory, aopHandlerTypes, minimumLevelLogLevel);
258261
await StartHttpServer(baseHandler, httpFactory, aopHandlerTypes, minimumLevelLogLevel);
259262

260-
// 配置日志
261-
multipleServerHostBuilder.ConfigureLogging(logging =>
262-
{
263-
logging.ClearProviders();
264-
logging.AddSerilog(Log.Logger, true);
265-
logging.SetMinimumLevel(minimumLevelLogLevel);
266-
});
267-
268263
// 配置监控和跟踪
269264
multipleServerHostBuilder.ConfigureServices(services =>
270265
{
271266
services.AddOpenTelemetry()
272267
.ConfigureResource(configure => { configure.AddService(Setting.ServerName + "-" + Setting.TagName, "GameFrameX").AddTelemetrySdk(); })
268+
.WithMetrics(configure =>
269+
{
270+
configure.AddAspNetCoreInstrumentation();
271+
if (EnvironmentHelper.IsDevelopment())
272+
{
273+
configure.AddConsoleExporter();
274+
}
275+
276+
// Metrics provides by ASP.NET Core in .NET 8
277+
configure.AddMeter("Microsoft.AspNetCore.Hosting");
278+
configure.AddMeter("Microsoft.AspNetCore.Server.Kestrel");
279+
// Metrics provided by System.Net libraries
280+
configure.AddMeter("System.Net.Http");
281+
configure.AddMeter("System.Net.NameResolution");
282+
configure.AddPrometheusExporter();
283+
})
273284
.WithTracing(configure =>
274285
{
275286
configure.AddAspNetCoreInstrumentation();
276-
configure.AddConsoleExporter();
277-
});
287+
configure.AddHttpClientInstrumentation();
288+
configure.AddSource("GameFrameX." + Setting.ServerName + "." + Setting.TagName);
289+
290+
// if (tracingOtlpEndpoint != null)
291+
// {
292+
// tracing.AddOtlpExporter(otlpOptions => { otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint); });
293+
// }
294+
// else
295+
{
296+
if (EnvironmentHelper.IsDevelopment())
297+
{
298+
configure.AddConsoleExporter();
299+
}
300+
}
301+
}).UseGrafana();
302+
});
303+
// 配置日志
304+
multipleServerHostBuilder.ConfigureLogging(logging =>
305+
{
306+
logging.ClearProviders();
307+
logging.AddSerilog(Log.Logger, true);
308+
logging.SetMinimumLevel(minimumLevelLogLevel);
309+
logging.AddOpenTelemetry(configure => { configure.UseGrafana(); });
278310
});
279311

312+
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
313+
.UseGrafana(config =>
314+
{
315+
config.ServiceName = Setting.ServerName + "-" + Setting.TagName;
316+
config.ServiceVersion = Assembly.GetCallingAssembly().ImageRuntimeVersion;
317+
config.ServiceInstanceId = Setting.ServerId.ToString();
318+
config.DeploymentEnvironment = EnvironmentHelper.GetEnvironmentName().IsNullOrEmpty() ? Setting.IsDebug ? "Debug" : "Release" : EnvironmentHelper.GetEnvironmentName();
319+
})
320+
.Build();
280321
// 构建并启动服务器
281322
_gameServer = multipleServerHostBuilder.Build();
323+
282324
await _gameServer.StartAsync();
283325
}
284326

GameFrameX.StartUp/GameFrameX.StartUp.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,14 @@
4949
<PackageReference Include="GameFrameX.SuperSocket.Server" Version="1.2.0" />
5050
<PackageReference Include="CommandLineParser" Version="2.9.1" />
5151
<PackageReference Include="GameFrameX.SuperSocket.Udp" Version="1.2.0" />
52+
<PackageReference Include="Grafana.OpenTelemetry" Version="1.2.0" />
5253
<PackageReference Include="OpenTelemetry.Api" Version="1.11.2" />
5354
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.11.2" />
55+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.2" />
56+
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.11.2-beta.1" />
5457
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.11.2" />
5558
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.11.1" />
59+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.11.1" />
5660
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.3.0" />
5761
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.12" />
5862
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="8.1.1" />

0 commit comments

Comments
 (0)