Hrvatski

Istražite prikupljanje metrika uz Prometheus i Grafanu. Naučite kako učinkovito nadzirati svoje aplikacije i infrastrukturu s ovim moćnim alatima otvorenog koda.

Prikupljanje Metrika: Sveobuhvatan Vodič uz Prometheus i Grafanu

U današnjem složenom IT okruženju, učinkovito praćenje ključno je za održavanje ispravnosti i performansi aplikacija i infrastrukture. Prikupljanje metrika pruža temelj za ovo praćenje, omogućujući vam praćenje ključnih pokazatelja performansi (KPI-jeva), prepoznavanje potencijalnih problema i optimizaciju iskorištenosti resursa. Ovaj sveobuhvatan vodič istražit će kako iskoristiti Prometheus i Grafanu, dva moćna alata otvorenog koda, za robusno prikupljanje i vizualizaciju metrika.

Što je prikupljanje metrika?

Prikupljanje metrika uključuje prikupljanje numeričkih podataka koji predstavljaju stanje i ponašanje različitih sustava, aplikacija i infrastrukturnih komponenti tijekom vremena. Te metrike mogu uključivati iskorištenost CPU-a, potrošnju memorije, mrežni promet, vremena odziva, stope pogrešaka i mnoge druge relevantne pokazatelje. Analizirajući ove metrike, možete dobiti vrijedan uvid u performanse i ispravnost vašeg okruženja.

Zašto je prikupljanje metrika važno?

Predstavljanje Prometheusa i Grafane

Prometheus je otvoreni skup alata za nadzor sustava i upozoravanje izvorno razvijen u SoundCloudu. Izvrstan je u prikupljanju i pohranjivanju vremensko-serijskih podataka, odnosno podataka indeksiranih vremenskim oznakama. Prometheus koristi pull-model za prikupljanje metrika s ciljeva (npr. poslužitelja, aplikacija) u redovitim intervalima. Nudi moćan jezik za upite (PromQL) za analizu prikupljenih podataka i definiranje pravila za upozoravanje.

Grafana je otvorena platforma za vizualizaciju podataka i nadzor. Omogućuje vam stvaranje interaktivnih nadzornih ploča i grafikona za vizualizaciju podataka iz različitih izvora, uključujući Prometheus. Grafana nudi bogat skup opcija vizualizacije, uključujući grafove, dijagrame, tablice i mjerače. Također podržava upozoravanje, omogućujući vam primanje obavijesti kada su određeni pragovi prekoračeni.

Zajedno, Prometheus i Grafana čine snažno i fleksibilno rješenje za nadzor koje se može prilagoditi širokom rasponu okruženja i slučajeva upotrebe. Široko su korišteni u DevOps i SRE (Site Reliability Engineering) praksama diljem svijeta.

Prometheus Arhitektura i Koncepti

Razumijevanje ključnih komponenti Prometheusa bitno je za učinkovitu implementaciju i korištenje:

Prometheus Tok Rada

  1. Ciljevi (aplikacije, poslužitelji itd.) izlažu metrike. Ove metrike se obično izlažu putem HTTP krajnje točke.
  2. Prometheus poslužitelj prikuplja metrike s konfiguriranih ciljeva. Periodično povlači metrike s ovih krajnjih točaka.
  3. Prometheus pohranjuje prikupljene metrike u svoju vremensko-serijsku bazu podataka.
  4. Korisnici upituju metrike koristeći PromQL. To im omogućuje analizu podataka i stvaranje grafova i nadzornih ploča.
  5. Pravila upozorenja se procjenjuju na temelju pohranjenih metrika. Ako je uvjet pravila ispunjen, pokreće se upozorenje.
  6. Alertmanager obrađuje pokrenuta upozorenja. Uklanja duplikate, grupira ih i prosljeđuje odgovarajućim kanalima za obavijesti.

Grafana Arhitektura i Koncepti

Grafana nadopunjuje Prometheus pružajući korisnički prilagođeno sučelje za vizualizaciju i analizu prikupljenih metrika:

Grafana Tok Rada

  1. Konfigurirajte izvore podataka: Povežite Grafanu sa svojim Prometheus poslužiteljem.
  2. Stvorite nadzorne ploče: Dizajnirajte nadzorne ploče za vizualizaciju svojih metrika.
  3. Dodajte panele na nadzorne ploče: Dodajte panele za prikaz određenih podatkovnih točaka iz Prometheusa koristeći PromQL upite.
  4. Konfigurirajte upozoravanje (opcionalno): Postavite pravila upozoravanja unutar Grafane za primanje obavijesti na temelju određenih pragova metrika.
  5. Podijelite nadzorne ploče: Podijelite nadzorne ploče sa svojim timom za suradnju na nadzoru i analizi.

Postavljanje Prometheusa i Grafane

Ovaj odjeljak pruža vodič korak po korak za postavljanje Prometheusa i Grafane.

Instalacija Prometheusa

1. Preuzmite Prometheus:

Preuzmite najnoviju verziju Prometheusa sa službene web stranice: https://prometheus.io/download/. Odaberite odgovarajući paket za svoj operativni sustav (npr. Linux, Windows, macOS).

2. Raspakirajte Arhivu:

Raspakirajte preuzetu arhivu u direktorij po vašem izboru.

3. Konfigurirajte Prometheus:

Stvorite konfiguracijsku datoteku `prometheus.yml`. Ova datoteka definira ciljeve koje će Prometheus prikupljati i druge opcije konfiguracije. Osnovna konfiguracija mogla bi izgledati ovako:


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

Ova konfiguracija definira dva posla prikupljanja: jedan za sam Prometheus (prikupljanje vlastitih metrika) i jedan za node_exporter koji radi na localhost portu 9100. `scrape_interval` određuje koliko često će Prometheus prikupljati ciljeve.

4. Pokrenite Prometheus:

Pokrenite izvršnu datoteku Prometheusa iz direktorija u koji ste raspakirali arhivu:

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

Prometheus će se pokrenuti i prema zadanim postavkama slušati na portu 9090. Prometheus web sučelju možete pristupiti u svom pregledniku na http://localhost:9090.

Instalacija Grafane

1. Preuzmite Grafanu:

Preuzmite najnoviju verziju Grafane sa službene web stranice: https://grafana.com/grafana/download. Odaberite odgovarajući paket za svoj operativni sustav.

2. Instalirajte Grafanu:

Slijedite upute za instalaciju za svoj operativni sustav. Na primjer, na Debianu/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. Pokrenite Grafanu:

Pokrenite uslugu Grafana:

sudo systemctl start grafana-server

4. Pristupite Grafani:

Grafana će se pokrenuti i prema zadanim postavkama slušati na portu 3000. Grafana web sučelju možete pristupiti u svom pregledniku na http://localhost:3000.

Zadano korisničko ime i lozinka su `admin` i `admin`. Bit ćete zatraženi da promijenite lozinku pri prvoj prijavi.

Povezivanje Grafane s Prometheusom

Za vizualizaciju metrika iz Prometheusa u Grafani, morate konfigurirati Prometheus kao izvor podataka u Grafani.

1. Dodajte izvor podataka:

U Grafana web sučelju, idite na Configuration > Data Sources i kliknite Add data source.

2. Odaberite Prometheus:

Odaberite Prometheus kao vrstu izvora podataka.

3. Konfigurirajte Prometheus Vezu:

Unesite URL vašeg Prometheus poslužitelja (npr. `http://localhost:9090`). Konfigurirajte druge opcije po potrebi (npr. autentifikaciju).

4. Spremi i Testiraj:

Kliknite Save & Test kako biste provjerili može li se Grafana uspješno povezati s Prometheusom.

Stvaranje nadzornih ploča u Grafani

Nakon što ste povezali Grafanu s Prometheusom, možete stvarati nadzorne ploče za vizualizaciju svojih metrika.

1. Stvorite novu nadzornu ploču:

U Grafana web sučelju, kliknite ikonu + u bočnoj traci i odaberite Dashboard.

2. Dodajte panel:

Kliknite Add an empty panel za dodavanje novog panela na nadzornu ploču.

3. Konfigurirajte Panel:


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

This query calculates the rate of change of CPU time used by processes collected by the node_exporter over a 5-minute interval.

4. Spremite nadzornu ploču:

Kliknite ikonu za spremanje kako biste spremili nadzornu ploču.

PromQL: Jezik za upite Prometheusa

PromQL je moćan jezik za upite koji se koristi za dohvaćanje i manipulaciju metrikama pohranjenim u Prometheusu. Omogućuje vam izvođenje širokog raspona operacija, uključujući:

PromQL Primjeri


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

Učenje PromQL-a ključno je za učinkovito korištenje Prometheusa i Grafane. Za sveobuhvatan vodič kroz jezik pogledajte Prometheus dokumentaciju.

Upozoravanje uz Prometheus i Alertmanager

Prometheus pruža robustan sustav upozoravanja koji vam omogućuje definiranje pravila na temelju vrijednosti metrika. Kada je uvjet pravila ispunjen, pokreće se upozorenje, a Alertmanager obrađuje proces obavješćivanja.

Definiranje pravila za upozoravanje

Pravila za upozoravanje definirana su u konfiguracijskoj datoteci `prometheus.yml`. Evo primjera pravila za upozoravanje koje se aktivira kada iskorištenost CPU-a prijeđe 80%:


rule_files:
  - "rules.yml"

Zatim, u datoteku nazvanu `rules.yml`, postavite pravila poput ovog:


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 }}"

Objašnjenje:

Konfiguriranje Alertmanagera

Alertmanager obrađuje usmjeravanje i obavješćivanje o upozorenjima. Morate konfigurirati Alertmanager kako biste odredili gdje bi se upozorenja trebala slati (npr. e-pošta, Slack, PagerDuty). Za detaljne upute za konfiguraciju pogledajte dokumentaciju Alertmanagera.

Minimalna `alertmanager.yml` konfiguracija mogla bi izgledati ovako:


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

Ova konfiguracija šalje upozorenja web-hooku na localhost portu 8080. Možete prilagoditi odjeljak `receivers` za korištenje usluga poput Slacka ili e-pošte umjesto toga.

Praktični primjeri i slučajevi upotrebe

Prometheus i Grafana mogu se koristiti za nadzor širokog raspona aplikacija i infrastrukturnih komponenti. Evo nekoliko praktičnih primjera:

Primjer: Nadzor arhitekture mikrousluga

U arhitekturi mikrousluga, Prometheus i Grafana mogu se koristiti za nadzor ispravnosti i performansi pojedinačnih usluga, kao i cjelokupnog sustava. Svaka usluga može izložiti vlastite metrike, poput stopa zahtjeva, vremena odziva i stopa pogrešaka. Prometheus tada može prikupljati (scrape) ove metrike, a Grafana se može koristiti za njihovu vizualizaciju. To vam omogućuje brzo prepoznavanje uskih grla performansi ili kvarova u specifičnim uslugama.

Napredne tehnike i najbolje prakse

Kako biste maksimalno iskoristili Prometheus i Grafanu, razmotrite sljedeće napredne tehnike i najbolje prakse:

Rješavanje uobičajenih problema

Čak i uz pažljivo planiranje i implementaciju, možete naići na probleme prilikom korištenja Prometheusa i Grafane. Evo nekih uobičajenih problema i njihovih rješenja:

Alternativna rješenja za nadzor

Iako su Prometheus i Grafana moćni alati, oni nisu jedine opcije za prikupljanje i vizualizaciju metrika. Ostala popularna rješenja za nadzor uključuju:

Najbolje rješenje za nadzor za vašu organizaciju ovisit će o vašim specifičnim zahtjevima i budžetu.

Zaključak

Prikupljanje metrika ključno je za održavanje ispravnosti i performansi aplikacija i infrastrukture. Prometheus i Grafana pružaju snažno i fleksibilno rješenje otvorenog koda za prikupljanje, pohranu i vizualizaciju metrika. Razumijevanjem temeljnih koncepata i slijedeći najbolje prakse navedene u ovom vodiču, možete iskoristiti Prometheus i Grafanu za izgradnju robusnog sustava nadzora koji zadovoljava potrebe vaše organizacije.

Učinkovito praćenje, u kombinaciji s proaktivnim upozoravanjem i brzim odgovorom na incidente, temelj je modernih IT operacija. Prihvaćanje alata poput Prometheusa i Grafane omogućuje organizacijama da isporučuju pouzdane i učinkovite usluge svojim korisnicima, bez obzira na njihovu lokaciju ili industriju.