es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible obtener el promedio de histogram_quantile de los últimos t minutos?

Lo que pretendo encontrar es el promedio de la latencia p99 en los últimos t minutos.

Intenté esta consulta, pero regresó con el error “solo se permiten rangos para selectores de vectores”

avg_over_time(histogram_quantile(0.99, sum(rate(latency_buckets{service="foo"}[5m])) by (le))[5m])

Por lo que entiendo, lo que hace histogram_quantile es devolver un valor instantáneo (digamos p99) y no hay forma de obtener una serie de valores p99 en un intervalo especificado. Si es así, ¿hay alguna función que pueda lograr el mismo objetivo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el mensaje de error que recibiste se debe a que la función histogram_quantile devuelve un valor escalar instantáneo, pero la función avg_over_time requiere un vector de rango.

    Para calcular el promedio de la latencia p99 en los últimos t minutos, puedes intentar usar la función quantile_over_time en lugar de histogram_quantile. quantile_over_time devuelve un vector de rango que contiene cuantiles para un intervalo de tiempo dado.

    Aquí hay una consulta de ejemplo que debería devolver el promedio de la latencia p99 en los últimos 10 minutos:

    avg_over_time(quantile_over_time(0.99, sum(rate(latency_buckets{service="foo"}[5m])) by (le)[10m:])[10m:])
    

    En esta consulta, primero usamos rate para calcular la tasa por segundo de la métrica latency_buckets en los últimos 5 minutos. Luego sumamos esta tasa por le, lo que nos da el recuento total de solicitudes para cada grupo de latencia. Aplicamos la función quantile_over_time para calcular la latencia p99 para cada grupo durante un rango de 10 minutos. Luego usamos avg_over_time para calcular el promedio de estos valores p99 durante los últimos 10 minutos.

    Ten en cuenta que usamos un selector de rango [10m:] para ambas funciones quantile_over_time y avg_over_time. Esto asegura que solo tengamos en cuenta los datos de los últimos 10 minutos.

Comments are closed.