JMX Querier plugin
Este documento describe la funcionalidad del plugin de JMX y su integración con PandoraFMS.
- Introducción
- Matriz de compatibilidad
- Pre requisitos
- Parámetros
- Ejecución manual
- Descubriendo estadísticas e integrandolas en la ejecución
- Definir estadísticas y umbrales en el fichero de configuración
- Configuración en PandoraFMS
- Agentes y módulos generados por el plugin
Introducción
Ver. 19-06-2024
Este documento describe la funcionalidad del plugin de JMX y su integración con PandoraFMS. El plugin de JMX permite la integración de las estadísticas de los Mbeans en PandoraFMS.
Tipo: Plug-in server
Matriz de compatibilidad
Sistemas donde se ha probado | Rocky linux, Fedora |
Sistemas donde funciona | Cualquier sistema linux |
Pre requisitos
1. Activación del monitoreo JMX remoto para aplicaciones Java
Una aplicación Java no requiere software adicional instalado, pero debe iniciarse con las siguientes opciones de línea de comandos para habilitar el soporte para la supervisión JMX remota.
Al menos, si solo desea iniciar el monitoreo de una aplicación Java básica en un host local sin seguridad, use estas opciones:
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.port=9090 \
-Dcom.sun.management.jmxremote.rmi.port=9090 \
-Djava.rmi.server.hostname=localhost"
Esto configura Java para aceptar conexiones JMX entrantes en el puerto 9090 únicamente desde el localhost, sin necesidad de autenticación ni SSL.
Si se requiere authenticación, se debe de habilitar:
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.port=9090 \
-Dcom.sun.management.jmxremote.rmi.port=9090 \
-Djava.rmi.server.hostname=localhost \
-Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat/conf/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/usr/local/tomcat/conf/jmxremote.access
2. El sistema que ejecuta el plugin debe de tener conectividad y poder llegar al servidor JMX
Parámetros
Parámetros conexión y configuración JMX
--jmx_url | Endpoint de conexión con el servidor JMX, ejemplo : service:jmx:rmi:///jndi/rmi://localhost:9090/jmxrmi |
--list_mbeans | Usando este parámetro, se pueden listar todos los Mbeans disponibles en el servidor JMX. Se activa a 1. Por defecto 0. |
--list_attr | Usando este parámetro se pueden listar todos los attributos disponibles de un Mbean, pasandole el mbean. Ejemplo: "java.lang:name=G1 Old Generation,type=GarbageCollector" |
--conf | Archivo con las metricas que monitorizara el plugin. |
--user | Usuario del servidor JMX en caso de ser necesario para autenticar. |
--password | Password del servidor JMX en caso de ser necesario para autenticar. |
El uso de los parámetros --list_mbeans, --list_attr y conf para descubrir e integrar estadísticas viene mas detallado en el capitulo : " Descubriendo estadísticas e integrandolas en la ejecución"
Parámetros configuración Pandora
--agent_name |
Nombre del agente que contendrá todos los módulos de estadísticas |
--module_prefix | Prefijo para todos los módulos creados por el plugin |
--interval | Intervalo de monitorización del agente |
--data_dir |
Directorio de datos de PandoraFMS |
--group | Grupo en PandoraFMS |
--transfer_mode |
Modo de transferencia de datos, local o tentacle |
--tentacle_port |
Puerto de tentacle |
--tentacle_address |
IP de tentacle |
Parámetros extra
--log_file | Ruta del fichero de logs |
Ejecución manual
El formato de ejecución del plugin es el siguiente :
./jmx_querier --jmx_url < jmx url endpoint > \
[--list_mbeans < 1 o 0 >] \
[--list_attr < nombre mbean >] \
[--conf < ruta del fichero conf con las estadísticas >] \
[--user < usuario del servidor jmx >] \
[--password < password del servidor jmx >] \
[--agent_name < nombre del agente >] \
[--module_prefix < prefijo para los módulos >] \
[--group <group>] \
[--interval <interval>] \
[--temporal <temporal>] \
[--data_dir <data_dir>] \
[--transfer_mode <transfer_mode>] \
[--tentacle_port <tentacle_port>] \
[--tentacle_address <tentacle_address>] \
[--log_file <log_file>]
Por ejemplo:
./jmx_querier --jmx_url "service:jmx:rmi:///jndi/rmi://localhost:9090/jmxrmi" --conf jmx.conf --user "controlRole" --password "myPassword"
Descubriendo estadísticas e integrandolas en la ejecución
El plugin cuenta con dos parametros de descubriemiento, que nos permitirán descubrir estadísticas, que luego se pueden incorporar en un fichero conf, para monitorizarlas.
--list_mbeans
Este parámetro nos permite listar todos los mbeans de nuestro servidor, ejemplo :
--list_attr
Si se usa este parámetro, con el nombre de alguno de los mbean que lista el plugin, listará todos los atributos del mbean, esto es cada estadística, que luego puede ser definida en el conf
Definir estadísticas y umbrales en el fichero de configuración
Las estadísticas (atributos) descubiertos, pueden copiarse en un fichero de configuración, en el que también se podrán definir umbrales.
Por cada línea en el fichero de configuración se debe añadir un atributo y esto creará un modulo con esa estadística en Pandora. Si es necesario configurar umbrales, se deben especificar a la derecha del atributo, separado cada umbral por |. Ejemplo:
Métrica sin umbral
java.lang:type=Threading/ThreadCount
Métrica con umbral
java.lang:type=Threading/TotalStartedThreadCount|min_warning 30|min_critical 45
Configuración en PandoraFMS
Para configurar el plugin en PandoraFMS, se deben seguir los siguientes pasos :
1. Subir el plugin a PandoraFMS, por ejemplo en la siguiente ruta:
/usr/share/pandora_server/util/plugin
2. Dirigirse al apartado plugins y crear uno nuevo:
3. Se le añade nombre, descripción y timeout:
4. Se añade la ruta del plugin en el comando y los parámetros necesarios para la ejecución de este.
Para cada parámetro se debe configurar una macro, siendo la sintaxis de esta macro la siguiente : _fieldx_, siendo x el numero posicional del parámetro.
5. Se configuran las macros anteriores, añadiendo en cada una el valor del parámetro:
6. Una vez configurado se debe crear un módulo en un agente que ejecute el plugin. En el menu de módulos de un agente creamos un módulo de tipo plugin nuevo:
7. En el menú de configuración del módulo, le ponemos un nombre, seleccionamos el plugin antes configurado y se le debe dar a "crear".
8. Se creara el agente con los módulos o los módulos en el agente seleccionado en la siguiente ejecución del plugin.
Agentes y módulos generados por el plugin
El plugin creará un agente, con el nombre que se le pase por el parámetro --agent_name (o JMX por defecto) que contendrá los módulos de cada estadística definida en el fichero de configuración. Así, por ejemplo, la ejecución de este plugin contra el siguiente conf:
java.lang:type=Threading/TotalThreadAllocatedBytes
java.lang:type=Threading/CurrentThreadAllocatedBytes
java.lang:type=Threading/ThreadAllocatedMemoryEnabled
java.lang:type=Threading/ThreadAllocatedMemorySupported
java.lang:type=Threading/ThreadCount
java.lang:type=Threading/TotalStartedThreadCount
java.lang:type=Threading/AllThreadIds
java.lang:type=Threading/CurrentThreadCpuTime
java.lang:type=Threading/CurrentThreadUserTime
java.lang:type=Threading/ThreadCpuTimeSupported
java.lang:type=Threading/ThreadCpuTimeEnabled
java.lang:type=Threading/ThreadContentionMonitoringEnabled
java.lang:type=Threading/ThreadContentionMonitoringSupported
java.lang:type=Threading/CurrentThreadCpuTimeSupported
java.lang:type=Threading/ObjectMonitorUsageSupported
java.lang:type=Threading/SynchronizerUsageSupported
java.lang:type=Threading/PeakThreadCount
java.lang:type=Threading/DaemonThreadCount
java.lang:type=Threading/ObjectName
Crearía los siguientes módulos :