Sobes.tech
Middle

Ce tipuri de metrici în Prometheus cunoști?

sobes.tech AI

Răspuns de la AI

Prometheus suportă patru tipuri principale de metrici:

  1. Counter (Contor): Valoare monoton crescută, care poate doar crește (sau se resetează la zero la repornirea procesului). Folosit pentru numărarea evenimentelor incrementale, cum ar fi solicitări, erori sau sarcini finalizate.
    // Exemplu în Go
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Numărul total de solicitări HTTP.",
        },
    )
    
  2. Gauge (Indicativ): Valoare numerică arbitrară care poate crește sau scade. Folosit pentru măsurarea stării actuale a ceva, cum ar fi utilizarea CPU, memoria, numărul de utilizatori activi sau dimensiunea cozii.
    # Exemplu în Python
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Procentul de utilizare curentă a CPU')
    cpu_usage.set(55.5)
    
  3. Histogram (Histogramă): Măsoară distribuția probelor (de exemplu, timpii de răspuns ai solicitărilor) și le grupează în coșuri configurabile. Permite obținerea datelor despre numărul de probe în fiecare coș și suma totală a valorilor. Folosit pentru analiza latenței.
    // Exemplu în Java
    import io.prometheus.client.Histogram;
    
    static final Histogram requestLatencies = Histogram.build()
        .name("http_request_duration_seconds")
        .help("Durata solicitării în secunde.")
        .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Coșuri
        .register();
    
  4. Sumar (Summary): Similar cu histogramul, dar calculează cuantile configurabile ale distribuției probelor într-o fereastră de timp glisantă. De asemenea, oferă numărul total de probe și suma lor. Potrivit pentru măsurarea latenței, când cuantilele sunt importante, dar necesită mai multă putere de calcul pe client și poate oferi cuantile mai puțin precise în agregare.
    # Exemplu în Ruby
    require 'prometheus/client'
    
    requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Durata solicitării în secunde.')
    

Alegerea tipului de metrică depinde de natura datelor care trebuie monitorizate.