Monitorizar OpenDJ con Java Management Extensions (JMX) y JConsole

Hace un par de meses escribí un artículo destinado a monitorizar Tomcat usando las Java Management Extensions (JMX) y JConsole, interfaz gráfica que permite monitorizar todo lo que ofrece JMX. OpenDJ (open source Lightweight Directory Access Protocol) también permite monitorizar la JVM que utiliza a través de JMX.

Para habilitar JMX en OpenDJ utilizamos la línea de comandos para activar el connection handler de JMX, como siempre, el comando a utilizar es dsconfig.

# $OPENDJ_HOME/bin/dsconfig \
 set-connection-handler-prop \
 --hostname localhost \
 --port 4444 \
 --bindDN "cn=Directory Manager" \
 --bindPassword password \
 --handler-name "JMX Connection Handler" \
 --set enabled:true \
 --trustAll \
 --no-prompt

Es necesario reiniciar OpenDJ para que los cambios surtan efecto:

# $OPENDJ_HOME/bin/stop-ds --restart

Por defecto el conector escucha por el puerto TCP 1689.

tcp  0  0 :::1689        :::*           LISTEN      2431/java

JConsole está disponible en el Java Development Kit (JDK), dentro de $JDK_HOME/bin. Los datos necesarios para conectar al JMX de OpenDJ son:

  • URI: service:jmx:rmi:///jndi/rmi://localhost:1689/org.opends.server.protocols.jmx.client-unknown
  • Usuario: cn=directory manager (o cualquiera con privilegios jmx-notify, jmx-read, y jmx-write).
  • Password: contraseña del usuario.

Si OpenDJ está en un servidor remoto, lo más cómodo y rápido es crear un tunel SSH contra el servidor de OpenDJ y ejecutar jconsole igualmente contra localhost:

$ ssh foo@opendj-server -L 1689:localhost:1689

Y listo…

jConsole JMX Tomcat