Sobes.tech
Middle

Welke soorten metrics in Prometheus ken je?

sobes.tech AI

Antwoord van AI

Prometheus ondersteunt vier hoofdtypen metriek:

  1. Counter (Teller): Monoton toenemend waarde die alleen kan toenemen (of teruggezet worden naar nul bij herstart van het proces). Gebruikt voor het tellen van incrementele gebeurtenissen, zoals verzoeken, fouten of voltooide taken.
    // Voorbeeld in Go
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Totaal aantal HTTP-verzoeken.",
        },
    )
    
  2. Gauge (Waardemeter): Arbitrair numeriek waarde die kan toenemen of afnemen. Gebruikt om de huidige staat van iets te meten, zoals CPU-gebruik, geheugen, aantal actieve gebruikers of wachtrijgrootte.
    # Voorbeeld in Python
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Huidig CPU-gebruik percentage')
    cpu_usage.set(55.5)
    
  3. Histogram (Histogram): Meet de verdeling van steekproeven (bijvoorbeeld, responsetijden van verzoeken) en groepeert ze in configureerbare buckets. Biedt gegevens over het aantal steekproeven in elke bucket en de totale som van de waarden. Gebruikt voor latentie-analyse.
    // Voorbeeld in Java
    import io.prometheus.client.Histogram;
    
    static final Histogram requestLatencies = Histogram.build()
        .name("http_request_duration_seconds")
        .help("Verzoekduur in seconden.")
        .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Buckets
        .register();
    
  4. Samenvatting (Summary): Gelijkaardig aan histogram, maar berekent configureerbare kwantielen van de steekproevenverdeling in een glijdend tijdsvenster. Biedt ook het totale aantal steekproeven en hun som. Geschikt voor het meten van latenties, wanneer kwantielen belangrijk zijn, maar vereist meer rekenkracht op de client en kan minder nauwkeurige kwantielen geven bij aggregatie.
    # Voorbeeld in Ruby
    require 'prometheus/client'
    
    requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Verzoekduur in seconden.')
    

De keuze van het metriektype hangt af van de aard van de gegevens die gemonitord moeten worden.