Back to "Grafanan ja Prometheuksen käyttäminen ASP.NET-ydinsovellusten seuraamiseen"

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 Prometheuksen käyttäminen ASP.NET-ydinsovellusten seuraamiseen

Wednesday, 18 September 2024

Johdanto

Seuranta on olennainen osa sovellusten terveyden ja suorituskyvyn ylläpitämistä. Minulla on jo tämä sivusto, joka seuraa käyttäjävierailuja käyttäen Umami ja poikkeukset ja virheet Seq mutta nyt halusin lisätä tulosseurantaa sekoiluun. Tässä oppaassa selvitämme, miten ASP.NET Core -sovelluksia voidaan seurata Grafanan ja Prometheuksen avulla.

Voit toki käyttää Grafana Cloud -palvelua, mutta tässä oppaassa keskitymme luomaan kaiken paikallisesti, jotta voit hallita valvontapinoasi täysin.

Tavoitteena on saada kojelauta johonkin tällaiseen:

Graphana Dashboard

Docker

Kuten tavallista tämän sivuston kanssa, halusin lisätä Grafana- ja Proioimetheus-elementit docker compose-tiedostouni, tämä antaa minulle mahdollisuuden pyörittää kaikkea ylös ja alas yhdellä komennolla ja pitää kaiken kiteytettynä.

Tässä näet, että perustin prometheus- ja grafanapalvelut. Niissä käytetään yhteistä sovellusverkkoani, ja niissä on docker-määriä, jotta data säilyy.

Dockerin sävellystiedosto

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./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:

Huomaat, että asetin oletussalasanan (ole varma ja vaihda tämä ensimmäisellä kierroksella!). Autoin myös näiden automaattisen päivityksen Vartiotornin avulla.

Huomaat, että en kartoita mitään satamia täällä, käytän Caddya tarjotakseni pääsyn Graphana-palveluun ja Prometheus on saatavilla vain Docker-verkosta.

Valinnaiset satamat paikalliselle ajamiselle

Jos haluat, voit lisätä

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

Se voi olla kätevää, jos juokset paikallisesti. Huomaa Windowsissa, että voit käyttää sovellustasi IDE:ssä ja käyttää ‘host.docker.internal:7240' (mikä tahansa portti) sovellustasi kontin sisältä. Määrittelisit myös "siltaverkon" docker-koostetiedostossasi näin.

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

Prometheuksen asetukset

Sitten lisäämme uuden prometheus.yml Tiedosto, jolla Prometheus määritetään ASP.NET Core -sovelluksemme metrien kaapimiseksi. Tässä perusesimerkki siitä, miltä kyseinen tiedosto voi näyttää:

global:
  scrape_interval: 15s

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

Tässä näet, käytän sisäistä nimeä mostlulucid Se on minun palveluni nimi, ja se on oletusportti 8080. Selvitän, miten mahdollistat tämän ASP.NET Coressa lähiaikoina.

ASP.NET-ydinsovellus

Seurasin ohjeet löytyvät täältä Järjestetään tämä.

Sinun täytyy ensin lisätä OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet-paketti ASP.NET-ydinprojektiisi. Voit tehdä tämän tekemällä seuraavan komennon projektihakemistossasi:

dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore

Seuraavaksi sinun täytyy määrittää sovelluksesi metrien paljastamiseksi. • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • Program.cs Tiedosto, voit lisätä seuraavan koodin:

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

Tämä antaa päätetapahtuman ja tiedot Prometheuksen kaapimisesta.

Caddy

Nyt meillä on Grafana ylhäällä ja kiiruhtamassa Lisäsin Caddyn kokoonpanoa Caddy-tiedostooni paljastaakseni Grafana-palvelun ulkomaailmalle.

grafana.mostlylucid.net
{
   reverse_proxy grafana:3000
}

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

Osoitin verkkotunnukseni Caddy-palvelimelle ja nyt pääsen käsiksi Graphanaan ulkomaailmasta.

Grafanan asennus

Kun kaikki on käynnissä, voit käyttää Grafanaa navigoimalla urliisi (http://localhost;3000, jos se toimii paikallisesti) selaimessasi. Kirjaudu sisään Docker Composite -tiedostossa asettamillasi valtuuksilla.

Sen jälkeen sinun on perustettava Prometheukselle tietolähde. Voit tehdä tämän klikkaamalla vasemman sivupalkin vaihdekuvaa ja klikkaa sitten "Tietolähteet". Klikkaa "Lisää tietolähde", valitse "Prometheus" ja määritä URL osoittaaksesi Prometheus-instanssin (http://prometheus:9090, jos se toimii paikallisesti).

Prometheus-tietolähde

Sen jälkeen voit alkaa luoda kojelautaa ja visualisoida mittareitasi!

Dashboard-levyt

Käytämme kojelautaa visualisoidaksemme ASP.NET Core -sovelluksestamme kerätyt mittarit. Voit luoda omat kojelautasi tai tuoda olemassa olevia Grafana-kojelautavarastosta.

Tähän käytetään seuraavia kojelaudat

Lisää nämä Dashboardsiin->New->Tuo ja liitä kojelautatunnus tuontikenttään. Tuo Dashboard

Tämä lisää kojelaudan Grafana-instanssiisi.

Sen jälkeen voimme mennä niihin juuri maahantuotuihin kojelautaan ja konfiguroida ne Prometheus-tietolähteeseemme.

Tämän pitäisi antaa sinulle näkymä, jonka näimme kirjoituksen alussa. FINREP:n puolesta Job Valitset nimen Job, jonka laitoimme erityisesti prometheus.yml Kansio. Meidän tapauksessamme mostlylucid...................................................................................................................................... Sitten sinun pitäisi alkaa nähdä metrien populaatiota kojelaudassasi!

Johtopäätöksenä

Tässä oppaassa kerroimme, miten ASP.NET Core -sovellusten seuranta voidaan aloittaa Grafana- ja Prometheus-sovelluksilla. Kävimme läpi Dockerin, Prometheuksen ja Grafanan konfiguroinnin vaiheet sekä sen, miten ASP.NET Core -sovelluksesi mittarit paljastetaan. Tällä järjestelmällä voit nyt seurata sovellusten suorituskykyä ja saada arvokasta tietoa niiden käyttäytymisestä. Hyvää tarkkailua!

logo

©2024 Scott Galloway