Files
azure-examples/GrafanaBlazor/BlazorApp/Program.cs
2026-01-28 10:29:49 -06:00

68 lines
1.7 KiB
C#

using Microsoft.AspNetCore.Components;
using BlazorApp.Components;
using Serilog;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using OpenTelemetry.Metrics;
var builder = WebApplication.CreateBuilder(args);
// Configure Serilog
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("logs/blazorapp-.log", rollingInterval: RollingInterval.Day)
.CreateLogger();
builder.Host.UseSerilog();
// Add services to the container
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
// Add Application Insights
builder.Services.AddApplicationInsightsTelemetry();
// Add OpenTelemetry
builder.Services.AddOpenTelemetry()
.ConfigureResource(resource => resource
.AddService(serviceName: "BlazorApp"))
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddConsoleExporter())
.WithMetrics(metrics => metrics
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddConsoleExporter());
// Add health checks
builder.Services.AddHealthChecks();
var app = builder.Build();
// Configure the HTTP request pipeline
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAntiforgery();
// Enable Prometheus metrics endpoint
app.UseMetricServer();
app.UseHttpMetrics();
// Map health check endpoint
app.MapHealthChecks("/health");
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.Logger.LogInformation("BlazorApp starting up...");
app.Run();