Pular para o conteúdo

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 longaJanela curtaAlertaPorque
queimaqueimadisparao problema existe e continua
queimanão queimacalao problema passou — a longa ainda carrega o passado
não queimaqueimacalaum 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"