Herramienta para comprobar si un sitio web está disponible

Como somos una empresa de desarrollo de software web, tenemos muchas aplicaciones ejecutándose en diferentes servidores. A veces, nos notifican que algunos de ellos están caídos por diferentes problemas.

¿Hay algún servidor/aplicación/herramienta que verifique el estado de una URL dada (realizando solicitudes HTTP GET sin procesar) secuencialmente, dado un intervalo concreto? También sería interesante si pudiéramos agregar una configuración de servidor de correo para notificar a los administradores si el sitio está caído.

No debería ser tan complicado construirnos nosotros mismos, pero solo quiero comprobar si hay algo disponible para evitar reinventar la rueda.

La herramienta debe proporcionar las siguientes características:

  • Herramienta que podemos instalar en nuestros servidores web, para no depender de servicios de terceros
  • Tipo de servicio que se puede iniciar/detener manualmente
  • Solución ligera
  • Ejecutable al menos en Linux, será interesante tenerlo en Windows también
  • Código abierto / Alternativa barata
Una observación sobre los requisitos: Hace varios años escribimos una herramienta para hacer exactamente eso y la ejecutamos en nuestros propios servidores. Necesitábamos saber lo antes posible cuándo uno de nuestros servidores (alojados) estaba inactivo. Ejecutarlo nosotros mismos tenía la desventaja de que teníamos que prever la posibilidad de que nuestras propias conexiones estuvieran caídas. Resolvimos esto haciendo ping a sitios confiables totalmente no relacionados. Así que esto se convirtió en una especie de prueba 'distribuida'. Un servicio externo (comercial) probará desde diferentes ubicaciones y tal vez incluso le avise por SMS. En pocas palabras: recomiendo un servicio externo.
@JanDoggen, esa es una excelente respuesta tuya. En realidad, además de nuestros servidores internos, algunas de nuestras aplicaciones se ejecutan en servidores externos. El método consistiría en una herramienta en servidores web propios y también externos. De esa manera podríamos tener cada servidor probando todos los servicios. Hacer eso tiene varios inconvenientes , se trata de tener que actualizar lo que se verifica en todas partes, cada vez que configuramos un nuevo servicio. Pero de eso se trata mi pregunta. De hecho, también estamos considerando ejecutar un servicio externo, ya que hay opciones gratuitas interesantes como uptimerobot.com
´bucle: curl url & sleep 600 & goto loop ´?
Uso el servicio gratuito de monitoreo de sitios web upnow.info que es de código abierto y está basado en Sails JS + Angular (NodeJS)

Respuestas (5)

Lo que está buscando cae dentro de la categoría de software de monitoreo.

He usado mon para eso. Ahora bien, no soy un experto, por lo que realmente no puedo decir cómo se compara con las muchas otras herramientas de monitoreo que existen, pero según su descripción, debería funcionar bien para usted.

  • Herramienta que podemos instalar en nuestros servidores web → apt-get install mono yum install mono lo que sea en su distribución
  • Tipo de servicio que se puede iniciar/detener manualmente →service mon start/stop
  • Solución ligera → el programa y su documentación ocupan alrededor de 1 MB
  • Ejecutable al menos en Linux, será interesante tenerlo en Windows también → debería estar en todas las principales distribuciones de Linux; sin embargo, no hay un paquete de Cygwin.
  • Código abierto → sí, es gratuito compatible con Debian.

Mon es fácil de poner en marcha. Fuera de la caja en Debian/Ubuntu, me envía un rootcorreo electrónico ( ) cuando el servidor Apache en la misma caja deja de funcionar. Obviamente, debe editar el archivo de configuración para que monitoree otros hosts. Mon viene con monitoreo de hosts (ping), HTTP, FTP, SMTP, MySQL, espacio disponible en disco y muchos más servicios, y puede ejecutar comandos arbitrarios para monitorear servicios que no están integrados. Las alertas se pueden enviar por correo electrónico, SNMP o métodos personalizados.

Mon no intenta reiniciar los servicios que se han caído, eso va más allá de su trabajo.

Es posible que desee explorar la monitoringetiqueta en Unix y Linux y en Server Fault para ver si algunas alternativas le atraen.

Cumple todos los requisitos, parece (+1). Solo como nota al margen: la última actualización parece ser de 2010. Pero eso no debe significar nada para un servicio en segundo plano simple :) Un proyecto comparable (y actualizado) sería PHP Server Monitor . Pero al no haberlo usado, no puedo detallarlo...
@Izzy Tendré que intentarlo mientras desarrollo en Windows personalmente y he estado siguiendo este tema con interés.
@NickWilde Si está hablando de PHP Server Monitor (que supongo), puede convertir su intento en algún representante creando una respuesta. Mirando la calificación de ese proyecto, ¡estoy bastante seguro de que vale la pena!
@Izzy, sí, una vez que lo haya probado, definitivamente lo convertiré en una respuesta si coincido tan bien como parece, gracias :)

Esta es una de las cosas para las que Nagios está diseñado. Puede monitorear casi cualquier servicio visible externamente (HTTP, IMAP, POP, MySQL, SSH, etc.), así como cualquier elemento interno en el servidor (uso del disco, carga del sistema, cantidad de procesos) a través de lo que se llama NRPE. Enviará correos electrónicos sobre problemas de servicio, opcionalmente con restricciones (no envíe correos electrónicos a Joe fuera del horario laboral) a asignaciones arbitrariamente complicadas de destinatarios a servicios en máquinas. Mantendrá registros de cuándo los servicios estuvieron activos/críticos/inactivos. También se puede configurar para realizar otras acciones en caso de fallas del servicio (reiniciar MySQL si está inactivo). Es gratuito y de código abierto (hay una versión de pago con funciones adicionales que van mucho más allá de lo que necesita), y hay mucha documentación disponible. Hay al menos un puerto de Windows (Cygwin),Nagwin .

Agregaría que es fácil agregar un complemento para verificar cualquier cosa a través de NRPE. Cree una secuencia de comandos que devuelva 0,1,2 o 3 según el estado, agregue la secuencia de comandos al archivo commands.cfg y verifique lo que desee. Además de eso, también tiene aplicaciones móviles para monitorear sus Nagios. Vale la pena leer: signalvnoise.com/posts/3178-nagios-monitoring-performance

Yo uso Monit para eso, es gratis, de código abierto (AGPL) y un paquete Debian disponible.

Es compatible con:

  • Modo daemon: programas de sondeo en un intervalo especificado
  • Modos de monitoreo: activo, pasivo o manual
  • Inicio, parada y reinicio de programas.
  • Agrupar y administrar grupos de programas
  • Definición de dependencia del proceso
  • Iniciar sesión en syslog o en su propio archivo de registro
  • Configuración - archivo de control completo
  • Tiempo de ejecución y comprobación de puertos TCP/IP (tcp y udp)
  • Compatibilidad con SSL para la comprobación de puertos
  • Comprobación de sockets de dominio Unix
  • Estado del proceso y tiempo de espera del proceso
  • Procesar el uso de la CPU
  • Uso de memoria de proceso
  • Procesar verificación de zombis
  • Verifique el promedio de carga de los sistemas
  • Comprobar la marca de tiempo de un archivo o directorio
  • Alerta, detiene o reinicia un proceso en función de sus características
  • Suma de verificación MD5 para programas iniciados y detenidos por monit
  • Notificación de alerta para tiempo de espera del programa, reinicio, suma de verificación, recurso de parada y error de marca de tiempo
  • Mensajes de alerta de correo electrónico flexibles y personalizables
  • Verificación de protocolo. HTTP, FTP, SMTP, POP, IMAP, NNTP, SSH, DWP, LDAPv2 y LDAPv3
  • Una interfaz http con soporte SSL opcional para hacer que monit sea accesible desde un navegador web

Si está dispuesto a pagar por un servicio, estoy muy contento con Pingdom .

  • Puede configurar el intervalo de verificación
  • Las notificaciones de tiempo de inactividad se envían por correo electrónico, mensajes SMS o Twitter.
  • Tienen paneles consolidados que brindan resúmenes y datos históricos para los sitios que está monitoreando.
  • Tienen un plan gratuito que puede monitorear una sola URL, si quieres probarlo.
Se ve interesante. Sin embargo, preferiría tener algo interno en lugar de depender de un servicio de terceros (y de pago)...
¿Funcionaría esto en un servidor al que no se puede acceder desde Internet?
@Gilles no, no lo haría.
@XtremeBiker esos no se mencionaron en la pregunta original, aunque veo que lo ha actualizado ahora.

SmartBear , los propietarios de SoapUI, ofrecen dicho servicio. El precio inicial es actualmente de $12/mes por el servicio básico (con una prueba gratuita para todos los niveles de servicio).

Parece que cubre sus especificaciones y más . No estoy seguro de si consideraría un servicio de este tipo como posiblemente excesivo, ya que parece hacer mucho más de lo que pidió su pregunta. Incluye el monitoreo del umbral de rendimiento que deseaba e incluye notificaciones por correo electrónico y SMS de cualquier problema.

He usado los productos de SmartBear varias veces en el pasado (y actualmente) y estoy extremadamente satisfecho con ellos. Si desea probar el servicio, consulte su demostración gratuita . Simplemente ingrese su URL y creará un informe basado en su sitio.

Habiendo dicho todo eso, si desea una simple verificación arriba/abajo, solo codificaría un pinger personalmente. Estas otras opciones son excelentes para monitorear, encontrar cuellos de botella y abordar problemas antes de que surjan, que es donde radica su valor. Y por el precio, es mucho menos costoso que las pruebas de carga y rendimiento.

Parece interesante, pero parece que es una herramienta más completa que también proporciona pruebas completas de la aplicación. Solo quiero avisar si se cae! (Para detectar una respuesta 404 al obtener la página sería suficiente)
No tengo experiencia con este, pero parece que es adecuado para sus necesidades. Ping For Life parece ser extremadamente básico. ¿Apoyaría esto mejor sus necesidades?