2008-09-22 26 views
9

Me gustaría poder monitorear mis principales indicadores de estado del sistema desde dentro de nuestro sistema basado en Java. Los principales puntos de interés, como la temperatura de la CPU, placa base temperatura, velocidad del ventilador, etc.¿Cuál es la mejor manera para que un programa Java controle la salud del sistema?

¿Hay un paquete disponible que:

  1. hace que este tipo de datos a disposición de Java?
  2. ¿Funciona en Windows o Linux o en ambos?
  3. ¿Es abierto/gratis/barato?

Respuesta

3

Hay MIB compatible con Windows y Linux que exponen los parámetros que usted está buscando a través de SNMP. Además, la mayoría de los principales proveedores tienen MIB especiales publicados para su hardware de servidor.

he implementado SNMP MIB y el seguimiento de las aplicaciones Java utilizando el iReasoning SNMP API comercial y funcionó muy bien. También está la fuente abierta SNMP4J, con la que personalmente no tengo experiencia, pero se ve bastante bien.

Por lo tanto, para sus necesidades, que se convertirían en la publicación de información SNMP para los anfitriones que desea supervisar. Sin codificación necesaria. Esto es solo un problema de configuración.

Para la temperatura de la CPU, por ejemplo, debe habilitar el MIB lm-sensors-MIB. En Linux, puede utilizar el cliente snmpwalk para ver OID .1.3.6.1.4.1.2021.13.16.2.1.3 para ver la temperatura de la CPU. Una vez que tenga eso y sepa que está publicando datos correctamente, puede comenzar a implementar su solución de monitoreo real.

Puede usar una biblioteca SNMP de Java para sondear y suscribirse a capturas SNMP para los hosts que desea supervisar. También puede usar cualquier herramienta de monitoreo comercial o de código abierto (Google para SNMP console).

0

Hace unos meses busqué una biblioteca así y no encontré nada interesante. No es imposible crear uno, así que recomendaría hacerlo. Probablemente necesites acceder a las bibliotecas nativas, para hacerlo utiliza JNA (es más fácil que JNI). Comience agregando soporte para algunas cosas en una plataforma, luego comience a agregar soporte para otras características y plataformas.

¡Compártelo con nosotros! La gente comenzará a usarlo, tal vez incluso ayude con el desarrollo y pronto tendrá una biblioteca de monitoreo de sistema completamente equipada para Java.

+0

Gracias, nunca había oído hablar de JNA. –

-1

JMX + JNI = YourSolution

+2

Esto no es realmente una respuesta. ¿Tienes algo específico en mente? –

6

Lo más parecido que encontrará es la biblioteca Hyperic Sigar:

http://www.hyperic.com/products/sigar.html

No se puede pedir a temperaturas que yo sepa, pero sí muestra una serie de estadísticas nativas como CPU, memoria, E/S de disco, E/S de red, etc. Está portado a la mayoría de las arquitecturas en las que las personas están implementando Java hoy en día. La licencia es GPL aunque creo que también puedes comprar licencias comerciales.

Utilizamos Sigar con la terracota por la supervisión del clúster y han sido muy feliz con él.

+1

La temperatura de la CPU es algo que necesitamos específicamente, así que esta es una limitación importante. –

5

creo que la mayoría de este tipo de cosas se hace generalmente a través de SNMP (para sistema profesional) es la forma habitual de hacer este tipo de información disponible de una manera basada en estándares. JMX también está disponible en SNMP. Entonces surge la pregunta: ¿cuáles son las mejores bibliotecas SNMP para Java (y su sistema lo admite)?

Cuestiones relacionadas