¿Cuál es la mejor manera para que un programa Java supervise el estado del sistema?[cerrado]

StackOverflow https://stackoverflow.com/questions/117043

  •  02-07-2019
  •  | 
  •  

Pregunta

Me gustaría poder monitorear los principales indicadores de salud de mi sistema desde dentro de nuestro sistema basado en Java.Los principales puntos de interés incluyen la temperatura de la CPU, la temperatura de la placa base, la velocidad del ventilador, etc.

¿Hay algún paquete disponible que:

  1. ¿Pone este tipo de datos a disposición de Java?
  2. ¿Funciona en Windows, Linux o ambos?
  3. ¿Está abierto/gratis/barato?
¿Fue útil?

Solución

Hay MIB compatibles tanto con Windows como con Linux que exponen los parámetros que busca a través de SNMP.Además, la mayoría de los principales proveedores publican MIB especiales para el hardware de su servidor.

He implementado MIB SNMP y monitoreo para aplicaciones Java utilizando el software comercial API SNMP de iReasoning y funcionaron muy bien.También existe el código abierto. SNMP4J, con el que personalmente no tengo experiencia, pero se ve bastante bien.

Entonces, según sus necesidades, puede activar la publicación de información SNMP para los hosts que desea monitorear.No es necesaria codificación.Esto es sólo un problema de configuración.

Para la temperatura de la CPU, por ejemplo, debe habilitar MIB LM-SENSORS-MIB.En Linux, puede usar el cliente SNMPWALK para echar un vistazo a OID .1.3.6.1.4.1.2021.13.16.2.1.3 para ver la temperatura de la CPU.Una vez que lo tenga configurado y sepa que está publicando datos correctamente, podrá comenzar a implementar su solución de monitoreo real.

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

Otros consejos

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

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

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

Usamos Sigar con Terracotta para el monitoreo de clústeres y estamos muy contentos con él.

Creo que la mayor parte de este tipo de cosas generalmente se hace a través de SNMP (para sistemas profesionales), que es la forma habitual de hacer que este tipo de información esté disponible de manera basada en estándares.JMX también está disponible a través de SNMP.La pregunta entonces es: ¿cuáles son las mejores bibliotecas SNMP para Java (y su sistema las admite)?

Hace unos meses busqué una biblioteca de este tipo y no encontré nada interesante.No es imposible crear uno, por lo que recomendaría hacerlo.Probablemente necesitarás acceder a bibliotecas nativas, para hacer ese uso JNA (es más fácil que JNI).Comience agregando soporte para algunas cosas en una plataforma, luego comience a agregar soporte para otras funciones 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 del sistema con todas las funciones para Java.

JMX + JNI = Tu Solución

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top