¿Cómo puedo verificar si MySQL y Tomcat están funcionando?

He creado una aplicación Java que se divide en diferentes subcomponentes, cada uno de ellos se ejecuta en una instancia de Tomcat por separado. Además, algunos componentes utilizan una base de datos MySQL a través de Hibernate.

Ahora estoy creando una consola de administración donde se informa el estado de todas mis instancias de Tomcat y de MySQL. No necesito información detallada, pero saber si se están ejecutando o no es suficiente.

¿Cuál podría ser la mejor solución para hacer eso?

Gracias

La forma más sencilla sería simplemente conectar el servidor y ver si tiene éxito.

MySQL:

Connection connection = null; try { connection = DriverManager.getConnection(url, username, password); // Succes! } catch (SQLException e) { // Fail! } finally { if (connection != null) try { connection.close(); } catch (SQLException ignore) {} } 

Gato:

 try { new URL(url).openConnection().connect(); // Succes! } catch (IOException e) { // Fail! } 

Si desea un estado un poco más específico, por ejemplo, verificar si una determinada tabla de base de datos está disponible o un recurso de aplicación web específico está disponible, entonces debe activar una instrucción SELECT más específica o una solicitud HTTP respectivamente.

Supongo que sabe de qué puertos se están ejecutando de antemano (o de los archivos de configuración). La forma más fácil de verificar es hacer conexiones de socket a esos puertos como lo hace un progtwig telnet. Algo como:

 public boolean isServerUp(int port) { boolean isUp = false; try { Socket socket = new Socket("127.0.0.1", port); // Server is up isUp = true; socket.close(); } catch (IOException e) { // Server is down } return isUp; } 

Uso:

 isTomcatUp = isServerUp(8080); isMysqlUp = isServerUp(3306); 

Sin embargo, yo diría que es una verificación falsa negativa. A veces dice que el servidor está UP pero el servidor está atascado o no responde …

Me aseguraría de que lo que sea que esté supervisando su configuración sea realmente un código. La supervisión de la JVM a través de jmx también puede ser útil después del hecho. Echa un vistazo a http://www.cacti.net/ .

Encendiendo una simple consulta fija a través de MySQL

 SELECT 'a-ok'; 

y haga que .jsp devuelva ese texto a a-ok . Si se agota el tiempo y / o no responde con a-ok , entonces algo está a-ok . Si necesita algo más detallado, puede agregar controles adicionales, como solicitar now() o algo más grande, como SHOW INNODB STATUS .

Lo más fácil es buscar los archivos MySQL y Tomcat PID. Debe mirar sus scripts de inicio para asegurarse de la ubicación exacta, pero una vez que lo encuentra, simplemente pruebe la existencia del archivo pid.

Crear un servlet como una página de estado. En el servlet, realice una consulta barata, si la consulta se realiza correctamente, deje que el servlet se imprima correctamente; de ​​lo contrario, se mostrará un error. Pon el servlet en una guerra y desplázalo en todas las instancias.

Esto podría usarse para verificaciones en su consola de administración haciendo un bucle en todas las instancias.

Me gustaría crear un servicio web REST simple que se ejecute en cada instancia de Tomcat y realice una consulta no operativa contra la base de datos. Eso facilita la conducción desde cualquier lugar (línea de comandos, aplicación web, aplicación GUI, etc.)

Si estos son servidores disponibles públicamente, puede usar un servicio como binarycanary.com para sondear una página o servicio en su aplicación.

Intereting Posts