Måltall med Prometheus og Grafana
Sett opp Prometheus for å samle inn måltall for klyngen og applikasjonene, og visualiser dem med Grafana.
Måltall med Prometheus og Grafana er en gratis leksjon i Grunnleggende Kubernetes på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende Kubernetes, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende Kubernetes inneholder totalt 4 leksjoner.
Målingenes kraft
Måledata er numeriske målinger som beskriver tilstanden og ytelsen til applikasjonene og infrastrukturen Deres. Tenk på dem som livstegn for programvaren Deres!
De gir verdifull innsikt i:
- Ytelse: Hvor raskt svarer appen?
- Ressursbruk: Holder serveren på å gå tom for minne?
- Tilgjengelighet: Er tjenesten oppe og tilgjengelig for brukerne?
Ved å følge med på måledata kan De forstå trender, oppdage avvik og feilsøke problemer proaktivt.
Bli kjent med Prometheus
Prometheus er et overvåkingssystem med åpen kildekode som er utviklet for pålitelighet og skalerbarhet. Det er et sentralt verktøy i den cloud-native observability-stakken.
Hovedoppgavene er å:
- Samle inn: Hente måledata fra konfigurerte mål (for eksempel applikasjonene Deres).
- Lagre: Lagre disse måledataene i en tidsseriedatabase.
- Spørre: La Dem stille spørsmål om de innsamlede dataene.
Prometheus hjelper Dem med å få et tydelig bilde av hva som skjer inne i Kubernetes-klyngen.
Prometheus-modellen for «scraping»
Prometheus bruker en «pull»-modell for å samle inn måledata. I stedet for at applikasjonene sender data til Prometheus, henter Prometheus aktivt («scraper») eller trekker måledata fra dem.
Slik fungerer det vanligvis:
- Applikasjonen eksponerer måledata på et bestemt HTTP-endepunkt (ofte
/metrics). - Prometheus konfigureres med en liste over mål (for eksempel IP-adressen og porten til applikasjonen).
- Med jevne mellomrom sender Prometheus en HTTP-forespørsel til
/metrics-endepunktet for hvert mål. - Målet svarer med de gjeldende måledataene, som Prometheus deretter lagrer.
Måledata: nøkkel-verdi-par
Prometheus lagrer data som tidsserier: strømmer av verdier med tidsstempler. Hver tidsserie identifiseres unikt av et målenavn og et sett med nøkkel-verdi-par som kalles etiketter.
Eksempel: http_requests_total{method="GET", path="/api"}
Prometheus har følgende grunnleggende måletyper:
- Counter: Et kumulativt mål som bare øker (for eksempel totalt antall forespørsler).
- Gauge: En verdi som kan gå opp eller ned (for eksempel gjeldende CPU-bruk).
- Histogram/Summary: Brukes til å ta stikkprøver av observasjoner og telle dem i konfigurerbare intervaller (for eksempel varigheten på forespørsler).
Få apper til å «snakke» måledata
For at Prometheus skal kunne hente måledata, må applikasjonen eksponere dem i et format som Prometheus forstår. Dette gjøres vanligvis via et HTTP-endepunkt.
Mange programmeringsspråk har klientbiblioteker som gjør det enkelt å instrumentere koden:
- Øk tellere når hendelser oppstår.
- Angi målere for gjeldende tilstander.
- Registrer varigheten på operasjoner.
La oss se på et svært enkelt eksempel på en app som eksponerer en grunnleggende måler.
Python-app som eksponerer måledata
Her er en liten Python Flask-app som eksponerer en enkel måler. Den simulerer telling av sidevisninger.
Kjør denne koden, og prøv deretter å åpne /metrics i nettleseren eller terminalen (besøk for eksempel http://localhost:5000/metrics etter at appen er startet).
from flask import Flask
from prometheus_client import Counter, generate_latest
import time
app = Flask(__name__)
c = Counter('my_app_requests_total', 'Total requests to my app')
@app.route('/')
def hello():
c.inc() # Increment the counter
return "Hello, CoddyKit!"
@app.route('/metrics')
def metrics():
return generate_latest().decode('utf-8')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)Prometheus i klyngen Deres
I Kubernetes innebærer effektiv utrulling av Prometheus ofte bruk av Prometheus Operator. Denne operatoren hjelper med å administrere Prometheus-instanser og konfigurasjoner.
Viktige Kubernetes-ressurser for Prometheus:
- ServiceMonitor: Forteller Prometheus *hvor* måleendepunktene finnes (for eksempel hvilke Services og Pods som skal hentes inn).
- PodMonitor: Ligner på ServiceMonitor, men retter seg direkte mot Pods.
Disse ressursene gjør at Prometheus automatisk kan oppdage og hente måledata fra de utrullede applikasjonene.
Grafana: mesteren over dashbord
Mens Prometheus samler inn og lagrer måledata, er Grafana verktøyet De bruker til å visualisere dem. Det er en nettapplikasjon med åpen kildekode for analyse og interaktiv visualisering.
Med Grafana kan De:
- Opprette oversiktlige og informative dashbord.
- Spørre mot flere datakilder (for eksempel Prometheus).
- Konfigurere varsler basert på terskelverdier for måledata.
Grafana omdanner rå måledata til innsikt De kan handle på.
Grafana og Prometheus: en kraftig kombinasjon
Grafana lagrer ikke måledataene selv, men spør etter data fra eksterne datakilder. For å visualisere Kubernetes-måledata konfigurerer De Prometheus som en datakilde i Grafana.
Fremgangsmåte:
- Legg til en ny datakilde i Grafana.
- Velg «Prometheus» som type.
- Oppgi URL-en til Prometheus-serveren.
- Begynn å bygge dashbord ved hjelp av Prometheus-spørrespråket PromQL!
Denne kombinasjonen gir Dem full kontroll over overvåkingen av klyngen.
Test kunnskapene Deres!
Det er på tide å sjekke forståelsen Deres av Prometheus og Grafana!
Oppsummering: måledata og visualisering
Godt jobbet! I denne leksjonen har De lært om:
- Hvorfor måledata er viktige for observability.
- Prometheus som et kraftig system for innhenting og lagring av tidsseriemåledata.
- Hvordan applikasjoner eksponerer måledata som Prometheus kan samle inn.
- Grafana for å opprette innsiktsfulle dashbord og visualisere måledataene Deres.
Det er avgjørende å forstå disse verktøyene for å holde Kubernetes-applikasjonene Deres sunne og effektive. Fortsett å utforske hvordan De kan instrumentere Deres egne applikasjoner!
Lær deg Grunnleggende Kubernetes med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Måltall med Prometheus og Grafana» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende Kubernetes, inkludert «Måltall med Prometheus og Grafana», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende Kubernetes inneholder totalt 4 leksjoner.
Hva lærer jeg i «Måltall med Prometheus og Grafana»?
Sett opp Prometheus for å samle inn måltall for klyngen og applikasjonene, og visualiser dem med Grafana. Du øver på Grunnleggende Kubernetes med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende Kubernetes?
Ingen tidligere erfaring er nødvendig. Grunnleggende Kubernetes på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Måltall med Prometheus og Grafana»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende Kubernetes-leksjonen?
Ja. Alle Grunnleggende Kubernetes-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Logging med kubectl logs
- Måltall med Prometheus og Grafana
- Helsesjekker: liveness- og readiness-prober
- Distribuert sporing og hendelser