Me gustaría hacer un control de salud de un servicio llamando a una URL específica. Parece que la solución más simple sería usar cron para hacer la verificación cada minuto más o menos. En caso de errores, cron me envía un correo electrónico.
Intenté usar cUrl para esto, pero no consigo que envíe mensajes solo por errores. Si intento dirigir la salida a / dev / null, imprime el informe de progreso.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5559 100 5559 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
Intenté mirar a través de las opciones de rizo, pero simplemente no puedo encontrar nada que se adapte a la situación en la que desea que se mantenga en silencio sobre el éxito, pero haga ruido en los errores.
¿Hay alguna manera de hacer que el rizo haga lo que quiero o hay alguna otra herramienta que debería mirar?
curl
monitoring
palto
fuente
fuente
icinga
o cualquier otro sistema de monitoreo?Respuestas:
¿Qué hay de
-sSf
? De las páginas del manual:Por ejemplo:
fuente
curl -fsS http://example.org > /dev/null
. Eso no generará nada cuando no haya nada malo, pero imprimirá el código de estado en los errores, lo cual está bien para mí.-f
para futuras referencias.Creo que para la forma más simple de verificar si el sitio está vivo, podría usar el siguiente método:
Esto devolverá
HTTP/1.1 200 OK
. Si la devolución no coincide con su salida, solicite ayuda.fuente
Necesita la
-s
bandera (silenciosa), la-f
bandera (falla con el código de salida en caso de error) y puede usar la-o
bandera para redirigir la salida:Este es solo un mal ejemplo para un script cron simple. Normalmente, solo desea recibir un correo si un sitio web no funciona.
fuente
Puede capturar estadísticas de tiempo de red desde el rizo. Las latencias de cada fase en un ciclo de solicitud / respuesta pueden ser útiles para determinar la salud.
fuente
Esta forma lo ayudará cuando intente probar el sitio cuando https esté presente:
fuente
Recientemente me pidieron que inventara algo que actuara más como un latido sofisticado.
O, expandido para un poco más de legibilidad,
Lo que hice fue
curl
un sitio web, analizar todos los enlaces del html y luegocurl
los enlaces analizados, generando solo el código de estado. Luego buscaría códigos de estado http> = 400 para encontrar errores.fuente
Responder:
Explicaciones:
timeout 3s
establecerá un tiempo de espera de 3 segundos para su solicitud. Contestar más lento se considera "no saludable"-f
flag fallará temprano,-S
mostrará errores,-s
suprimirá la salida normal,-I
solo buscará encabezados HTTP, no el contenido. (Como siempre, hay más detalles disponibles en elman curl
comando).-checkend
directiva openssl verifica las fechas de vencimiento de un certificado. En mi ejemplo, son 20 días (especificados en segundos).fuente
-s
y el-S
intercambioCurl tiene códigos de estado de salida muy específicos
¿Por qué no solo verificarlos?
Uso:
Resultado:
Notas:
Este script solo verifica si el sitio puede resolverse.
Este código debería ayudarlo si lo único que le importa es que el sitio esté activo o inactivo.
Sin embargo, si realiza algunos cambios en el bloque if / else, puede probar fácilmente otros códigos de estado si lo desea
fuente