¿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?
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ónavg_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 dehistogram_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:
En esta consulta, primero usamos
rate
para calcular la tasa por segundo de la métricalatency_buckets
en los últimos 5 minutos. Luego sumamos esta tasa porle
, lo que nos da el recuento total de solicitudes para cada grupo de latencia. Aplicamos la funciónquantile_over_time
para calcular la latencia p99 para cada grupo durante un rango de 10 minutos. Luego usamosavg_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 funcionesquantile_over_time
yavg_over_time
. Esto asegura que solo tengamos en cuenta los datos de los últimos 10 minutos.