Middle
Kokius metrikos tipus žinote Prometheus?
sobes.tech AI
Atsakymas iš AI
Prometheus palaiko keturis pagrindinius metrikos tipus:
- Skaitiklis (Counter): Monotoninis augantis reikšmė, kuri gali tik didėti (arba būti nustatyta iš naujo į nulį proceso perkrovimo metu). Naudojamas inkrementalinių įvykių skaičiavimui, pvz., užklausų, klaidų ar užbaigtų užduočių skaičiui.
// Pavyzdys Go kalba var requestsTotal = prometheus.NewCounter( prometheus.CounterOpts{ Name: "http_requests_total", Help: "Bendras HTTP užklausų skaičius", }, ) - Jutiklis (Gauge): Bet kokia skaitinė reikšmė, kuri gali didėti arba mažėti. Naudojama esamos būsenos matavimui, pvz., CPU apkrovai, atminties naudojimui, aktyvių vartotojų skaičiui ar eilės dydžiui.
# Pavyzdys Python kalba from prometheus_client import Gauge cpu_usage = Gauge('cpu_usage_percent', 'Dabartinis CPU naudojimo procentas') cpu_usage.set(55.5) - Histogramas (Histogram): Matuoja mėginių pasiskirstymą (pvz., užklausų atsako laiką) ir grupuoja juos pagal konfigūruojamus kibirus (buckets). Leidžia gauti duomenis apie mėginių skaičių kiekviename kibire ir jų bendrą sumą. Naudojamas vėlavimų analizei.
// Pavyzdys Java kalba import io.prometheus.client.Histogram; static final Histogram requestLatencies = Histogram.build() .name("http_request_duration_seconds") .help("Užklausos trukmė sekundėmis") .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Kibirai .register(); - Santrauka (Summary): Panaši į histogramą, bet kliento pusėje apskaičiuoja konfigūruojamus pasiskirstymo kvantilius judančiame laiko lange. Taip pat pateikia bendrą mėginių skaičių ir jų sumą. Tinka vėlavimų matavimui, kai svarbūs kvantiliai, tačiau reikia atsižvelgti, kad kliento pusės skaičiavimas reikalauja daugiau skaičiavimo galios ir gali sukelti mažiau tikslius kvantilius surinkimo metu.
# Pavyzdys Ruby kalba require 'prometheus/client' requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Užklausos trukmė sekundėmis.')
Metrikos tipo pasirinkimas priklauso nuo duomenų pobūdžio, kuriuos reikia stebėti.