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.

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
Max with offset
Current max

Resultados
enter image description here

Tags:  , ,

Answer

  1. Avatar for 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:

    sum by (service, version, topic, group)(max_over_time(kafka_skipped_consumer_message{server="$server",service="$service",version="$version",namespace="$namespace"}[$__range])) - sum by (service, version, topic, group)(max_over_time(kafka_skipped_consumer_message{server="$server",service="$service",version="$version",namespace="$namespace"} offset $__range)[+$__range])
    

    Explicación:

    • La funció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.
    • La primera parte de la consulta 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.
    • La segunda parte de la consulta 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.
    • Por último, restamos los valores obtenidos en la segunda parte de los de la primera parte para obtener la diferencia.

    Nota: Siempre asegúrate de utilizar los nombres y valores correctos de las etiquetas según tu configuración.

Comments are closed.