Estoy usando ping para verificar si una máquina Linux está en línea y lista para ser utilizada. Sin embargo, ping realmente no le dice si el sistema está haciendo algo útil, solo que el subsistema de red del kernel está activo y configurado. ¿Hay alguna forma de saber que la máquina está completamente lista para realizar tareas?
EDITAR:
Lo siento, no estaba claro. Las tareas que necesito las máquinas para realizar son variadas. Algunos simplemente ejecutan pruebas muy pequeñas. Otros hablan a bases de datos. Y probablemente habrá nuevas tareas que las máquinas de la red deberán realizar en el futuro. ¿Hay un solo comando que me dice que todos los servicios centrales (predeterminados) se están ejecutando?
Respuestas:
Creo que tu propia pregunta es una respuesta de alguna manera.
Is there any way to tell that the machine is completely ready to perform tasks?
Que tareas Digamos que desea que realice tareas utilizando servicios web y de base de datos y DNS. Puede escribir un script que verifique si todos esos servicios se están ejecutando y el servidor no está sobrecargado. Aparte de eso, a menos que esas tareas no estén definidas, no hay una manera útil de saber si el servidor está listo para realizar (cuáles) tareas.
A veces sucede que uno de nuestros servidores funciona perfectamente bien, pero el servicio DKIM se detiene, luego PostFix no puede enviar correo electrónico, puede pasar desapercibido fácilmente si no comprobáramos el servicio DKIM. Así que realmente tiene que definir y luego verificar los servicios especificados para estar seguro.
fuente
Recomiendo configurar software de monitoreo y alerta como Nagios http://www.nagios.org/ o Zenoss .
Ambos tienen complementos para todos los servicios (tareas) que planea ofrecer en su servidor y configurarán el ritmo y las cosas analíticas para alertarlo cuando las cosas vayan mal.
Al igual que otros han publicado, ping solo verifica la conectividad entre la computadora de ping y el host. Nagios, después de la configuración inicial, puede monitorear la conectividad, verificar si Oracle está activo, verificar que su servidor web y los servidores de aplicaciones estén funcionando, uso de memoria / CPU, y cualquier otra cosa que pueda imaginar ...
edición: estoy bastante seguro de que no hay un solo comando que pueda obtener todo lo que está pidiendo fuera de la caja, ¡pero avíseme si hay uno! :) Hasta entonces, tendrás un poco de trabajo ~
Espero que esto ayude, -Minh
fuente
Esa es una pregunta compleja ... Supongo que la mejor manera de comprobar cómo va todo es conectarse a la máquina Linux mediante ssh y ejecutar comandos desde allí para verificar todos los servicios. De todos modos, tenga en cuenta que no puede hacer esto si la máquina a la que intenta conectarse no tiene un demonio ssh en ejecución (o tiene el puerto 22 bloqueado, por ejemplo).
Que yo sepa, no hay otra forma de comprobarlo.
fuente
Además de hacer ping a un host, probablemente podría verificar si un puerto específico está abierto sin ningún conocimiento previo y sin acceso a la máquina. Para una máquina que ejecute un servicio web que usted controle, recomendaría crear una página específica con la información que le interesa (por ejemplo, carga de mem, procesos, ...) en el formato que elija (xml, json, .. .) y obtener y evaluar esto de forma regular.
Alternativamente, eso es algo que usé en el pasado, escriba un demonio específico para su servidor que recopile información que sea útil para usted (como antes, carga de memoria, procesos, ...) y transmítala a su sitio de supervisión con regularidad. Pero tendrá que asegurarse de detectar y manejar el caso en el que ya no llegan las actualizaciones.
Dirigiendo su edición - No creo que haya un solo comando para verificar los servicios predeterminados de forma remota, ya que los servicios predeterminados varían dependiendo de su tarea. El enfoque más básico, si solo quiere ver lo que está haciendo una máquina sería utilizar algún tipo de
o
en la línea de comandos para ver los procesos activos (asumiendo una máquina Linux).
Incluso podría envolver esto en una declaración php exec y transferirlo a una máquina cliente cuando la máquina está ejecutando un servidor web.
fuente
Podría instalar un servidor web simple (al menos debe poder enviar archivos html) para verificar si se envía un contenido de archivo html específico con curl. (
curl http://adress
escribirá el contenido de la respuesta del servidor web a stdout).fuente