Alertas que param de tocar
O alerta de janela dupla: a longa evita o pico de 30 segundos, a curta faz o alerta parar quando o problema passou.
Alerta é sobre o que exige ação agora. Um que dispara todo dia deixa de ser lido em uma semana — e o que importa passa despercebido junto. O desenho que resolve isso é o de duas janelas do livro de SRE do Google: dispara só quando a janela longa e a curta queimam acima do limiar.
dataforge
adopt Arcane.Observar as O
// a última hora e os últimos cinco minutos, com objetivo de 99,9%
incidente := O.alerta_slo(0.999, {"total": 10000, "falhas": 200}, {"total": 800, "falhas": 20})
assert incidente["disparar"]
ja_passou := O.alerta_slo(0.999, {"total": 10000, "falhas": 200}, {"total": 800, "falhas": 1})
assert not ja_passou["disparar"]
out ja_passou["motivo"]
pico := O.alerta_slo(0.999, {"total": 10000, "falhas": 5}, {"total": 800, "falhas": 20})
assert not pico["disparar"]
out pico["motivo"]| Janela longa | Janela curta | Alerta | Porque |
|---|---|---|---|
| queima | queima | dispara | o problema existe e continua |
| queima | não queima | cala | o problema passou — a longa ainda carrega o passado |
| não queima | queima | cala | um pico curto, que o orçamento absorve |
Regras de limite simples#
Para o que não é SLO — fila acima de um tamanho, disco acima de uma porcentagem —, O.alertar confere regras sobre as métricas do painel:
dataforge
adopt Arcane.Observar as O
p := O.painel("worker")
O.marcar(p, "fila", 140)
disparados := O.alertar(p, [{"metrica": "fila", "acima": 100, "texto": "fila acumulando"}])
assert disparados[0]["texto"] is "fila acumulando"