meta data de esta página

Monitorizar Servidores Tomcat desde Zabbix

Paso 1

Lo primero que haremos será habilitar Java Management Extension( JMX ) en el Tomcat que queramos monitorizar.

Para habilitar la monitorización por JMX debemos de editar el fichero catalina.sh en mi caso

vim /opt/tomcat/catalina.sh

  • Añadimos la siguiente línea

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  • Reiniciamos el servicio del tomcat
La opción Dcom.sun.management.jmxremote.authenticate=false deshabilita la autentificación y no debe usarse en producción.

En producción debemos de usar las opciones
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=/etc/java-6-openjdk/management/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/etc/java-6-openjdk/management/jmxremote.access \

y crear los ficheros jmxremote.access y jmxremote.password copiando el jmxremote.access.template y cambiándole las contraseñas y los permisos para que sólo sea accesible al usuario que ejecute el Tomcat.

Si sólo queremos monitorizar temporalmente por JMX nuestro servidor

  • desde la consola ejecutamos
    export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
  • reiniciamos el servicio tomcat
Ojo este método es sólo si no tenemos declarada la variable CATALINA_OPS en el catalina.sh ya que se borrara el valor por el que acabamos de declarar y perderíamos los valores que se hubieran definido con anterioridad
Para comprobar que está habilitado, la monitorización por JMX, podemos usar el programa jconsole que viene incluido con el paquete de desarrollo jdk

Paso 2

El siguiente paso es instalar en el servidor el paquete zabbix java gateway . Si zabbix lo hemos instalado desde los repositorios ejecutamos

yum install -y zabbix-java-gateway

Editamos el fichero /etc/zabbix/zabbix_server.conf Descomentamos las siguientes líneas JavaGateway, JavaGatewayPort y StartJavaPollers

  • Como valor de JavaGateway ponemos la ip sel servidor donde hemos instalado el servicio. Como lo hemos instalado en el mismo servidor de zabbix el valor quedaría JavaGateway=127.0.0.1
  • Como valor de JavaGatewayPort dejaremos el puerto que aparece y que NO es el mismo que usamos para conectar por jmx. JavaGatewayPort=10052
  • Como valor de Java Pollers ponemos 5 . StartJavaPollers=5

Editamos el fichero /etc/zabbix/zabbix_java_gateway.conf

Descomentamos las siguientes opciones LISTEN_IP, LISTEN_PORT y START_POLLERS y ponemos los siguientes valores

  • LISTEN_IP=127.0.0.1
  • LISTEN_PORT=10052
  • START_POLLERS=5

Habilitamos el servicio zabbix-java-gateway

systemctl enable zabbix-java-gateway.service

Arrancamos el servicio

systemctl start zabbix-java-gateway.service

Reiniciamos el servicio del zabbix

systemctl restart zabbix-server

Paso 3

En este paso lo que haremos es añadir el host a monitorizar y asociarle una plantilla.

Nos descargamos la plantilla de https://www.zabbix.com/integrations/tomcat . Yo he utilizado la plantilla https://share.zabbix.com/official-templates/applications/tomcat-template.

La descargo y la importo al zabbix. Configuration→Templates botón de Import

Añadimos el host a monitorizar y le definimos el interface JMX

Le asociamos la plantilla que descargamos para monitorizarlo