Att använda Grafana och Prometheus för att övervaka ASP
Inleiding
Monitoring är en viktig del av att upprätthålla hälsan och prestationen hos dina applikationer. Jag har redan den här sidan som övervakar användarens besök genom Umami och undantag och fel med Seq men nu ville jag lägga till utvecklingskontroll till blandningen I den här guiden, utforskar vi hur man sätter upp övervakning för sina ASP-applicationer .NET Core-applikationer med hjälp av Grafana och Prometheus
Du kan förstås använda Grafana Cloud service, men för den här guiden, fokuserar vi på att installera allt lokalt så att du kan ha full kontroll över din övervakningstegM SK2
Målet är att få en dashboard som den här

Docker
Som vanligt med den här sidan ville jag lägga till de Grafana och Prometheus elementen i min docker-kompositionsdatei.
Här kan ni se att jag sätter upp prometheus och grafana-tjänster. De använder min vanliga app _ nätverket och har dockermängder för att hålla data kvar
Docker kompilerar filet
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- prometheus-data:/prometheus
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
- app_network
grafana:
image: grafana/grafana:latest
container_name: grafana
labels:
- "com.centurylinklabs.watchtower.enable=true"
volumes:
- grafana-data:/var/lib/grafana
networks:
- app_network
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=testpassword1234
- volumes:
grafana-data:
prometheus-data:
Du kommer att se att jag sätter upp ett standardpasswort. Var säker och ändra det på första gången.
Du kommer att lägga märke till att jag inte kartlägger några porter här.
Optionella porter för att fungera lokalt
Om du vill så kan du lägga till
# Prometheus
ports:
- "9090:9090"
# Grafana
ports:
- "3000:3000"
Det kan vara praktiskt om du sätter igång applikationen lokalt.
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- "9090:9090"
networks:
- monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
networks:
- monitoring
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
networks:
monitoring:
driver: bridge
Prometheus Konfiguration
Sedan lägger vi till en ny prometheus.yml file to configure Prometheus to scrape metrics from our ASP
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'mostlylucid'
metrics_path: /metrics
scheme: http
static_configs:
- targets: ['mostlylucid:8080']
Här ser ni att jag använder den interna namnet mostlulucid som är namnet på min dockertjänster och den standardporten för '
I' ska beskriva hur man gör det här i ASP .NET Core kort
ASP.NET Kernapplikation
Jag följde instruktioner finns här för att sätta upp detta.
Du behöver först lägga till OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet paket till ditt ASP
dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore
Next, du behöver konfigurera din application för att exponera mätningar Program.cs file, kan du lägga till följande kod
services.AddOpenTelemetry()
.WithMetrics(builder =>
{
builder.AddPrometheusExporter();
builder.AddMeter("Microsoft.AspNetCore.Hosting", "Microsoft.AspNetCore.Server.Kestrel");
});
app.MapPrometheusScrapingEndpoint();
Detta ger Endpoint och data för Prometheus att skrapa och sätter upp två 'Meters' som ger resultatdata för ASPM SK2NET Core och Kestrel .
uppdatera
Jag tillbringade lite tid med att bläddra med . Det här är en ny feature i | . | NET | МSK2 | och är fortfarande lite fläckig så det verkar |. | Den konfigurationen ovanför ger de grundläggande egenskaperna du behöver för ASP | . | Net brädan, men där |' | finns mer information som du kan skicka till Prometheus
Först den senaste beta-versionen av OpenTelemetry.
dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore --version 1.9.0-beta.2
Sedan kan du lägga till en mer komplett uppsättning mätare i din application som så:
services.AddOpenTelemetry()
.WithMetrics(builder =>
{
builder.AddPrometheusExporter();
builder.AddAspNetCoreInstrumentation();
builder.AddRuntimeInstrumentation();
builder.AddHttpClientInstrumentation();
});
Om du F12 in i dessa kan du se att de lägger till paketen som innan
Till exempel AddAspNetCoreInstrumentation lägga till alla inbyggda mätvärden för ASP.NET Core.
return builder
.AddMeter("Microsoft.AspNetCore.Hosting")
.AddMeter("Microsoft.AspNetCore.Server.Kestrel")
.AddMeter("Microsoft.AspNetCore.Http.Connections")
.AddMeter("Microsoft.AspNetCore.Routing")
.AddMeter("Microsoft.AspNetCore.Diagnostics")
.AddMeter("Microsoft.AspNetCore.RateLimiting");
etc.
När de är aktiverade kan du få mer information i dina dashboards. Till exempel lade jag in en GC-mätare i min för att visa minnesanvändningen ( och snabbt spåra minnesslösch ).

Caddy
Nu har vi Grafana igång och jag har lagt till lite Caddy konfiguration i min Caddyfile för att visa Grafana-tjänsterna till världen utanför.
grafana.mostlylucid.net
{
reverse_proxy grafana:3000
}
http://grafana.mostlyucid.net
{
redir https://{host}{uri}
}
Jag pekade på min Domain till den här Caddy-servern och nu kan jag nå Grafana från världen utanför.
Att sätta upp Grafana
När allt är igång, kan du nå Grafana genom att navigera till din url.
Sedan behöver du sätta upp en datakälla för Prometheus. För att göra detta, klicka på maskinens tangent i vänstra sidabalken , sen klicka på

Efter det kan du börja skapa dashboards och visualisera dina mätvärden.
Tavlansbord
Vi kommer att använda dashboardarna för att visualisera mätvärdena som vi har samlat in från ASP.
För detta använder vi "'" de följande brädan:
ASP.NET Core Übersichtsbrädan - visar de viktigaste mätvärdena för ASP
ASP.NET Core Endpoint Dashboard - visar mätvärdena för individuella slutpunkter i din application
Att lägga till dessa fick man på dashboardar->New->Importera och klistra dess dashboard ID i importfältetM SK2

Detta kommer sedan att lägga till brädan i din grafana instans.
Sedan kan vi gå in i de nyligen ingevoerda dashboardarna och konfigurera dem för att peka på vår Prometheus datakälla.
Detta borde ge er den syn vi såg i början av artikeln. För Job du väljer namnet på jobbet som vi specifikt har satt i prometheus.yml file. I vårt fall mostlylucid. Då ska du börja se mätvärdena fylla din bräda
I slutsats
I den här guiden, ,, har vi omfattat hur man konfigurerar övervakning för sina ASP-applikationer, m.in. Grafana och Prometheus. ., vi har gått igenom de steg som krävs för att konfigurera Docker,,, Prometeus, , och Grafana. M SK5, och hur man visar upp mätvärden från din ASP-Applikation.