Monitorizando estado de servidores JEE con Nagios y JMX4Perl

Monitorizando estado de servidores JEE con Nagios y JMX4Perl

0. Índice de contenidos.

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil 2,4 Ghz Intel Core2 Duo P8600
  • Sistema Operativo: Ubuntu 11.04 Natty Server

2. Introducción

En el tutorial “Monitorizando equipos y servicios con Nagios + NagiosQl + PNP4Nagios” veiamos como instalar y configurar Nagios para poder realizar monitorización a nivel de sistema. En este tutorial aprovecharemos las capacidades del comando check_jmx4perl para monitorizar el estado de un servidor de aplicaciones.

3. Prerequisitos

Antes de comenzar la instalación de jmx4nagios, necesitamos que se instalen librerias de perl, lo haremos de dos formas, via apt-get y via cpan, ambas con un usuario con permisos de sudo. Tambien aprovecharemos para instalar un servidor de aplicaciones tomcat6 el cual vamos a monitorizar:

4. Instalación de jmx4perl

Ahora vamos a instalar jmx4perl para ello descargamos/descomprimos en nuestro home el paquete jmx4perl-0.95.tar.gz:

Para realizar las peticiones jmx, utilizaremos un agente llamado Jolokia que nos devuelve objetos JMX serializados como JSON. En los siguientes comandos descargamos y desplegamos en tomcat el agente:

Si todo ha ido bien, podemos probar las comunicaciones mediante el siguiente comando:

5. Creación de comando y servicios en NagiosQL

Una vez que hemos completado la instalación de los comandos de jmx4perl, procedemos a la integración de dos servicios en Nagios, uno para la monitorización de la memoria heap de tomcat y otro para monitorizar los hilos en uso. Primero crearemos el comando, para ello en NagiosQL vamos a “Comandos -> Definiciones” y pulsamos sobre el botón “Agregar”:

Comando

Ahora vamos a dar de alta el servicio check_heap, para ello en la pantalla “Supervisión -> Servicios” pulsamos sobre el boton “Agregar”:

Servicios

Rellenamos el formulario con los siguientes datos (basandonos en la información que hemos recibido antes del servidor, los valores de critical y warning en bytes), y los asignamos al host localhost (pulsando sobre el botón modificar de la sección hosts), tambien aplicamos la plantilla “generic-service” que modificamos en el anterior tutorial para poder sacar los gráficos con pnp4nagios:

check_heap

check_heap Localhost1

check_heap Localhost2

Ahora vamos a dar de alta el servicio check_threads, para ello pulsamos sobre el boton “Agregar” y rellenamos el formulario con los siguientes datos (basandonos en la información que hemos recibido antes del servidor), y los asignamos al host localhost (pulsando sobre el botón modificar de la sección hosts):

check_threads

check_threads Localhost1

check_threads Localhost2

Una vez creados los comandos y servicios escribimos la configuración de Nagios y reiniciamos el servicio desde “Herramientas -> Control Nagios”:

Control Nagios

6. Resultados

Ahora vamos a nuestra pantalla de Servicios en Nagios y deberemos ver nuestros comandos, y sus gráficas correspondientes:

Control Nagios

Grafica Heap

Grafica Threads

Esta combinación de utilidades es muy ponente dado que podemos consultar cualquier dato del servidor con una carga mucho menos pesada (tanto para el servidor Nagios que realiza la petición con un script perl, como para el propio servidor de aplicaciones que estamos monitorizando, ya que las peticiones jmx son locales) que realizando peticiones JMX desde un programa Java como comando Nagios.

Cualquier duda o sugerencia podeis comentarlo.

Saludos.

7. Referencias