¿Cómo puedo monitorear, desde la nube (cosas por ejemplo), algo que no sucede?

7

Tengo algunos casos de uso para esto, pero usaré solo un escenario simple como ejemplo. Quiero monitorear mi raspberry pi y asegurarme de que algunas tareas se completen correctamente. Quiero agregar una línea en un script para publicar en la nube una confirmación cuando se ejecuta el script. Esta parte creo que puedo hacer.

La pregunta que tengo es cómo saber si la tarea no se completó dentro del plazo esperado. Algo similar a lo que hace wdt.io para los trabajos cron. Básicamente algún 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

¿Hay algún servicio que pueda verificar un valor en alguna parte? por ejemplo, un http llega a thingspeak api y actúa dependiendo del valor.

FoxSam12
fuente
Debe descubrir cómo implementar un perro guardián en el servicio de nube que elija. Si no puede encontrar uno, tal vez pueda programar un evento en el futuro y cancelarlo si tiene éxito. Y luego, de cualquier manera, reprograme otra más en el futuro.
Chris Stratton
Estoy buscando un servicio en la nube que haga esto o mejor Estoy buscando un servicio en la nube que pueda verificar un valor en algún lugar y actuar según el valor. Si usted u otra persona conocen dicho servicio, infórmenos.
FoxSam12
¿Has mirado en IFTTT?
Chris Stratton
He examinado ifttt y no puedo entender cómo configurar lo que necesito. Intenté usar webhooks y reaccionar desde el punto de vista pero no sé cómo configurarlo en función de la fecha / hora y el valor.
FoxSam12
Usando Thingspeak, ¿podría configurar un canal de datos proxy que recopile un indicador de estado y un valor de tiempo transcurrido desde su Raspberry Pi? Cuando no se ejecute, establezca ambos en 0, cuando la tarea comience, establezca en 1 y el tiempo transcurrido. Cuando termine, cambie el indicador y el tiempo a 0. Su reacción podría buscar el indicador = 1 y el tiempo transcurrido> X segundos / minutos y actuar en consecuencia.
Geoff

Respuestas:

4

En primer lugar, una manera simple de monitorear este tipo de condiciones es monitorear cuánto tiempo hace que se completó la última tarea.

En lugar de saber cuándo se debe completar el siguiente script, si sabemos si debe ejecutarse cada 6 horas, ahora solo tenemos que comparar el último tiempo de ejecución con 'ahora', si el número de horas entre los dos (now - lastExecution)es mayor que 6, luego dispara tu alerta.

simplemente publique la marca de tiempo cuando la tarea / secuencia de comandos se completó por última vez a las cosas altas, ahora simplemente controle esa marca de tiempo en una frecuencia regular, generalmente más pequeña que el período que está tratando de detectar, si alguna vez es mayor que 'x' minutos atrás, enviar la alerta

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

Si su herramienta de monitoreo no tiene funciones simples de fecha y hora u operaciones lógicas que pueda configurar de la manera anterior ,. cambie su script para informar la marca de tiempo con el período de tiempo 'x' agregado, por lo que si es un script de 6 horas, agregue 6 horas a la marca de tiempo que envía, ahora la lógica de monitoreo es muy simple:

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

Si eso no es apropiado para usted, o tal vez pueda combinarlo con la modificación de su secuencia de comandos para publicar al inicio para borrar un indicador de estado, informe efectivamente que "la secuencia de comandos 1 está comenzando" y, opcionalmente, registre la hora en que comenzó.

Ahora que hay una hora de inicio y una hora de finalización, puede monitorear si es (End-Start)mayor de x horas para determinar si el script tardó en ejecutarse, o si Start > Endel script aún se está ejecutando o no se pudo completar.


Realmente no es así como me gustaría responder a este tipo de preguntas, ya que no deberíamos respaldar productos específicos, pero quiero hacer una excepción en este caso. Hay muchos servicios gratuitos y de pago que puede utilizar para esta tarea. Usa Bing o Google para encontrarlos :)

Yo uso la plataforma Bizeo para este tipo de monitoreo. No estoy afiliado con este producto, pero estoy muy contento con él.

Hay muchas plantillas allí, una hará ping periódicamente a un punto final REST y operará en la respuesta, por lo que puede apuntar directamente a la API de Thingspeak. Hay algunas otras plantillas simples destinadas a ser utilizadas por los usuarios, incluso utilizando correos electrónicos como desencadenante, o la falta de un correo electrónico en un determinado período de tiempo. Las alertas de SMS o correos electrónicos cuando se vence el plazo son fáciles de configurar.

Por lo tanto, puede enviar su notificación a ese servicio directamente, ya sea como un correo electrónico desde su dispositivo, o puede usar su API REST para enviar una notificación de que el script se completó.

Chris Schaller
fuente
¿Hay alguna manera dentro de thingspeak (u otra basada en la nube) para hacer la verificación. Estoy buscando una manera de que todo el monitoreo se realice en la nube.
FoxSam12