Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

Monitorizando Liferay Portal con Nagios

Cesar Capillas
Cesar Capillas

Un aspecto fundamental en el mantenimiento y prevención de desastres
en un sistema es la monitorización de los diferentes servicios que
proporciona. Un herramienta muy popular es este campo dentro del mundo
opensource es Nagios debido a la
gran comunidad de usuarios y plugins existentes. Uno de ellos es check_jmx,
que permite la monitorización de variables de un servidor de
aplicaciones java, activando la consola jmx.

En primer lugar es necesario configurar el acceso via jmx en el
servidor de aplicaciones a monitorizar, y reiniciarlo. Basicamente hay
que localizar el punto del script de arranque de Jboss o Tomcat donde
especificamos las opciones de java $CATALINA_OPTS de modo:

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9999"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.password.file=/opt/liferay/jmxremote.password"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.access.file=/opt/liferay/jmxremote.access"
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=tomcat.zylk.net"

 


También es necesario editar los archivos jmxremote.access:

admin readwrite
zylk readonly


y jmxremote.password:

admin secret
zylk secret


Podemos probar que el jmx está listo con jconsole, una vez
reiniciado el servidor de aplicaciones:


Luego nos descargamos el plugin para Nagios, y configuramos los
comandos y servicios correspondientes. Por cierto, es un script de
shell que invoca a un jar, luego para ejecutarlo en el servidor de
monitorización es necesario instalar java.

La configuración del comando (commands.cfg) y
la del servicio (services.cfg) en Nagios:

define command {
  command_name check_jmx_HeapMemoryUsage_Used
  command_line /usr/local/nagios/plugins/check_jmx -U service:jmx:rmi:///jndi/rmi://$HOSTADDRESS$:$ARG1$/jmxrmi -O java.lang:type=Memory -A HeapMemoryUsage -K used -username "$ARG2$" -password "$ARG3$" -w "$ARG4$" -c "$ARG5$"
}

define service {
  use                 generic-service
  host_name           baco
  service_description heap memory used
  check_command       check_jmx_HeapMemoryUsage_Used!9999!zylk!secret!750000000!800000000
}


En el caso específico que nos ocupa, monitorizamos la memoria
heap de un contenedor de servlets Tomcat con un gestor de portales
Liferay
, aunque podría ser cualquier aplicación java, como Alfresco ECM o Nuxeo. En el blog de Toni de la Fuente, hay un
detallado artículo de monitorización
de Alfresco
a través de varios métodos, entre los que incluye Nagios.

Como complemento a este artículo en la parte que se refiere a
Nagios, es posible graficar la evolución temporal de las variables
java en PNP4Nagios mediante
performance data. Para ello necesitamos modificar un poco el script el
check_jmx, añadiéndole los datos de rendimiento, de modo que tendremos
en Nagios gráficas diarias, semanales, mensuales tipo Cacti (rrdtool) en nuestro Nagios.

El cambio en la parte final del script es el siguiente:

DIR=`dirname $0`
JMX=`$JAVA_CMD -jar $DIR/check_jmx.jar "$@"`
JMXVAL=$?
VAL=`echo $JMX | awk '{print $5}'`
echo $JMX "|$6=$VAL;;;"
exit $JMXVAL

Y este sería el resultado para la memoria heap de java del servidor Liferay:

Y esto es todo.

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *