Dansk

Udforsk metrikindsamling med Prometheus og Grafana. Lær at overvåge dine applikationer og infrastruktur effektivt med disse kraftfulde open source-værktøjer.

Metrikindsamling: En Omfattende Guide med Prometheus og Grafana

I dagens komplekse IT-landskab er effektiv overvågning afgørende for at opretholde applikationers og infrastrukturs sundhed og ydeevne. Metrikindsamling giver grundlaget for denne overvågning, så du kan spore vigtige KPI'er (Key Performance Indicators), identificere potentielle problemer og optimere ressourceudnyttelsen. Denne omfattende guide vil udforske, hvordan du udnytter Prometheus og Grafana, to kraftfulde open source-værktøjer, til robust metrikindsamling og visualisering.

Hvad er Metrikindsamling?

Metrikindsamling indebærer indsamling af numeriske data, der repræsenterer tilstanden og adfærden af forskellige systemer, applikationer og infrastrukturkomponenter over tid. Disse metrikker kan omfatte CPU-udnyttelse, hukommelsesforbrug, netværkstrafik, svartider, fejlprocenter og mange andre relevante indikatorer. Ved at analysere disse metrikker kan du opnå værdifuld indsigt i din miljøs ydeevne og sundhed.

Hvorfor er Metrikindsamling Vigtigt?

Introduktion til Prometheus og Grafana

Prometheus er et open source-system til overvågning og alarmering, oprindeligt udviklet hos SoundCloud. Det udmærker sig ved at indsamle og lagre tidsseriedata, dvs. data indekseret efter tidsstempler. Prometheus bruger en pull-baseret model til at "scrape" (indsamle) metrikker fra mål (f.eks. servere, applikationer) med jævne mellemrum. Det tilbyder et kraftfuldt forespørgselssprog (PromQL) til analyse af de indsamlede data og definition af alarmeringsregler.

Grafana er en open source-platform til datavisualisering og overvågning. Den giver dig mulighed for at oprette interaktive dashboards og grafer til at visualisere data fra forskellige kilder, herunder Prometheus. Grafana tilbyder et rigt sæt af visualiseringsmuligheder, herunder grafer, diagrammer, tabeller og målere. Den understøtter også alarmering, hvilket giver dig mulighed for at modtage meddelelser, når bestemte tærskler overskrides.

Sammen udgør Prometheus og Grafana en kraftfuld og fleksibel overvågningsløsning, der kan tilpasses en bred vifte af miljøer og brugsscenarier. De anvendes i vid udstrækning i DevOps og SRE (Site Reliability Engineering) praksisser verden over.

Prometheus Arkitektur og Koncepter

Forståelse af Prometheus' kernekomponenter er afgørende for effektiv implementering og udnyttelse:

Prometheus Arbejdsgang

  1. Mål (Applikationer, Server, etc.) eksponerer metrikker. Disse metrikker eksponeres normalt via et HTTP-slutpunkt.
  2. Prometheus Server "scrapr" metrikker fra konfigurerede mål. Den trækker periodisk metrikker fra disse slutpunkter.
  3. Prometheus lagrer de "scrapr" metrikker i sin tidsseriedatabase.
  4. Brugere forespørger metrikkerne ved hjælp af PromQL. Dette giver dem mulighed for at analysere dataene og oprette grafer og dashboards.
  5. Alarmeringsregler evalueres baseret på de lagrede metrikker. Hvis en regelbetingelse er opfyldt, udløses en alarm.
  6. Alertmanager håndterer de udløste alarmer. Den deduplicerer, grupperer og dirigerer dem til de relevante meddelelseskanaler.

Grafana Arkitektur og Koncepter

Grafana komplementerer Prometheus ved at tilbyde en brugervenlig grænseflade til visualisering og analyse af de indsamlede metrikker:

Grafana Arbejdsgang

  1. Konfigurer Datakilder: Tilslut Grafana til din Prometheus-server.
  2. Opret Dashboards: Design dashboards til at visualisere dine metrikker.
  3. Tilføj Paneler til Dashboards: Tilføj paneler for at vise specifikke datapunkter fra Prometheus ved hjælp af PromQL-forespørgsler.
  4. Konfigurer Alarmering (Valgfri): Opsæt alarmeringsregler i Grafana for at modtage meddelelser baseret på specifikke metrikters tærskler.
  5. Del Dashboards: Del dashboards med dit team for at samarbejde om overvågning og analyse.

Opsætning af Prometheus og Grafana

Dette afsnit giver en trin-for-trin guide til opsætning af Prometheus og Grafana.

Installation af Prometheus

1. Download Prometheus:

Download den seneste version af Prometheus fra den officielle hjemmeside: https://prometheus.io/download/. Vælg den passende pakke til dit operativsystem (f.eks. Linux, Windows, macOS).

2. Udpak Arkivet:

Udpak det downloadede arkiv til en mappe efter eget valg.

3. Konfigurer Prometheus:

Opret en `prometheus.yml` konfigurationsfil. Denne fil definerer de mål, som Prometheus vil "scrape", og andre konfigurationsmuligheder. En grundlæggende konfiguration kan se således ud:


global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

Denne konfiguration definerer to "scrape" jobs: én for Prometheus selv (der "scrapr" sine egne metrikker) og én for en node_exporter, der kører på localhost port 9100. `scrape_interval` angiver, hvor ofte Prometheus vil "scrape" målene.

4. Start Prometheus:

Kør Prometheus-eksekverbare fil fra den mappe, hvor du udpakkede arkivet:

./prometheus --config.file=prometheus.yml

Prometheus starter og lytter som standard på port 9090. Du kan få adgang til Prometheus' webinterface i din browser på http://localhost:9090.

Installation af Grafana

1. Download Grafana:

Download den seneste version af Grafana fra den officielle hjemmeside: https://grafana.com/grafana/download. Vælg den passende pakke til dit operativsystem.

2. Installer Grafana:

Følg installationsvejledningen for dit operativsystem. For eksempel, på Debian/Ubuntu:


sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

3. Start Grafana:

Start Grafana-servicen:

sudo systemctl start grafana-server

4. Få Adgang til Grafana:

Grafana starter og lytter som standard på port 3000. Du kan få adgang til Grafana's webinterface i din browser på http://localhost:3000.

Standardbrugernavnet og adgangskoden er `admin` og `admin`. Du bliver bedt om at ændre adgangskoden ved første login.

Forbindelse af Grafana til Prometheus

For at visualisere metrikker fra Prometheus i Grafana skal du konfigurere Prometheus som en datakilde i Grafana.

1. Tilføj Datakilde:

I Grafanas webinterface navigerer du til Konfiguration > Datakilder og klikker på Tilføj datakilde.

2. Vælg Prometheus:

Vælg Prometheus som datakildetype.

3. Konfigurer Prometheus Forbindelse:

Indtast URL'en til din Prometheus-server (f.eks. `http://localhost:9090`). Konfigurer andre muligheder efter behov (f.eks. godkendelse).

4. Gem og Test:

Klik på Gem & Test for at bekræfte, at Grafana kan oprette forbindelse til Prometheus.

Oprettelse af Dashboards i Grafana

Når du har forbundet Grafana til Prometheus, kan du oprette dashboards for at visualisere dine metrikker.

1. Opret et Nyt Dashboard:

I Grafanas webinterface klikker du på + ikonet i sidebaren og vælger Dashboard.

2. Tilføj et Panel:

Klik på Tilføj et tomt panel for at tilføje et nyt panel til dashboardet.

3. Konfigurer Panelet:


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

Denne forespørgsel beregner ændringshastigheden af CPU-tid brugt af processer, der er indsamlet af node_exporter over et 5-minutters interval.

4. Gem Dashboardet:

Klik på gem-ikonet for at gemme dashboardet.

PromQL: Prometheus Forespørgselssprog

PromQL er et kraftfuldt forespørgselssprog, der bruges til at hente og manipulere metrikker lagret i Prometheus. Det giver dig mulighed for at udføre en bred vifte af operationer, herunder:

PromQL Eksempler


rate(process_cpu_seconds_total{job="node_exporter"}[5m])

node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

rate(http_requests_total[5m])

At lære PromQL er afgørende for effektiv brug af Prometheus og Grafana. Se Prometheus-dokumentationen for en omfattende guide til sproget.

Alarmering med Prometheus og Alertmanager

Prometheus tilbyder et robust alarmeringssystem, der giver dig mulighed for at definere regler baseret på metrikværdier. Når en regelbetingelse er opfyldt, udløses en alarm, og Alertmanager håndterer meddelelsesprocessen.

Definition af Alarmeringsregler

Alarmeringsregler defineres i `prometheus.yml` konfigurationsfilen. Her er et eksempel på en alarmeringsregel, der udløses, når CPU-udnyttelsen overstiger 80%:


rule_files:
  - "rules.yml"

Derefter placeres regler som disse i en fil ved navn `rules.yml`:


groups:
- name: example
  rules:
  - alert: HighCPUUsage
    expr: rate(process_cpu_seconds_total{job="node_exporter"}[5m]) > 0.8
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "High CPU usage detected"
      description: "CPU usage is above 80% on {{ $labels.instance }}"

Forklaring:

Konfiguration af Alertmanager

Alertmanager håndterer dirigering og meddelelse af alarmer. Du skal konfigurere Alertmanager til at specificere, hvor alarmer skal sendes (f.eks. e-mail, Slack, PagerDuty). Se Alertmanager-dokumentationen for detaljerede konfigurationsinstruktioner.

En minimal `alertmanager.yml` konfiguration kan se således ud:


global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 12h
  receiver: 'web.hook'

receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://localhost:8080/'

Denne konfiguration sender alarmer til et webhook på localhost port 8080. Du kan tilpasse `receivers`-afsnittet for at bruge tjenester som Slack eller e-mail i stedet.

Praktiske Eksempler og Brugsscenarier

Prometheus og Grafana kan bruges til at overvåge en bred vifte af applikationer og infrastrukturkomponenter. Her er nogle praktiske eksempler:

Eksempel: Overvågning af en Mikrotjeneste Arkitektur

I en mikrotjeneste arkitektur kan Prometheus og Grafana bruges til at overvåge sundheden og ydeevnen af individuelle tjenester samt det samlede system. Hver tjeneste kan eksponere sine egne metrikker, såsom anmodningsrater, svartider og fejlprocenter. Prometheus kan derefter "scrape" disse metrikker, og Grafana kan bruges til at visualisere dem. Dette giver dig mulighed for hurtigt at identificere ydelsesflaskehalse eller fejl i specifikke tjenester.

Avancerede Teknikker og Bedste Praksis

For at få mest muligt ud af Prometheus og Grafana, bør du overveje følgende avancerede teknikker og bedste praksis:

Fejlfinding af Almindelige Problemer

Selv med omhyggelig planlægning og implementering kan du støde på problemer, når du bruger Prometheus og Grafana. Her er nogle almindelige problemer og deres løsninger:

Alternative Overvågningsløsninger

Selvom Prometheus og Grafana er kraftfulde værktøjer, er de ikke de eneste muligheder for metrikindsamling og visualisering. Andre populære overvågningsløsninger inkluderer:

Den bedste overvågningsløsning for din organisation vil afhænge af dine specifikke krav og budget.

Konklusion

Metrikindsamling er afgørende for at opretholde applikationers og infrastrukturs sundhed og ydeevne. Prometheus og Grafana leverer en kraftfuld og fleksibel open source-løsning til indsamling, lagring og visualisering af metrikker. Ved at forstå kernekoncepterne og følge de bedste praksisser, der er skitseret i denne guide, kan du udnytte Prometheus og Grafana til at opbygge et robust overvågningssystem, der opfylder din organisations behov.

Effektiv overvågning, kombineret med proaktiv alarmering og hurtig hændelsesrespons, er en hjørnesten i moderne IT-drift. Ved at omfavne værktøjer som Prometheus og Grafana styrkes organisationer til at levere pålidelige og performante tjenester til deres brugere, uanset deres placering eller branche.