Como identificar picos, falhas e comportamentos fora do normal usando estatística básica em logs, métricas e sistemas de monitoramento.
1. Introdução
Toda infraestrutura apresenta padrões: consumo de CPU, uso de memória, número de requisições por segundo, latência de rede, entre outros.
Mas… como saber quando algo está realmente fora do normal, sem depender de sistemas com IA ou soluções pagas de monitoração?
A resposta está na estatística clássica: você só precisa entender três conceitos simples:
- Média
- Desvio padrão
- Z-score (ou escore padronizado)
Com isso, é possível detectar anomalias em tempo real com uma precisão absurda.
2. O que é média móvel
A média móvel é a média dos últimos N valores registrados. Por exemplo, se você mede o uso de CPU a cada minuto, a média móvel de 10 minutos é:
(Soma dos últimos 10 valores) / 10
Isso serve para suavizar variações e acompanhar o “ritmo natural” do sistema.
Exemplo:
[32, 33, 31, 30, 34, 35, 33, 32, 31, 50] → média = 34.1
Nesse caso, o último valor (50) parece alto. Mas será que é realmente um problema? Pra isso existe o desvio padrão.
3. O que é desvio padrão
Desvio padrão é uma medida de dispersão. Ele mostra o quão “espalhados” estão os valores em relação à média.
Fórmula do desvio padrão (σ):
σ = √(Σ(xᵢ – μ)² / N)
Em português: pegue a diferença de cada valor com a média, eleve ao quadrado, tire a média disso tudo, e no fim a raiz quadrada.
Se os valores estiverem todos próximos da média, o desvio padrão será pequeno. Se houver muito espalhamento (como um pico), o desvio será maior.
4. Como detectar anomalias com z-score
O z-score (ou escore padronizado) é uma fórmula simples:
z = (x – μ) / σ
Ele mostra quantos desvios padrão um valor está acima ou abaixo da média.
Exemplo:
- Média = 34.1
- Desvio padrão = 6.1
- Último valor = 50
- z = (50 – 34.1) / 6.1 ≈ 2.6
Se o z-score for maior que 2 ou menor que -2, isso já pode ser considerado uma anomalia estatística.
5. Exemplo prático com Python
Um script simples que simula leitura de métricas (por exemplo, requisições por segundo) e detecta desvios.
import statistics
valores = [32, 33, 31, 30, 34, 35, 33, 32, 31, 50]
media = statistics.mean(valores)
desvio = statistics.stdev(valores)
print(f"Média: {media:.2f}")
print(f"Desvio padrão: {desvio:.2f}")
ultimo = valores[-1]
z = (ultimo - media) / desvio
print(f"Último valor: {ultimo}")
print(f"Z-score: {z:.2f}")
if abs(z) > 2:
print("⚠️ Anomalia detectada!")
else:
print("Comportamento normal.")
Você pode adaptar esse script para coletar dados do Grafana, Prometheus, SNMP, ou até mesmo arquivos de log.
6. Aplicações reais em servidores
- Detecção de ataque DDoS: se a taxa de requisição subir 3 desvios acima da média, pode ser ataque.
- Alertas de falha em serviços: se a resposta de um serviço cair abaixo do desvio padrão, pode indicar falha.
- Monitoramento de banco de dados: picos fora do padrão de uso de queries ou locks.
- Análise de desempenho: queda no throughput ou aumento de latência fora do comportamento histórico.
Tudo isso pode ser feito localmente, com scripts Python, shell, cronjobs e alertas por Telegram ou e-mail. Sem precisar de Zabbix, Grafana ou outros, se você quiser simplicidade.
7. Considerações finais
Estatística básica resolve muito mais do que se imagina. A maioria dos comportamentos fora do normal em sistemas pode ser identificada com média, desvio padrão e z-score.
Não é necessário IA. Não é necessário big data. Só entendimento do comportamento natural da sua rede ou sistema.
Se você entende a matemática por trás, pode construir ferramentas de monitoramento que realmente fazem sentido — e não só enfeitam dashboards.
DevData: conhecimento que resolve, e não tutorial de PowerPoint.