{{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 |}}