2009-09-10 85 views
11

Estoy tratando de encontrar una solución que me permita monitorear el consumo de recursos de un servidor. Preferiblemente, las métricas que deseo obtener son IO de utilización de red y, si es posible, uso de CPU/promedio de carga y IO de disco.Monitoreo simple de servidores con Java

El único otro requisito que tengo es que esta información sea obtenible por Java para que pueda manipularse, y al menos funcionar en Linux (Fedora).

He oído hablar de algunas herramientas de supervisión, pero no estoy seguro de la mejor manera de hacerlo. Probablemente quiera recopilar la información cada 30 segundos.

Gracias

Actualización: Sólo para reiterar, me refiero a la supervisión de todo el sistema de Java NO seguimiento específico. Solo quiero usar Java para acceder a estas métricas

+0

Tu pregunta no está clara. ¿Quiere decir "un proceso de servidor" o se refiere al servidor en sí, cuando dice "servidor"? Parece que te refieres a la última, pero la respuesta JMX (a continuación) si la escribes desde la perspectiva de ti, es decir, la anterior –

+0

Lo siento si eso no estaba claro. Estoy hablando de todo el servidor porque esencialmente quiero conocer el estado del servidor para escalar. La métrica más importante es la utilización de la red. – MSR

+2

Si la utilización de la red es la métrica más importante, no estoy seguro de que JMX lo ayude y consideraría usar Cacti y una API de Java para leer los datos RDD. –

Respuesta

0

Probablemente su mejor opción sea la de/proc para todos los sistemas de uso de recursos/proc/cpuinfo y/proc/net /. Es un buen lugar para comenzar.

1

Podría considerar utilizar la herramienta de supervisión Ganglia. Utiliza XML para su representación de datos, por lo que imagino que sería bastante sencillo acceder a los datos de Java, y existen las ventajas añadidas de que ha sido diseñado para ser altamente escalable, con el potencial de registrar las métricas del servidor en una gran cantidad de máquinas.

3

Puede elegir delegar la supervisión en una herramienta dedicada como Cacti, Centreon o Zenoss, pero esto puede ser un poco exagerado para una sola aplicación.

Para una solución simple, JMX podría ser una mejor solución. Como punto de partida, sugiero leer el siguiente artículo: Monitoring Local and Remote Applications Using JMX 1.2 and JConsole. A continuación, echar un vistazo a Using JConsole to Monitor Applications, un artículo muy detallado que muestra cómo utilizar JConsole para acceder a varias funciones de monitorización del núcleo y de gestión proporcionados por la plataforma Java, incluyendo:

  • Detectar poca memoria
  • Habilitar o deshabilitar GC y la carga de clases verbosa rastreo
  • detecta puntos muertos
  • controlar el nivel de registro de cualquier madereros en una aplicación
  • Acceso a recursos-Sun OS extensión plataforma de
  • Administrar beans gestionados de una aplicación (MBeans)

Pero, que yo sepa, JMX no le dará acceso a la red IO por lo que podría necesitar una combinación de estas herramientas . Afortunadamente, muchas herramientas (por ejemplo, Cacti, SmokePing) usan el formato RDD que puede manipular fácilmente con las API de Java, como JRobin o rdd4j.

0

¿Qué pasa con Runtime.exec ("algún comando")?

1

estoy creciendo aficionado a collectd, un demonio modular C se centra en la vigilancia (en lugar de la representación gráfica) con una multitud de plugins:

Parece que hay varias op ciones para obtener métricas en su código Java:

  • en proceso, utilizando la mencionada Java plugin para registrar una devolución de llamada de escritura para recibir datos de los demás plugins
  • través de la red, mediante la incorporación de jcollectd (una implementación de Java del protocolo de collectd) en su aplicación
  • indirectamente, por escribir en un archivo RRD CSV o, y usando una de las varias implementaciones RRD para Java
2

Sólo quiero tirar RHQ (http: // RHQ-proyecto. org /) en la mezcla :-)

-1

No estoy seguro de si esto ayudaría en su consulta. IMHO Cacti y Centreon parecen ser demasiado complejos para invertir tiempo en un requisito tan simple como el suyo. Existen herramientas más simples para monitorear servidores como New Relic y SeaLion. SeaLion es mi favorito actual. Proporciona comandos predeterminados simples que cubren la mayoría de los requisitos básicos (probablemente también cubrirá los suyos). También es extremadamente simple de configurar y es gratis. Puedes probar esto.