Soy un desarrollador web solitario con mi propio VPS Centos que aloja algunos sitios web pequeños para mis clientes. Hoy descubrí que mi servicio httpd se había detenido (sin razón aparente, pero ese es otro hilo). Lo reinicié, pero ahora necesito encontrar una forma de recibir notificaciones por correo electrónico y / o SMS si vuelve a ocurrir. ¡No me gusta cuando mi cliente me llama para decirme que su sitio web no funciona!
Sé que probablemente hay muchas posibilidades diferentes, incluido el software de monitoreo del servidor. Creo que todo lo que realmente necesito es un script que pueda ejecutar como un trabajo cron desde mi host de desarrollo (que se está ejecutando permanentemente en mi oficina) que intenta cargar una página desde mi servidor de producción y si no se carga dentro de 30 segundos, luego me envía un correo electrónico o SMS. Soy bastante basura en las secuencias de comandos de shell, de ahí esta pregunta.
Cualquier sugerencia será agradecida.
Respuestas:
Bueno ... El guión más simple, puedo escribir:
Agréguelo a cron como:
Pero es demasiado simple decirle cuál es el problema si existe.
UPD: ahora esta línea única busca una cadena específica en la página ("cadena de operación normal"), que debería aparecer solo en la operación normal.
UPD2: una forma sencilla de enviar la página de error en el correo electrónico:
Lo negativo es que la página se vuelve a solicitar en caso de que falle la primera prueba. Esta vez, la solicitud puede ser exitosa y no verá el error. Por supuesto, es posible almacenar la salida y enviarla como un archivo adjunto, pero hará que el script sea más complejo.
fuente
Echa un vistazo a este script:
curl
es una utilidad de línea de comandos para buscar una URL. La secuencia de comandos comprueba el código de salida ($? Se refiere al código de salida del comando más reciente en una secuencia de comandos de shell) y, si no es 0, informa un error (un código de salida de 0 generalmente se refiere al éxito). Como se menciona en la respuesta de HUB, también puede simplemente||
ejecutar en la línea de comandos un segundo comando cuando falla el primero.Una vez que haya resuelto el estado, solo tiene que enviarse un correo. Aquí hay un ejemplo que usa el
mail
comando para enviar correo desde un script de shell, suponiendo que el cuadro desde el que está probando tiene una configuración SMTP:Por cierto: si no eres bueno en el script de shell, no te limites a un script de shell. Podrías usar un script ruby, un script php, ¡cualquier tipo de script que tu servidor pueda ejecutar! Simplemente agregue la
#!/path/to/executable
línea al comienzo del script, por ejemplo:#!/usr/bin/php
fuente
Revisa este script . está comprobando una lista de sitios web y envía correos electrónicos (a la lista de correos electrónicos) cada vez que algo falla (respuesta http diferente de 200). El script crea un archivo .temp para "recordar" qué sitio (s) falló (n) en la última comprobación para que no reciba múltiples correos electrónicos. el archivo .temp se elimina cuando el sitio web vuelve a funcionar.
Agregue las siguientes líneas a la configuración de crontab ($ crontab -e)
Disponible en Github
fuente
Sé que todos los scripts anteriores son exactamente lo que ha pedido, pero sugeriría mirar monit porque le enviará un correo electrónico si apache está inactivo, pero también lo reiniciará (si está inactivo).
fuente
Recomendaría pingdom para esto. Su servicio gratuito le permite verificar 1 sitio, pero eso es todo lo que necesita para verificar 1 servidor. Si tienes un iPhone, te envían mensajes de forma gratuita, por lo que no es necesario comprarles créditos SMS, y tienen múltiples configuraciones que puedes usar. El mío está configurado para notificarme después de 2 reintentos (10 minutos) y cada 10 minutos de tiempo de inactividad después de eso. Es increíble, ya que también busca mensajes HTTP 500 que indiquen que un sitio está inactivo. Si falla, inmediatamente verifica su sitio nuevamente desde un servidor diferente en una ubicación diferente. Si ese falla, bueno, eso activa su preferencia en cómo / cuándo le gustaría recibir una notificación.
fuente
Ligera variación de lo anterior.
Un script para verificar si un sitio web está disponible cada 10 segundos. Registre los intentos fallidos en un
siteuptime.txt
archivo para poder verlo (o graficarlo en Excel) más adelante.fuente
fuente
Como tiene muchos sitios en su VPS, recomendaría que pueda abrir una cuenta con un sitio de monitoreo de sitios web como host-tracker.com. Además de avisarle si el sitio está inactivo o no, también le proporcionan tiempo de actividad semanal, mensual y anual de sus sitios. Whish es muy útil para la gestión y el rendimiento.
fuente
Qué tal esto:
fuente