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

Como calcular taxa de eventos por segundo em Real-Time Analytics

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

Este tutorial mostra como calcular a taxa de eventos por segundo (EPS) em Real-Time Analytics para monitorizar sistemas e alertas. Saber o EPS ajuda a detetar picos, congestionamentos e regressões de desempenho de forma imediata.

Pré-requisitos

  • Fonte de eventos em streaming (ex.: eventos enviados para um serviço como Azure Event Hubs ou Kafka).
  • Armazenamento/consulta em tempo real compatível com KQL (ex.: Azure Data Explorer / Kusto) ou similar.
  • Conhecimentos básicos de KQL e de janelas temporais (sliding, tumbling).

Passo 1: Escolher a janela temporal e o tipo de agregação

Decidir a granularidade: janelas de 1s/5s/1m são comuns. Para deteção rápida de picos use janelas curtas (1s-5s); para tendências use 1m ou mais. A agregação principal é a contagem de eventos por janela e, opcionalmente, média móvel para suavizar ruído.

Passo 2: Escrever a consulta base para contar eventos por janela (exemplo KQL)

Esta consulta conta eventos por janelas de 5 segundos usando bin(), e calcula a taxa por segundo dividindo pela duração da janela. Substitua EventTime e MyTable pelo nome real da coluna/tabela.

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

Passo 3: Calcular uma média móvel para reduzir ruído

Uma média móvel simples (rolling average) torna a visualização mais estável. Aqui usamos the series_fir ou simples moving_avg com prev e next para Kusto; se não estiver disponível, usa-se um self-join ou make-series. Exemplo com make-series para janelas regulares e 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)  // média móvel de 6 pontos (~30s)

Passo 4: Tratar janelas vazias e normalizar

É comum ter intervalos sem eventos; assegure-se de que esses pontos aparecem com valor zero para não enviesar a média. No exemplo acima, make-series garante pontos com zero. Se usar summarize+bin, adiciona-se um range contínuo e faz-se left-join.

// alternativa usando summarize+bin e fill de zeros
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

Passo 5: Calcular thresholds e detetar anomalias simples

Defina thresholds estáticos (ex.: eps > 100) ou dinâmicos usando média + k*desvio. Exemplo dinâmico com desvio padrão para assinalar picos.

// calcula média e stdev sobre os últimos 10m e 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 o resultado

Crie um dashboard/visualização com duas séries: eps e eps_ma (média móvel). Verifique que pontos com is_spike=true coincidem com picos visíveis. Confirme também que períodos sem eventos mostram eps=0. Teste com dados sintéticos: injete eventos a alta taxa para ver picos detetados.

Conclusão

Calcular a taxa de eventos por segundo (EPS) em Real-Time Analytics permite monitorizar desempenho e disparar alertas. Próximos passos: integrar esta consulta num pipeline de alertas (ex.: regras de alerta que disparem quando is_spike=true) ou correlacionar EPS com métricas de infraestruturas. Dica: experimente ajustar a duração da janela e o tamanho da média móvel para equilibrar sensibilidade e ruído.