Sobes.tech
Middle

Kokius metrikos tipus žinote Prometheus?

sobes.tech AI

Atsakymas iš AI

Prometheus palaiko keturis pagrindinius metrikos tipus:

  1. 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",
        },
    )
    
  2. 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)
    
  3. 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();
    
  4. 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.