Mediante el proyecto JBoss2Nagios podemos monitorizar el valor de un ObjectName determinado, lo que nos permite monitorizar los valores de conexión de un DataSource, el estado del servidor en sí, etc…

Los objetos disponibles y sus valores podemos verlos en la consola de http://maquina_jboss:8080/jmx-console/, a nosotros nos sirve poder ver el DataSource AppDS (número de conexiones abiertas en un momento determinado, entre otros valores).

Basta desplegar el collector.sar en /data/jboss/jboss/server/default/deploy, que actua como sonda y abre el puerto 5566 para ser interrogado. En Nagios hemos puesto el perl bajo /opt/nagios/libexec/check_mbean_collector.pl, y podemos hacer llamadas tal que:

[root@nagios libexec]# ./check_mbean_collector.pl -H maquina_jboss -p 5566 -m ‘jboss.jca:name=AppDS,service=ManagedConnectionPool’ -a MaxConnectionsInUseCount -w 50 -c 100
JMX attribute MaxConnectionsInUseCount has value 0|jboss.jca:name=AppDS,service=ManagedConnectionPool:MaxConnectionsInUseCount=0

El único fallo que le he detectado es que el performance data (que capturo con PNP para graficar) no está bien formado, y como hay dos símbolos de igual el PNP se lía y no grafica. A ver si para la próxima versión esto está corregido… Mientras tanto yo lo he subsanado ‘interceptándolo’ con un script sh:

[root@nagios libexec]# cat check_mbean_collector.sh
#!/bin/bash

HOST=$1
CHAIN=$2
PARAM=$3
WARNING=$4
CRITICAL=$5

STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4

STRING=`/opt/nagios/libexec/check_mbean_collector.pl -H $HOST -p 5566 -m $CHAIN -a $PARAM -w $WARNING -c $CRITICAL | sed -e ‘s/(.*)|.*=([0-9]*)$/1|value=2/g’`
echo $STRING

VALUE=`echo $STRING | sed -e ‘s/.*value.//g’`
if [ “$VALUE” -ge “$CRITICAL” ]; then
exit $STATE_CRITICAL
fi
if [ “$VALUE” -ge “$WARNING” ]; then
exit $STATE_WARNING
fi
exit $STATE_OK