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.
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.
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.
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.
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.
Um pedido HTTP no fim da sua tarefa, a partir de qualquer coisa capaz de o fazer:
curl no fim de um script de shell ou de um entrypoint Docker.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.
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.
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 →