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.
monitoring
FoxSam12
fuente
fuente
Respuestas:
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
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:
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 siStart > End
el script aún se está ejecutando o no se pudo completar.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ó.
fuente