Saltar al contenido

¿Hay alguna manera de tener un promedio móvil en Grafana?

La guía paso a paso o código que hallarás en este artículo es la resolución más rápida y efectiva que hallamos a esta duda o problema.

Solución:

Grafana apoya la adición de un movingAverage(). También tuve dificultades para encontrarlo en los documentos, pero puedes (algo divertido) ver su uso en la página de introducción de funciones:

Captura de pantalla que muestra la llamada MovingAverage()

Como es normal, haga clic en el título del gráfico, edite, agregue la métrica MovingAverage() como se describe en la documentación de Graphite:

movingAverage(seriesList, windowSize)

Grafica el promedio móvil de una métrica (o métricas) sobre un número fijo de puntos pasados, o un intervalo de tiempo.

Toma una métrica o una lista de series comodín seguida de un número N de puntos de datos o un string con un período de tiempo como ‘1 hora’ o ‘5 minutos’ (consulte desde / hasta en render_api_ para ver ejemplos de formatos de tiempo). Grafica el promedio de los puntos de datos anteriores para cada punto en el gráfico. Todos los puntos de datos anteriores se establecen en Ninguno al comienzo del gráfico.

Ejemplo:

&target=movingAverage(Server.instance01.threads.busy,10)
&target=movingAverage(Server.instance*.threads.idle,'5min')

Grafana no hace cálculos en sí mismo, solo consulta un backend y dibuja buenos gráficos. Entonces, agregar habilidades depende únicamente de su backend. Si bien Graphite admite funciones de ventanas como el promedio móvil, InfluxDB actualmente no lo admite.

Hay bastantes solicitudes de promedio móvil en influxdb en la web. Puede dejar su “+1” y seguir el progreso en este ticket https://github.com/influxdb/influxdb/issues/77

La posible solución (aunque no tan fácil) es crear un script personalizado (cron, daemon, lo que sea) que calculará previamente MA y lo guardará en una serie separada de influxdb.

Me encontré aquí tratando de hacer un promedio móvil en Grafana con una base de datos PostgreSQL, así que agregaré una forma de hacerlo con una consulta SQL:

SELECT
  date as time,
  AVG(daily_average_column) 
    OVER(ORDER BY date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) 
    AS value,
  '5 Day Moving Average' as metric
FROM daily_average_table
ORDER BY time ASC;

Esto utiliza una función de “ventana” para promediar las últimas 4 filas (más la fila actual).

Estoy seguro de que también hay formas de hacer esto con MySQL.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *