Lietuvių

Naršykite metrikų rinkimą su Prometheus ir Grafana. Sužinokite, kaip efektyviai stebėti savo programas ir infrastruktūrą šiais galingais atvirojo kodo įrankiais.

Metrikų rinkimas: išsamus vadovas su Prometheus ir Grafana

Šiandieniniame sudėtingame IT kraštovaizdyje efektyvus stebėjimas yra gyvybiškai svarbus siekiant palaikyti programų ir infrastruktūros būklę bei našumą. Metrikų rinkimas yra šio stebėjimo pagrindas, leidžiantis stebėti pagrindinius našumo rodiklius (KPI), identifikuoti galimas problemas ir optimizuoti išteklių naudojimą. Šis išsamus vadovas nagrinės, kaip panaudoti Prometheus ir Grafana – du galingus atvirojo kodo įrankius – patikimam metrikų rinkimui ir vizualizavimui.

Kas yra metrikų rinkimas?

Metrikų rinkimas apima skaitmeninių duomenų, atspindinčių įvairių sistemų, programų ir infrastruktūros komponentų būseną bei elgseną laikui bėgant, rinkimą. Šios metrikos gali apimti procesoriaus panaudojimą, atminties sunaudojimą, tinklo srautą, atsako laikus, klaidų rodiklius ir daugelį kitų svarbių rodiklių. Analizuodami šias metrikas, galite gauti vertingų įžvalgų apie savo aplinkos našumą ir būklę.

Kodėl metrikų rinkimas yra svarbus?

Pristatome Prometheus ir Grafana

Prometheus yra atvirojo kodo sistemų stebėjimo ir įspėjimo įrankių rinkinys, iš pradžių sukurtas „SoundCloud“ įmonėje. Jis puikiai renka ir saugo laiko eilučių duomenis – tai duomenys, indeksuojami pagal laiko žymas. Prometheus naudoja „traukimo“ (pull-based) modelį, kad reguliariais intervalais rinktų metrikas iš tikslinių šaltinių (pvz., serverių, programų). Jis siūlo galingą užklausų kalbą (PromQL) surinktiems duomenims analizuoti ir įspėjimo taisyklėms apibrėžti.

Grafana yra atvirojo kodo duomenų vizualizavimo ir stebėjimo platforma. Ji leidžia kurti interaktyvius prietaisų skydelius ir grafikus, skirtus vizualizuoti duomenis iš įvairių šaltinių, įskaitant Prometheus. Grafana siūlo platų vizualizavimo parinkčių rinkinį, įskaitant grafikus, diagramas, lenteles ir matuoklius. Ji taip pat palaiko įspėjimą, leidžiančią gauti pranešimus, kai pažeidžiamos tam tikros ribos.

Kartu Prometheus ir Grafana sudaro galingą ir lanksčią stebėjimo sprendimą, kuris gali būti pritaikytas įvairioms aplinkoms ir naudojimo atvejams. Jie plačiai naudojami DevOps ir SRE (Sistemos patikimumo inžinerijos) praktikose visame pasaulyje.

Prometheus architektūra ir koncepcijos

Norint efektyviai diegti ir naudoti Prometheus, būtina suprasti jo pagrindinius komponentus:

Prometheus darbo eiga

  1. Tiksliniai objektai (programos, serveriai ir kt.) pateikia metrikas. Šios metrikos paprastai pateikiamos per HTTP galinį tašką.
  2. Prometheus serveris renka metrikas iš sukonfigūruotų tikslinių objektų. Jis periodiškai atsiunčia metrikas iš šių galinių taškų.
  3. Prometheus saugo surinktas metrikas savo laiko eilučių duomenų bazėje.
  4. Vartotojai užklausia metrikas naudodami PromQL. Tai leidžia jiems analizuoti duomenis ir kurti grafikus bei prietaisų skydelius.
  5. Įspėjimo taisyklės vertinamos remiantis saugomomis metrikomis. Jei taisyklės sąlyga įvykdoma, suveikia įspėjimas.
  6. Alertmanager tvarko suveikusius įspėjimus. Jis pašalina pasikartojančius, sugrupuoja ir nukreipia juos į atitinkamus pranešimų kanalus.

Grafana architektūra ir koncepcijos

Grafana papildo Prometheus, suteikdama patogią sąsają surinktoms metrikoms vizualizuoti ir analizuoti:

Grafana darbo eiga

  1. Konfigūruokite duomenų šaltinius: Prijunkite Grafana prie savo Prometheus serverio.
  2. Kurkite prietaisų skydelius: Kurkite prietaisų skydelius, kad vizualizuotumėte savo metrikas.
  3. Pridėkite skydelius prie prietaisų skydelių: Pridėkite skydelius, kad būtų rodomi konkretūs duomenų taškai iš Prometheus, naudojant PromQL užklausas.
  4. Konfigūruokite įspėjimą (pasirinktinai): Nustatykite įspėjimo taisykles Grafana, kad gautumėte pranešimus pagal konkrečias metrikų ribas.
  5. Dalinkitės prietaisų skydeliais: Dalinkitės prietaisų skydeliais su savo komanda, kad bendradarbiautumėte stebint ir analizuojant.

Prometheus ir Grafana nustatymas

Šiame skyriuje pateikiamas nuoseklus vadovas, kaip nustatyti Prometheus ir Grafana.

Prometheus diegimas

1. Atsisiųskite Prometheus:

Atsisiųskite naujausią Prometheus versiją iš oficialios svetainės: https://prometheus.io/download/. Pasirinkite tinkamą paketą savo operacinei sistemai (pvz., Linux, Windows, macOS).

2. Išpakuokite archyvą:

Išpakuokite atsisiųstą archyvą į pasirinktą katalogą.

3. Konfigūruokite Prometheus:

Sukurkite `prometheus.yml` konfigūracijos failą. Šis failas apibrėžia tikslus, kuriuos Prometheus rinks, ir kitas konfigūracijos parinktis. Pagrindinė konfigūracija gali atrodyti taip:


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']

Ši konfigūracija apibrėžia du rinkimo darbus: vieną pačiam Prometheus (rinkti savo metrikas) ir vieną `node_exporter`, veikiančiam „localhost“ prievade 9100. `scrape_interval` nurodo, kaip dažnai Prometheus rinks tikslinius duomenis.

4. Paleiskite Prometheus:

Paleiskite Prometheus vykdomąjį failą iš katalogo, kuriame išpakavote archyvą:

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

Prometheus bus paleistas ir pagal numatytuosius nustatymus klausysis 9090 prievado. Prometheus žiniatinklio sąsają galite pasiekti savo naršyklėje adresu http://localhost:9090.

Grafana diegimas

1. Atsisiųskite Grafana:

Atsisiųskite naujausią Grafana versiją iš oficialios svetainės: https://grafana.com/grafana/download. Pasirinkite tinkamą paketą savo operacinei sistemai.

2. Įdiekite Grafana:

Vykdykite diegimo instrukcijas, skirtas jūsų operacinei sistemai. Pavyzdžiui, 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. Paleiskite Grafana:

Paleiskite Grafana paslaugą:

sudo systemctl start grafana-server

4. Pasiekite Grafana:

Grafana bus paleista ir pagal numatytuosius nustatymus klausysis 3000 prievado. Grafana žiniatinklio sąsają galite pasiekti savo naršyklėje adresu http://localhost:3000.

Numatytasis vartotojo vardas ir slaptažodis yra `admin` ir `admin`. Pirmą kartą prisijungus, jūsų bus paprašyta pakeisti slaptažodį.

Grafana prijungimas prie Prometheus

Norėdami vizualizuoti metrikas iš Prometheus Grafana, turite sukonfigūruoti Prometheus kaip duomenų šaltinį Grafana.

1. Pridėkite duomenų šaltinį:

Grafana žiniatinklio sąsajoje eikite į Configuration > Data Sources ir spustelėkite Add data source.

2. Pasirinkite Prometheus:

Pasirinkite Prometheus kaip duomenų šaltinio tipą.

3. Konfigūruokite Prometheus ryšį:

Įveskite savo Prometheus serverio URL (pvz., `http://localhost:9090`). Konfigūruokite kitas parinktis pagal poreikį (pvz., autentifikavimą).

4. Išsaugokite ir išbandykite:

Spustelėkite Save & Test, kad patikrintumėte, ar Grafana sėkmingai prisijungia prie Prometheus.

Prietaisų skydelių kūrimas Grafana

Prijungę Grafana prie Prometheus, galite kurti prietaisų skydelius, kad vizualizuotumėte savo metrikas.

1. Sukurkite naują prietaisų skydelį:

Grafana žiniatinklio sąsajoje spustelėkite + piktogramą šoninėje juostoje ir pasirinkite Dashboard.

2. Pridėkite skydelį:

Spustelėkite Add an empty panel, kad pridėtumėte naują skydelį prie prietaisų skydelio.

3. Konfigūruokite skydelį:


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

Ši užklausa apskaičiuoja procesoriaus laiko, kurį naudoja `node_exporter` surinkti procesai per 5 minučių intervalą, pokyčio greitį.

4. Išsaugokite prietaisų skydelį:

Spustelėkite išsaugojimo piktogramą, kad išsaugotumėte prietaisų skydelį.

PromQL: Prometheus užklausų kalba

PromQL yra galinga užklausų kalba, naudojama metrikoms, saugomoms Prometheus, gauti ir manipuliuoti. Ji leidžia atlikti platų operacijų spektrą, įskaitant:

PromQL pavyzdžiai


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

PromQL mokymasis yra būtinas norint efektyviai naudoti Prometheus ir Grafana. Išsamų kalbos vadovą rasite Prometheus dokumentacijoje.

Įspėjimas su Prometheus ir Alertmanager

Prometheus teikia patikimą įspėjimo sistemą, leidžiančią apibrėžti taisykles, pagrįstas metrikų vertėmis. Kai taisyklės sąlyga įvykdoma, suveikia įspėjimas, o Alertmanager tvarko pranešimų procesą.

Įspėjimo taisyklių apibrėžimas

Įspėjimo taisyklės apibrėžiamos `prometheus.yml` konfigūracijos faile. Štai įspėjimo taisyklės pavyzdys, kuris suveikia, kai procesoriaus naudojimas viršija 80%:


rule_files:
  - "rules.yml"

Tada faile pavadinimu `rules.yml` patalpinkite tokias taisykles:


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: "Aptiktas didelis procesoriaus naudojimas"
      description: "Procesoriaus naudojimas viršija 80% {{ $labels.instance }}"

Paaiškinimas:

Alertmanager konfigūravimas

Alertmanager tvarko įspėjimų nukreipimą ir pranešimą. Turite sukonfigūruoti Alertmanager, kad nurodytumėte, kur turėtų būti siunčiami įspėjimai (pvz., el. paštu, Slack, PagerDuty). Išsamias konfigūracijos instrukcijas rasite Alertmanager dokumentacijoje.

Minimali `alertmanager.yml` konfigūracija gali atrodyti taip:


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/'

Ši konfigūracija siunčia įspėjimus į „webhook“ „localhost“ 8080 prievade. Galite tinkinti `receivers` skyrių, kad vietoj to naudotumėte tokias paslaugas kaip Slack ar el. paštas.

Praktiniai pavyzdžiai ir naudojimo atvejai

Prometheus ir Grafana gali būti naudojami stebėti platų programų ir infrastruktūros komponentų spektrą. Štai keletas praktinių pavyzdžių:

Pavyzdys: Mikroservisų architektūros stebėjimas

Mikroservisų architektūroje Prometheus ir Grafana gali būti naudojami stebėti atskirų paslaugų, taip pat visos sistemos, būklę ir našumą. Kiekviena paslauga gali pateikti savo metrikas, pvz., užklausų dažnius, atsako laikus ir klaidų rodiklius. Tada Prometheus gali rinkti šias metrikas, o Grafana gali būti naudojama joms vizualizuoti. Tai leidžia greitai identifikuoti našumo silpnąsias vietas ar gedimus konkrečiose paslaugose.

Pažangios technikos ir geriausios praktikos

Norėdami maksimaliai išnaudoti Prometheus ir Grafana, apsvarstykite šias pažangias technikas ir geriausias praktikas:

Dažnai pasitaikančių problemų šalinimas

Net ir kruopščiai planuojant ir diegiant, naudojant Prometheus ir Grafana gali kilti problemų. Štai keletas dažnai pasitaikančių problemų ir jų sprendimų:

Alternatyvūs stebėjimo sprendimai

Nors Prometheus ir Grafana yra galingi įrankiai, jie nėra vieninteliai variantai metrikų rinkimui ir vizualizavimui. Kiti populiarūs stebėjimo sprendimai apima:

Geriausias stebėjimo sprendimas jūsų organizacijai priklausys nuo jūsų konkrečių reikalavimų ir biudžeto.

Išvada

Metrikų rinkimas yra būtinas siekiant palaikyti programų ir infrastruktūros būklę bei našumą. Prometheus ir Grafana teikia galingą ir lankstų atvirojo kodo sprendimą metrikų rinkimui, saugojimui ir vizualizavimui. Suprasdami pagrindines koncepcijas ir laikydamiesi šiame vadove aprašytų geriausių praktikų, galite panaudoti Prometheus ir Grafana, kad sukurtumėte patikimą stebėjimo sistemą, atitinkančią jūsų organizacijos poreikius.

Efektyvus stebėjimas, kartu su proaktyviu įspėjimu ir greitu reagavimu į incidentus, yra šiuolaikinių IT operacijų kertinis akmuo. Priėmus tokius įrankius kaip Prometheus ir Grafana, organizacijos gali teikti patikimas ir našias paslaugas savo vartotojams, nepriklausomai nuo jų buvimo vietos ar pramonės šakos.