Monitorização de cron que compreende o seu agendamento

A sua tarefa envia um ping para um URL quando termina. O silêncio além do prazo é uma falha — e se der ao okokumo a linha de crontab, o prazo segue o agendamento real em vez de um intervalo fixo.

A falha que ninguém nota

Uma tarefa cron que se avaria ruidosamente é notada. Uma tarefa cron que deixa de ser agendada — a linha de crontab perdida numa migração de servidor, o contentor que já não arranca, o worker da fila levado pelo OOM killer — não produz erro, nem e-mail, nem linha de log. Simplesmente nunca volta a correr, e descobre-o quando alguém pergunta porque é que as faturas não saíram.

A monitorização heartbeat inverte uma verificação HTTP. Em vez de o okokumo interrogar o seu serviço, é a sua tarefa que chama um URL de ping único após cada execução bem-sucedida. Se a janela passar, o okokumo dá o alarme — porque a ausência do sinal é o sinal.

Um período, ou a própria linha de crontab

A forma simples é um período mais um tempo de tolerância: "espera um ping a cada hora, permite dez minutos de folga". Isso funciona até o agendamento deixar de ser uniforme.

0 3 * * 1-5 — as 3 em dias úteis — são 24 horas entre segunda e terça e 72 horas entre sexta e segunda. Um intervalo fixo não consegue descrever isso. Ponha-o a 24 horas e alerta-o todos os sábados de manhã; ponha-o a 72 e uma tarefa que parou em silêncio na terça passa despercebida até sexta.

Por isso uma verificação cron pode aceitar a própria expressão crontab, mais o fuso horário IANA em que corre a crontab do seu servidor. O prazo passa a ser a próxima execução agendada mais o tempo de tolerância, recalculado depois de cada ping. Uma tarefa só de dias úteis fica silenciosa todo o fim de semana, e uma execução falhada na terça é apanhada dentro da sua própria janela de tolerância.

Porque o fuso horário é por verificação

Uma crontab dispara na hora local do seu host. Um desvio UTC fixo desloca-se uma hora em cada mudança da hora de verão, e desloca-se no sentido do falso alarme — as 03:00 em Paris são 01:00 UTC no inverno e 02:00 UTC no verão. Cada verificação leva o seu próprio fuso, para que servidores em regiões diferentes não tenham de chegar a acordo.

Veja o agendamento antes de confiar nele

O formulário lista as próximas execuções enquanto escreve, cada uma com o seu desvio. Uma expressão cron é fácil de errar de forma subtil — os campos dia-do-mês e dia-da-semana são combinados com OU, não com E, o que surpreende quase todos uma vez — e aqui um agendamento errado significa um aviso perdido, não um defeito estético.

Como funciona o escalonador →

Chamar o URL de ping

Um pedido HTTP no fim da sua tarefa, a partir de qualquer coisa capaz de o fazer:

Envie o ping depois de o trabalho ter corrido bem, não no início do script. Uma tarefa que arranca, falha e envia o ping mesmo assim é uma tarefa que se declara saudável enquanto não faz nada.

Os limites do plano aplicam-se ao agendamento real

O intervalo mínimo do seu plano é verificado contra o intervalo mais curto que a expressão realmente produz, amostrado ao longo das próximas cinquenta ocorrências em vez de deduzido. Assim * * * * * é recusado no Free exatamente como um intervalo de 60 segundos, e um agendamento irregular não precisa de caso especial.

Os mesmos alertas que tudo o resto

E-mail, Telegram, Slack, Discord ou um webhook assinado; encaminhamento por verificação ou uma predefinição da organização; um registo de entregas que mostra o que foi enviado e o que foi ignorado. Como funcionam os alertas →