===== Agente JMX =====
Documento Original de Samuel Ruiz ((http://samuelasir.tk/dokuwiki/doku.php?id=servicios_web:zabbix:agente_jmx))
Con Zabbix podemos monitorizar un servidor tomcat mediante un agente JMX. Para ello debemos de realizar lo siguiente:
=== Paso 1: instalar java. ===
yum install java-1.6.0
=== Paso 2: instalar zabbix-java-Gateway ===
rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-java-gateway-2.2.3-1.el6.x86_64.rpm
=== Paso 3: configurar java en el equipo monitorizado ===
Podemos configurar el acceso mediante JMX de dos maneras
* Sin autentificación java \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar /usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar
* Con autentificación
java \
-Djava.rmi.server.hostname=x.x.x.x\
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-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 \
-Dcom.sun.management.jmxremote.ssl=true \
-Djavax.net.ssl.keyStore=$YOUR_KEY_STORE \
-Djavax.net.ssl.keyStorePassword=$YOUR_KEY_STORE_PASSWORD \
-Djavax.net.ssl.trustStore=$YOUR_TRUST_STORE \
-Djavax.net.ssl.trustStorePassword=$YOUR_TRUST_STORE_PASSWORD \
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true \
-jar /usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar
Por último reiniciamos el Tomcat
=== Paso 4: modificar archivo de configuración de zabbix. ===
Modificamos el archivo “/etc/zabbix/zabbix_server.conf” las siguientes líneas:
JavaGateway: IP del servidor zabbix.
JavaGatewayPort: el puerto por el que escuchará zabbix.
StartJavaPollers: le daremos el valor 5.
Reiniciamos el zabbix service zabbix-server restart
=== Paso 5: crear un nuevo host zabbix. ===
Configuration->host->create host
{{ :seguridad:monitorizacion:zabbix2:jmx1.png?nolink&600 |}}
* Debemos rellenar el nombre del host.
* Añadirlo a un grupo
* Agregar la interfaz JMX (el puerto será el que hayamos indicado en el paso 3).
* Guardar la configuración.
=== Paso 6: crear un ítem a monitorizar. ===
Configuration->host->ítem->créate ítem
{{ :seguridad:monitorizacion:zabbix2:jmx2.png?600 |}}
* Name: nombre del ítem.
* Type: JMX agent.
* Key: ruta del ítem.
* Host interface: dirección IP y puerto.
* User name: usuario (si lo tiene).
* Password: contraseña.
* Type od information: tipo de dato que vamos a recibir.
* Update interval: cada cuanto tiempo actualizaremos el ítem.
* Guardamos el ítem.
En el campo “key” debemos ingresar el ítem JMX. Éste se inicia con jmx[…], y dentro de este paréntesis tenemos dos datos separados por una coma:
* El primero es el nombre del objeto: que representa el nombre del objeto de MBean.
* El segundo es el atributo de ese objeto.
Estos ítems los podemos buscar con la aplicación jconsole, aunque cuando instalas JDK ( versión 1.5) podemos encontrar la herramienta jvisualVM que está mucho más completa.
===== Enlaces =====
* http://www.denniskanbier.nl/blog/monitoring/enable-jboss-remote-jmx-monitoring-in-zabbix/
* http://www.sysads.co.uk/2014/02/install-configure-jmx-zabbix-java-gateway/
* http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
* http://www.mkyong.com/tomcat/jconsole-jmx-remote-access-on-tomcat/