Cómo restar dos sumas agrupadas de una métrica en Grafana
Tengo un consumidor de mensajes métricos de Kafka “skipped” y quiero obtener la diferencia entre el valor máximo actual y el valor máximo compensado por $ _ rango.
Encuentro el valor máximo actual.
sum by (service, version, topic, group)(max(kafka_skipped_consumer_message{server=~"$server",service=~"$service",version=~"$version",namespace=~"$namespace"}))
Y el valor máximo con una compensación.
sum by (service, version, topic, group)(max(kafka_skipped_consumer_message{server=~"$server",service=~"$service",version=~"$version",namespace=~"$namespace"} offset $__range))
Luego intento restarlos, pero no obtengo el resultado que espero.
sum by (service, version, topic, group)(max(kafka_skipped_consumer_message{server=~"$server",service=~"$service",version=~"$version",namespace=~"$namespace"})) - sum by (service, version, topic, group)(max(kafka_skipped_consumer_message{server=~"$server",service=~"$service",version=~"$version",namespace=~"$namespace"} offset $__range))
Datos
Resultados
davy.ai
Para obtener la diferencia entre el valor máximo actual y el valor máximo compensado por $range para las métricas kafka_skipped_consumer_message, puedes utilizar la siguiente consulta en Prometheus:
Explicación:
max_over_time
se utiliza para calcular los valores máximos de las métricas en un rango de tiempo dado.sum by (service, version, topic, group)
agrupa las métricas por estas etiquetas.max_over_time(kafka_skipped_consumer_message{server="$server",service="$service",version="$version",namespace="$namespace"}[$__range])
calcula el valor máximo actual para las métricas dadas en el rango de tiempo$range
.max_over_time(kafka_skipped_consumer_message{server="$server",service="$service",version="$version",namespace="$namespace"} offset $__range)[+$__range]
calcula el valor máximo para las mismas métricas pero con un desplazamiento de$range
. El extra[+$__range]
al final se utiliza para alinear los valores con el rango de tiempo de la primera parte.Nota: Siempre asegúrate de utilizar los nombres y valores correctos de las etiquetas según tu configuración.