Eu tenho alguns casos de uso para isso, mas usarei apenas um cenário simples como exemplo. Quero monitorar meu raspberry pi e garantir que algumas tarefas sejam concluídas corretamente. Quero adicionar uma linha em um script para postar na nuvem uma confirmação quando o script for executado. Esta parte eu acho que posso fazer.
A questão que tenho é como saber se a tarefa não foi concluída dentro do prazo esperado. Algo semelhante ao que o wdt.io faz para tarefas cron. Basicamente, algum tipo de
if time/date is <past expected completion> then check <thingspeak API> for value returned by script
else send email <it seems script1234> failed
Existe um serviço que pode verificar um valor em algum lugar? por exemplo, um http chega à API do thingspeak e age de acordo com o valor.
monitoring
FoxSam12
fonte
fonte
Respostas:
Em primeiro lugar, uma maneira simples de monitorar esses tipos de condições é monitorar há quanto tempo a última tarefa foi concluída.
Em vez de saber quando o próximo script deve ser concluído, se sabemos se deve ser executado a cada 6 horas, agora precisamos comparar o último tempo de execução com 'agora', se o número de horas entre os dois
(now - lastExecution)
for maior que 6, em seguida, ative seu alerta.simplesmente poste o carimbo de data e hora da última vez em que a tarefa / script foi concluída, agora você simplesmente monitora esse carimbo de data e hora em uma frequência regular, geralmente menor que o período que você está tentando detectar, se for maior que 'x' minutos atrás, envie o alerta.
Se sua ferramenta de monitoramento não possui funções simples de data e hora ou operações lógicas que você pode configurar da maneira acima. altere seu script para relatar o registro de data e hora com o período 'x' adicionado; portanto, se for um script de 6 horas, adicione 6 horas ao registro de data e hora enviado, agora a lógica de monitoramento é muito simples:
Se isso não for apropriado para você, ou talvez você possa combinar isso com a modificação do script para postar no início para limpar um sinalizador de status, relate efetivamente que "o script 1 está iniciando" e, opcionalmente, registre a hora em que foi iniciado.
Agora que existe uma hora de início e uma hora de término, é possível monitorar se for
(End-Start)
maior que x horas para determinar se o script demorou muito para ser executado ou seStart > End
o script ainda está em execução ou falhou em concluir.Eu uso a plataforma Bizeo para esse tipo de monitoramento. Não sou afiliado a este produto, mas estou muito feliz com ele
Existem muitos modelos, um periodicamente executa ping em um terminal REST e opera na resposta, para que você possa direcionar diretamente a API do thingspeak. Existem outros modelos simples destinados a serem acionados pelos usuários, mesmo usando emails como acionador, ou a falta de um email em um determinado período. Os alertas ou e-mails SMS quando o prazo é cumprido são fáceis de configurar.
Portanto, você pode enviar sua notificação diretamente para esse serviço, como um email do seu dispositivo, ou usar a API REST para enviar uma notificação de que o script foi concluído.
fonte