在此视频中:https://youtu.be/BnjHArsYGLM?si=hzogiatb4-323S&t=463 @SamSpencer 和 @NoaFolk 谈论 OpenTelemetry 和 .NET8。
7:43 左右,Noa 谈论独立的 Aspire 仪表板以及如何在无需完整 Aspire 项目设置的情况下使用它。
遗憾的是他们没有共享工作仓库。
我使用 .NET 8 的新模板创建了一个新的 Blazor WebApp(该模板创建两个项目,一个服务器端和一个客户端),并添加了 OpenTelemetry。我使用 ConsoleExporter,我可以看到它正在按照我想要的方式进行日志记录。我什至添加了一些指标。
但我无法让仪表板工作。还有其他人能做到这一点吗?
这是我的 Program.cs,在我的服务器端项目中:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<CustomMeters>();
builder.Services.AddOpenTelemetry()
.WithMetrics(metrics => metrics
.AddMeter("Microsoft.AspNetCore.Hosting")
.AddMeter("Microsoft.AspNetCore.Server.Kestrel")
.AddMeter("Microsoft.AspNetCore.Http.Connections")
.AddMeter("System.NET.Http")
.AddHttpClientInstrumentation()
.AddAspNetCoreInstrumentation()
.AddOtlpExporter()) // <== This should create the dashboard
.WithTracing(tracing => tracing
.SetSampler(new AlwaysOnSampler())
.AddHttpClientInstrumentation()
.AddAspNetCoreInstrumentation()
);
// Clear default logging providers used by WebApplication host.
builder.Logging.ClearProviders();
builder.Logging.AddOpenTelemetry(options =>
{
options.AddConsoleExporter();
options.AddOtlpExporter(otlpOptions =>
otlpOptions.Endpoint = new Uri(builder.Configuration.GetValue("Otlp:Endpoint", defaultValue: "http://localhost:4317")!));
});
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents()
.AddInteractiveWebAssemblyComponents();
var app = builder.Build();
[..]
答案就在评论里。 请参阅 https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/dashboard/standalone 了解可工作的独立仪表板。 神奇的酱汁是:
docker run --rm -it -p 18888:18888 -p 4317:18889 -d --name aspire-dashboard mcr.microsoft.com/dotnet/aspire-dashboard:8.1.0
然后在 Blazor 服务器中将 ENV VAR 设置为:
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhos