(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo calcular la tasa de eventos por segundo en Real-Time Analytics

João Barros 22 de September de 2026 4 min de lectura

Este tutorial muestra cómo calcular la tasa de eventos por segundo (EPS) en Real-Time Analytics para supervisar sistemas y alertas. Conocer el EPS ayuda a detectar picos, congestiones y regresiones de rendimiento de forma inmediata.

Requisitos previos

  • Fuente de eventos en streaming (p. ej.: eventos enviados a un servicio como Azure Event Hubs o Kafka).
  • Almacenamiento/consulta en tiempo real compatible con KQL (p. ej.: Azure Data Explorer / Kusto) o similar.
  • Conocimientos básicos de KQL y de ventanas temporales (sliding, tumbling).

Paso 1: Elegir la ventana temporal y el tipo de agregación

Decidir la granularidad: ventanas de 1s/5s/1m son comunes. Para detección rápida de picos use ventanas cortas (1s-5s); para tendencias use 1m o más. La agregación principal es el recuento de eventos por ventana y, opcionalmente, media móvil para suavizar ruido.

Paso 2: Escribir la consulta base para contar eventos por ventana (ejemplo KQL)

Esta consulta cuenta eventos por ventanas de 5 segundos usando bin(), y calcula la tasa por segundo dividiendo por la duración de la ventana. Sustituya EventTime y MyTable por el nombre real de la columna/tabla.

MyTable
| where EventTime >= ago(10m)
| summarize count_events = count() by bin(EventTime, 5s)
| extend eps = todouble(count_events) / 5.0
| order by EventTime asc

Paso 3: Calcular una media móvil para reducir ruido

Una media móvil simple (rolling average) hace que la visualización sea más estable. Aquí usamos the series_fir o simple moving_avg con prev y next para Kusto; si no está disponible, se usa un self-join o make-series. Ejemplo con make-series para ventanas regulares y moving_avg.

MyTable
| where EventTime >= ago(10m)
| make-series count_events = count() on EventTime in range(now(-10m), now(), 5s)
| mv-expand EventTime to typeof(datetime), count_events to typeof(long)
| extend eps = todouble(count_events) / 5.0
| serialize
| extend eps_ma = moving_avg(eps, 6)  // media móvil de 6 puntos (~30s)

Paso 4: Manejar ventanas vacías y normalizar

Es común tener intervalos sin eventos; asegúrese de que esos puntos aparezcan con valor cero para no sesgar la media. En el ejemplo anterior, make-series garantiza puntos con cero. Si usa summarize+bin, añádase un rango continuo y haga un left-join.

// alternativa usando summarize+bin y fill de ceros
let times = range t from ago(10m) to now() step 5s;
let counts = MyTable
| where EventTime >= ago(10m)
| summarize c = count() by bin(EventTime, 5s);
times
| join kind=leftouter (counts) on $left.t == $right.EventTime
| extend count_events = coalesce(c, 0)
| extend eps = todouble(count_events) / 5.0

Paso 5: Calcular umbrales y detectar anomalías simples

Defina umbrales estáticos (p. ej.: eps > 100) o dinámicos usando media + k*desviación. Ejemplo dinámico con desviación estándar para señalar picos.

// calcula media y stdev sobre los últimos 10m y marca picos
let series = (
  MyTable
  | where EventTime >= ago(10m)
  | make-series count_events = count() on EventTime in range(now(-10m), now(), 5s)
  | mv-expand EventTime to typeof(datetime), count_events to typeof(long)
  | extend eps = todouble(count_events) / 5.0
);
let stats = series | summarize mu = avg(eps), sigma = stdev(eps);
series
| extend mu = toscalar(stats.mu), sigma = toscalar(stats.sigma)
| extend is_spike = eps > mu + 3.0 * sigma

Verificar el resultado

Crear un dashboard/visualización con dos series: eps y eps_ma (media móvil). Verifique que los puntos con is_spike=true coinciden con picos visibles. Confirme también que periodos sin eventos muestran eps=0. Pruebe con datos sintéticos: inyecte eventos a alta tasa para ver picos detectados.

Conclusión

Calcular la tasa de eventos por segundo (EPS) en Real-Time Analytics permite supervisar rendimiento y disparar alertas. Siguientes pasos: integrar esta consulta en un pipeline de alertas (p. ej.: reglas de alerta que se disparen cuando is_spike=true) o correlacionar EPS con métricas de infraestructura. Consejo: experimente ajustando la duración de la ventana y el tamaño de la media móvil para equilibrar sensibilidad y ruido.