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

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

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.

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:
ASP.NET Core -katsaus Dashboard - osoittaa ASP:n tärkeimmät mittarit
ASP.NET Core Endpoint Dashboard - osoittaa yksittäisten loppukohtien mittausmenetelmät sovelluksessanne
Näiden tietojen lisääminen taulukkoon->UusiM SK1Importoida ja liittää taulukon ID:n tuontialueelle .

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.