Changes

Metrics and Monitoring in swarm

3,423 bytes added, 21:12, 7 August 2018
Metrika a Prometheus-ban
==Metrika a Prometheus-ban==
===Címkék, plusz dimenziók===
A Prometheus szabványú metrikában további dimenziókat lehet bevezetni minden metrikához úgynevezett metrika címkékkel, amiket a metrikát szolgáltató rendszer (pl egy apache) hozzáfűz a metrika nevéhez. A címkék tehát tovább specializálnak egy metrikát, pl egy http proxy a ''proxy_http_request_total'' nevű metrikával mondhatja meg, hogy a lekérdezési időpontjáig hány kérés érkezett a proxy-hoz. De ezt tovább specializálhatja címkék bevezetésével. Az alábbi példában a '''method''' és a '''status''' címéket használta a proxy a ''proxy_http_request_total'' metrika finomításához. Az alábbi példában tehát a metrika értéke nem az összes request-re vonatkozik, csak azokra amiket GET-el kértek le, és amiknek 200-as volt a státusza.
proxy_http_request_total{method="GET", status="200"} 13
===Honnan jön a metrika===
Metrikát magáról nagyon sok rendszer tud szolgáltatni, pl a ''Traefik'' reverse proxy, vagy ahogy azt majd látni fogjuk, akár a docker daemon is képes metrikákat szolgáltatni saját magáról. Általában ezekre szolgáltat egy http interfészt a metrikát adó rendszer, amit a '''/metrics''' URL-en lehet elérni. A http interfészek esetében PULL metrika begyűjtésről beszélünk, vagyis a Prometheus (vagy bármelyik másik TSDB) a konfigurációja alapján periodikusan (pár másodpercenként) meghívja a megfelelő URL-t, ahol visszakapja az aktuális metrika listát, amit beír az adatbázisba.
Léteik PUSH alapú metrika gyújtés is.
 
 
A Prometheus 4 nyelven is ad API-t metrika szolgáltatás írására: Go, Java, Python, Ruby.
 
 
hogy néz ki a java??
 
 
===Metrika típusok===
A Prometheus 4 féle metrika típust definál, Jeleleg 4 féle metrikát különböztet meg, de ezek csak az API szinten vannak megkülönböztetve, a Prometheus-ban már nincsenek, ott nekünk kell tudni, hogy értelmes e amit felírunk szabály az adott metrikára. (https://prometheus.io/docs/concepts/metric_types/)
 
- Counter (számláló): számláló, aminen csak nőhet az értéke, resettel 0-ra vált. Pl total requst szám.
- Gauge (mérő) : egy mérőszám, ami fel és le is mehet, pl memória használat.
 
 
Egy részletes leírás a Historam-ról és Summary-ről itt: https://prometheus.io/docs/practices/histograms/
 
 
- Histogram : időegységenként összegzet értéke pl request kiszolgáltási idők:
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.001"} 1
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.002"} 1331
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.004"} 1767
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.008"} 1803
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.016"} 1878
 
itt ez a base neve a metrikának: etcd_disk_wal_fsync_duration_seconds ehhez jön hozzá a _bucket név, jelezve, hogy ez histogram, majd a címke mindig le=<összegzett idő>
 
ehhez mindig tartok egy <base_nave>_sum és egy <base_nev>_count nevű metrkia is,
- sum: az eddigi összes megfigyelés értéke, amióta a rendszer elindult
- count: az eddig összes megfigyelés darabszáma (vagyis az összes ugyan olyan _bucket-es sorok száma, amitóa a rendszer elindult)
 
- Summary: A címke neve mindig "quantile", és a base név után nincs semmi.
 
<basename>{quantile="<φ>"}
 
go_gc_duration_seconds{quantile="0"} 2.2683e-05
go_gc_duration_seconds{quantile="0.25"} 2.784e-05
go_gc_duration_seconds{quantile="0.5"} 3.3507e-05
 
 
 
A job-okra és intanciákra vannak beépített metrikák, amiekt a prometheus magától gyárt le: https://prometheus.io/docs/concepts/jobs_instances/
 
up{job="<job-name>", instance="<instance-id>"}: 1 if the instance is healthy, i.e. reachable, or 0 if the scrape failed.
scrape_duration_seconds{job="<job-name>", instance="<instance-id>"}: duration of the scrape.
scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"}: the number of samples remaining after metric relabeling was applied.
scrape_samples_scraped{job="<job-name>", instance="<instance-id>"}: the number of samples the target exposed.
 
tehát az up+ job név label-t nem a intance küldi magáról, hanem a prométheus gyártja le az alapján hogy mikor elérhető vagy mikor nem az instancia.