{{tag>zabbix tomcat jmx }} ===== 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 [[https://jdk.java.net/|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 {{ :seguridad:monitorizacion:zabbix3:import.png?nolink&1000 |}} {{ :seguridad:monitorizacion:zabbix3:import2.png?nolink&1000 |}} Añadimos el host a monitorizar y le definimos el interface JMX {{ :seguridad:monitorizacion:zabbix3:jmx1.png?nolink&1000 |}} Le asociamos la plantilla que descargamos para monitorizarlo {{ :seguridad:monitorizacion:zabbix3:jmx2.png?nolink&900 |}}