Add OpenTelemetry for tracing and metrics instrumentation

This commit is contained in:
2025-06-21 11:56:17 +01:00
parent a78ca9efa1
commit f301e6b137
3 changed files with 52 additions and 34 deletions

View File

@@ -18,6 +18,10 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools"/>
<PackageReference Include="MimeKit"/> <PackageReference Include="MimeKit"/>
<PackageReference Include="OpenTelemetry" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
<PackageReference Include="Serilog"/> <PackageReference Include="Serilog"/>
<PackageReference Include="Serilog.Extensions.Logging"/> <PackageReference Include="Serilog.Extensions.Logging"/>
<PackageReference Include="Serilog.Sinks.Console"/> <PackageReference Include="Serilog.Sinks.Console"/>

View File

@@ -7,6 +7,8 @@ using Aaru.Server.Services;
using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
using DbContext = Aaru.Server.Database.DbContext; using DbContext = Aaru.Server.Database.DbContext;
@@ -77,6 +79,14 @@ builder.Logging.AddSerilog(new LoggerConfiguration().WriteTo
restrictedToMinimumLevel: LogEventLevel.Information) restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger()); .CreateLogger());
builder.Services.AddOpenTelemetry()
.WithTracing(tracerProviderBuilder => tracerProviderBuilder
.AddAspNetCoreInstrumentation() // <-- Adds ASP.NET Core telemetry sources
.AddHttpClientInstrumentation() // <-- Adds HttpClient telemetry sources
)
.WithMetrics(metricsProviderBuilder =>
metricsProviderBuilder.AddAspNetCoreInstrumentation().AddHttpClientInstrumentation());
// Add services to the container. // Add services to the container.
builder.Services.AddRazorComponents().AddInteractiveServerComponents(); builder.Services.AddRazorComponents().AddInteractiveServerComponents();

View File

@@ -1,38 +1,42 @@
<Project ToolsVersion="15.0"> <Project ToolsVersion="15.0">
<ItemGroup> <ItemGroup>
<PackageVersion Include="Aaru.CommonTypes" Version="6.0.0-alpha10"/> <PackageVersion Include="Aaru.CommonTypes" Version="6.0.0-alpha10" />
<PackageVersion Include="Aaru.Decoders" Version="6.0.0-alpha10"/> <PackageVersion Include="Aaru.Decoders" Version="6.0.0-alpha10" />
<PackageVersion Include="Aaru.Dto" Version="6.0.0-alpha10"/> <PackageVersion Include="Aaru.Dto" Version="6.0.0-alpha10" />
<PackageVersion Include="AsyncFixer" Version="1.6.0"/> <PackageVersion Include="AsyncFixer" Version="1.6.0" />
<PackageVersion Include="Blazor.Bootstrap" Version="3.3.1"/> <PackageVersion Include="Blazor.Bootstrap" Version="3.3.1" />
<PackageVersion Include="ChoPGP" Version="1.0.1.5"/> <PackageVersion Include="ChoPGP" Version="1.0.1.5" />
<PackageVersion Include="ErrorProne.NET.CoreAnalyzers" Version="0.1.2"/> <PackageVersion Include="ErrorProne.NET.CoreAnalyzers" Version="0.1.2" />
<PackageVersion Include="ErrorProne.NET.Structs" Version="0.1.2"/> <PackageVersion Include="ErrorProne.NET.Structs" Version="0.1.2" />
<PackageVersion Include="HtmlAgilityPack" Version="1.12.1"/> <PackageVersion Include="HtmlAgilityPack" Version="1.12.1" />
<PackageVersion Include="MailKit" Version="4.12.1"/> <PackageVersion Include="MailKit" Version="4.12.1" />
<PackageVersion Include="Markdig" Version="0.41.2"/> <PackageVersion Include="Markdig" Version="0.41.2" />
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="9.0.6"/> <PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="9.0.6" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.6"/> <PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.6" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.6"/> <PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.6" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.6"/> <PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.6" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.6"/> <PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.6" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.6"/> <PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.6" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="9.0.6"/> <PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="9.0.6" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.6"/> <PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.6" />
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.15"/> <PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.15" />
<PackageVersion Include="MimeKit" Version="4.12.0"/> <PackageVersion Include="MimeKit" Version="4.12.0" />
<PackageVersion Include="Philips.CodeAnalysis.MaintainabilityAnalyzers" Version="1.5.0"/> <PackageVersion Include="OpenTelemetry" Version="1.12.0" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2"/> <PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0-preview.3.efcore.9.0.0"/> <PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
<PackageVersion Include="Roslynator.Analyzers" Version="4.13.1"/> <PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
<PackageVersion Include="Roslynator.CodeAnalysis.Analyzers" Version="4.13.1"/> <PackageVersion Include="Philips.CodeAnalysis.MaintainabilityAnalyzers" Version="1.5.0" />
<PackageVersion Include="Roslynator.Formatting.Analyzers" Version="4.13.1"/> <PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
<PackageVersion Include="Serilog" Version="4.3.0"/> <PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0-preview.3.efcore.9.0.0" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.2"/> <PackageVersion Include="Roslynator.Analyzers" Version="4.13.1" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0"/> <PackageVersion Include="Roslynator.CodeAnalysis.Analyzers" Version="4.13.1" />
<PackageVersion Include="Serilog.Sinks.SyslogMessages" Version="4.0.0"/> <PackageVersion Include="Roslynator.Formatting.Analyzers" Version="4.13.1" />
<PackageVersion Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31"/> <PackageVersion Include="Serilog" Version="4.3.0" />
<PackageVersion Include="Text.Analyzers" Version="4.14.0"/> <PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.2" />
<PackageVersion Include="WebStoating.Markdig.PrismWithPlugins" Version="1.0.0"/> <PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageVersion Include="Serilog.Sinks.SyslogMessages" Version="4.0.0" />
<PackageVersion Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" />
<PackageVersion Include="Text.Analyzers" Version="4.14.0" />
<PackageVersion Include="WebStoating.Markdig.PrismWithPlugins" Version="1.0.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>