Att använda Grafana och Prometheus för att övervaka ASP (Svenska (Swedish))

Att använda Grafana och Prometheus för att övervaka ASP

Wednesday, 18 September 2024

//

5 minute read

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

Grafana Dashboard

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 ).

minnesanvändning

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å

Prometheus datakälla

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:

Att lägga till dessa fick man på dashboardar->New->Importera och klistra dess dashboard ID i importfältetM SK2 Importa tavlan

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.

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.