Back to "Grafanan ja Prometheusin käyttö ASP.NET Coren \8+ sovellusten seurannassa"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

ASP.NET Docker Grafana Prometheus

Grafanan ja Prometheusin käyttö ASP.NET Coren \8+ sovellusten seurannassa

Wednesday, 18 September 2024

Esitys

Seuranta on olennainen osa sovellusten terveyden ja suorituskyvyn ylläpitämistä. Minulla on jo tämä sivusto, jossa seurataan käyttäjien vierailuja käyttämällä Umami poikkeuksia ja virheitä käyttäen Seq mutta nyt halusin lisätä suorituskyvyn seurannan sekoitteeseen. Tässä opasteessa, tarkastelemme, miten perustaa seuranta ASP-ohjelmillenne.NET Core -sovelluksille Grafan ja Prometheus'n avulla

Voitte tietenkin käyttää Grafana Cloud-palvelua,, mutta tämän oppaan, osalta keskitymme kaikkiin asioihin paikallisesti, jotta voitte valvoa tilanteen hallintaa täysimääräisestiM SK2

Tavoitteena on saada taulukko, joka vastaa tätä.

Grafan taulukko

Docker

Kuten tavallista tällä sivustolla, halusin lisätä Grafana- ja Prometheus-elementit dockerin yhteensovittamiseen.

Tässä voitte nähdä, että olen perustanut prometheus- ja grafana-palvelut. Ne käyttävät yhteistä appini_verkkoa ja niillä on Docker-lisämäärää pysyvien tietojen saamiseksiM SK2

Docker Compose-tietokanta

  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:

Huomaatte, että otin käyttöön standardipassin ( varmistakaa ja muuttakaa se ensimmäisellä käytöllä.

Teidän on huomattava, etten kartoita mitään satamia täällä, että käytän Caddyä Grafana-palveluun ja että Prometheus on saatavilla vain Docker-verkon sisällä.

Vaihtoehtoiset portit paikallisesti käytettäviä varten

Jos haluatte, voitte lisätä

# Prometheus
    ports:
      - "9090:9090"
# Grafana
    ports:
      - "3000:3000"

Tämä voi olla hyödyllistä, jos olette running locally. Huomauttakaa, että Windowsissa IDE:ssänne voitte runottaa appinne ja käyttää M SK2hostin.dockerin .internalisen~:7240' (mikä tahansa portti \ ), jotta pääsette appiin kontin sisällä \

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-konfiguraatio

Sitten lisäämme uuden prometheus.yml asiakirja Prometheus -ohjelmasta, jossa pyydetään scraping metrics -järjestelmää ASP: stä

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'mostlylucid'
    metrics_path: /metrics
    scheme: http                
    static_configs:
      - targets: ['mostlylucid:8080']

Kuten näette, käytän sisäistä nimiä mostlulucid , joka on omien Docker-palvelujeni nimi ja sen 'standardin portti 8080. I' Käsittelen lyhyesti sitä, miten tämä voidaan aktivoida ASP:ssa

ASP.NET Core-sovellus

Olen seurannut ohjeita löytyy täältä tämän perustamiseksi.

Ensinnäkin on lisättävä OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet paketti ASP: ssanne.NET Core-hankkeessa. Te voitte tehdä tämän käyttämällä seuraavaa komentaa hankkeessanne

dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore

Seuraavaksi, tarvitsee varmistaa, että sovelluksenne paljastaa mittarit Program.cs file, voit lisätä seuraavan koodin:

   services.AddOpenTelemetry()
        .WithMetrics(builder =>
        {
            builder.AddPrometheusExporter();
            builder.AddMeter("Microsoft.AspNetCore.Hosting", "Microsoft.AspNetCore.Server.Kestrel");
        });
   
    app.MapPrometheusScrapingEndpoint();

Tämä tarjoaa loppupisteen ja tiedot Prometheusille, jotta se voisi hädistää ja perustaa kaksi 'Meteriä', jotka tarjoavat ASP:n performance-tietoja

Tarkistukset

Olen kulunut jonkin aikaa vaihtelemaan . Tämä on uusi featuuri |. |NET | 8 | ja se vaikuttaa vielä hieman hajanaiselta.

Ensinnäkin OpenTelemetryn uusimpi Beta.Exporter.PrometheusM SK2AspNetCore näyttää olevan vakaampaa kuin beta-version 1versio (kirjauksen aikana ainakin ). Siksi suosittelen, että käyttäkää sitä

dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore --version 1.9.0-beta.2

Sitten voitte lisätä täydellisemmän mittareiden yhdistelmän soveltamukseenne, kuten niin:

    services.AddOpenTelemetry()
        .WithMetrics(builder =>
        {
            builder.AddPrometheusExporter();
            builder.AddAspNetCoreInstrumentation();
            builder.AddRuntimeInstrumentation();
            builder.AddHttpClientInstrumentation();
        }); 

Jos te F12 näihin, voitte nähdä, että ne lisäävät paketit kuten ennen

Esimerkiksi AddAspNetCoreInstrumentation liittää kaikki ASP:n sisällytetyt mittarit

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");

jne.

Kun ne on otettu käyttöön, saataisiin lisätietoja taulukoistanne. Esimerkiksi lisäsin kaivossani GC-mittajan, jolla kuvataan muistinkäyttöä ( ja jäljitellään nopeasti muistivuotoja ).

Tietojen käyttö

Caddy

Nyt Grafana on otettu käyttöön ja käynnissä. Olen lisännyt Caddy-tietokantaani jonkin verran Caddyn konfigurointia, jotta Grafanan palvelu voidaan ottaa ulkopuolelle.

grafana.mostlylucid.net
{
   reverse_proxy grafana:3000
}

http://grafana.mostlyucid.net
{
   redir https://{host}{uri}
}

Viittasin Domainini tähän Caddy-Serveriin, ja nyt voin käyttää Grafanaa ulkomaailmasta.

Grafanan käyttöönotto

Kun kaikki on käynnissä, voit käyttää Grafanaa navigoimalla url-osoitteeseenne (httpM SK2localhost;3000 jos se on käynnistetty paikallisestiMSC4 internet-lähestyksellänne. Log in using the credentials you set in your Docker Compose file

Sen jälkeen on otettava käyttöön Prometheus-tietolähde. Tätä varten, klikkaa välineikon vasemmassa sivutasolla olevaan järjestelmäänM SK2 ja sitten " Tietolähteet ". Klikkää MST5Lisätä tietolähdestoMSC6 valitse MST7PrometheuszMSSK8 ja varmistaa URL:n, joka viittaa Prometeusin tilanteeseen.

Prometheus-tietolähde

Sen jälkeen voi alkaa luoda dashboardeja ja visualisoida mittauksianne!

Taustataulut

Me' käytämme taulukoita havainnollistaaksemme ASP:sta kerätyt mittarit.

Tätä varten käyttämme seuraavia taulukoita:

Näiden tietojen lisääminen taulukkoon->UusiM SK1Importoida ja liittää taulukon ID:n tuontialueelle . Importoija Dashboard

Tämän jälkeen lisätään taulukko Grafana-instancestanne.

Sitten voimme mennä uusiin tuotuihin dashboardeihin ja konfiguroida ne osoittaaksemme Prometheus-tietolähteemme.

Tämän pitäisi antaa teille kuva, jonka näimme artikkelin alussa. Job valitsette nimenne työlle, jonka olemme nimenomaisesti asettaneet prometheus.yml file. Omassa tapauksessamme mostlylucid. Sitten teidän pitäisi alkaa nähdä mittauslukujen leviämistä dashboardissanne

Päätelmissä

Kävimme läpi Dockerin konfiguroinnin vaiheet, Prometheus'n, ,'n ja Grafan,,'n sekä ASP:n mittausmenetelmien paljastamisen.

logo

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