Agente JMX

Documento Original de Samuel Asir 1)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

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

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