Como posso monitorar, a partir da nuvem (por exemplo, algo que fala), algo que não está acontecendo?

7

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.

FoxSam12
fonte
Você precisa descobrir como implementar um cão de guarda em seu serviço de nuvem preferido. Se você não encontrar um, talvez possa agendar um evento no futuro e cancelá-lo se obtiver sucesso. E então, de qualquer maneira, reagendar outra para o futuro.
Chris Stratton
Estou procurando um serviço em nuvem que faça isso ou melhor. Estou procurando um serviço em nuvem que possa verificar um valor em algum lugar e agir de acordo com o valor. Se você ou outra pessoa souber desse serviço, informe-nos.
FoxSam12
Você já viu o IFTTT?
Chris Stratton
Eu olhei para o ifttt e simplesmente não consigo descobrir como configurar o que preciso. Tentei usar webhooks e reagir com o thingspeak, mas não sei como configurá-lo com base na hora / data e no valor!
FoxSam12
Usando o Thingspeak, você pode configurar um canal de dados proxy que coleta uma bandeira de estado e um valor decorrido no tempo do seu Raspberry Pi? Quando não estiver em execução, defina ambos como 0, quando a tarefa iniciar definida como 1 e o tempo decorrido. Quando terminar, altere o sinalizador e retorne a 0. O seu reagente poderá procurar o sinalizador = 1 e o tempo decorrido> X segundos / minutos e agir em conformidade.
Geoff

Respostas:

4

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.

if <thingspeak API - Last Execution> more than x hours ago
send email <it seems script1234> failed

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:

if <thingspeak API - Last Execution Expiry> greater than now
send email <it seems script1234> failed

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 se Start > Endo script ainda está em execução ou falhou em concluir.


Não é assim que eu gostaria de responder a esses tipos de perguntas, pois não deveríamos endossar produtos específicos, mas quero abrir uma exceção nesse caso. Existem muitos serviços gratuitos e pagos que você pode usar para esta tarefa. Use o Bing ou o Google para encontrá-los :)

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.

Chris Schaller
fonte
Existe uma maneira dentro do thingspeak (ou outro baseado na nuvem) de fazer a verificação. Estou procurando uma maneira de fazer todo o monitoramento na nuvem.
precisa saber é o seguinte