Sobes.tech
Middle

¿Qué tipos de métricas en Prometheus conoces?

sobes.tech AI

Respuesta de la IA

Prometheus soporta cuatro tipos principales de métricas:

  1. Contador (Counter): Valor que solo puede aumentar de manera monótonica (o restablecerse a cero al reiniciar el proceso). Se usa para contar eventos incrementales, como solicitudes, errores o tareas completadas.
    // Ejemplo en Go
    var requestsTotal = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Número total de solicitudes HTTP.",
        },
    )
    
  2. Gauge (Indicador): Valor numérico arbitrario que puede aumentar o disminuir. Se usa para medir el estado actual de algo, como uso de CPU, memoria, número de usuarios activos o tamaño de la cola.
    # Ejemplo en Python
    from prometheus_client import Gauge
    
    cpu_usage = Gauge('cpu_usage_percent', 'Porcentaje de uso actual de CPU')
    cpu_usage.set(55.5)
    
  3. Histograma (Histogram): Mide la distribución de muestras (por ejemplo, tiempos de respuesta de solicitudes) y las agrupa en cubos configurables. Permite obtener datos sobre la cantidad de muestras en cada cubo y la suma total de valores. Se usa para analizar latencias.
    // Ejemplo en Java
    import io.prometheus.client.Histogram;
    
    static final Histogram requestLatencies = Histogram.build()
        .name("http_request_duration_seconds")
        .help("Duración de la solicitud en segundos.")
        .buckets(0.1, 0.5, 1.0, 2.5, 5.0, 10.0) // Cubos
        .register();
    
  4. Resumen (Summary): Similar a un histograma, pero calcula cuantiles configurables de la distribución de muestras en una ventana de tiempo deslizante. También proporciona el conteo total de muestras y su suma. Es útil para medir latencias cuando los cuantiles son importantes, aunque requiere más potencia de cálculo en el cliente y puede dar cuantiles menos precisos en agregaciones.
    # Ejemplo en Ruby
    require 'prometheus/client'
    
    requests_summary = Prometheus::Client::Summary.new(:request_duration_seconds, 'Duración de la solicitud en segundos.')
    

La elección del tipo de métrica depende de la naturaleza de los datos que se desea monitorear.