Tomcat enterprise plugin

Recibe datos del Tomcat Server

Introducción

Ver. Julio 2021

Con este plug-in podremos ver los stats de Tomcast

En este documento se explica cómo monitorizar un servidor Tomcat a través del plugin de PandoraFMS.
La matriz de compatibilidad para el plugin se muestra a continuación:
Sistemas donde se ha probado
Tomcat 6
Tomcat 7
Tomcat 8
Tomcat 9
Sistemas donde debería funcionar
Tomcat 6.x y superiores

Histórico de cambios

Fecha Autor Cambio Versión
09/05/12 Tomas Primera versión del plugin v1r1
21/12/12 Tomas Corregido bug v1r2
14/01/12 Tomas Corregido bug v1r3
12/02/15 MarioP Nuevas features v1r5
14/04/16 Borja Adaptación a nuevo esquema v2r1

 

Preparación del entorno de ejecución

La documentación que tiene que entregar el área que solicita la monitorización es:
• host: Servidor que aloja el servicio Tomcat.
• port: Puerto en el que Tomcat está escuchando.
• user: usuario para autenticarse en Tomcat.
• pass: contraseña para autenticarse en Tomcat.
• https: modo https (1) o http (0).
• Disponer de los permisos necesarios para que desde la propia máquina se pueda hacer un curl a la página
en cuestión (un usuario y contraseña en tomcat-users.xml habilitado para acceder al contenido de dicha
página).
Se ha de configurar el usuario para que tenga el rol manager-script, que pueda ver también el listado de instancias.

<user username="user" password="password" roles="manager-script" />

Quedando esta parte del fichero tomcat-users.xml asi:

<tomcat-users>
<!-- otros roles -->
<role rolename="manager-script"/>
<!-- otros usuarios -->
<user username="username" password="password" roles="manager-script" />
</tomcat-users>

• Habilitar el acceso a dicha página así como roles que asignar a usuarios para que puedan obtener su
contenido.
• Conocer versión de Tomcat para conocer el alcance de la monitorización (modo de compatibilidad, para
versiones <= 6.X).

Instalación

Para la extracción de estos datos es necesario: 

- Disponer de curl en cada uno de los servidores a monitorizar. Con la instalación del agente de PandoraFMS se incluye esta utilidad
- Disponer de los permisos necesarios para que desde la propia máquina se pueda hacer un curl a la página en cuestión (un usuario y contraseña en tomcat-users.xml habilitado para acceder al contenido de dicha página).

Se ha de configurar el usuario para que tenga el rol manager-script, que pueda ver también el listado de
instancias.

<user username="user" password="password" roles="manager-script" />

- Habilitar el acceso a dicha página así como roles que asignar a usuarios para que puedan obtener su contenido.

En nuestro caso usamos un Turnkey Apache Tomcat en el cual encontramos dicha página en:

http://<Tomcat-IP-Address><Puerto>/manager/status?XML=true
http://<Tomcat-IP-Address><Puerto>/manager/text/list

Nota: puerto por defecto de Tomcat es 8080
Dicho script va a almacenar ésta página en un archivo temporal y va a extraer los valores correspondientes para cada dato que queramos monitorizar y los va a presentar en formato XML listo para ser introducido en Pandora.
En caso de tener algún problema, puede considerar agregar un conector más del que ya tiene por defecto el servidor Apache Tomcat. Por ejemplo esta configuración:

/etc/tomcat<version>/server.xml

image-1643036449902.png

Ejemplo de fichero de configuración:

## User grants needed:
## v6 - manager-script
## v7 - manager-script
## v8 - manager-script
## v9 - manager-script
host=ahorcado.lab.artica.es
port=8080
user=admin
pass=pandora
## set to 1 if you use https instead of http
https=0
## if you want to ignore host:port config default, you could define a custom url:
#custom_url=http://myserver:myport/mymap/
## Module personalization
MODULE_GROUP=Tomcat
MODULE_TAGS=Network,Application
MODULE_INTERVAL=1
## Extra identifier (identifies the modules of current instance)
instance=T6
####### Personalize execution
## values 1 (tomcat version <= 6.X) or 0 (tomcat version > 6.X)
#compatibility_mode=1
#---------------------
#- monitoring status -
#---------------------
enable_application_scan=1
enable_status_monitoring=1
#personalize each section
enable_thread_monitoring=1
enable_requestInfo_monitoring=1
enable_workers_monitoring=1
#----------
#- vminfo -
#----------
enable_vminfo_memory_information=1
#JVM
enable_jvm_memory_monitoring=1
enable_jvm_memorypool_monitoring=1

Una vez tenemos el script con los valores que queremos monitorizar, lo incluímos en el pandora_agent.conf como un plugin agente. Dicho plugin introducira un módulo para cada uno de esos valores, visible en la interfaz web del servidor Pandora.


Nota: Considere cambiar los permisos del plugin y darle permiso de ejecución.

Ejecución del plugin:

module_plugin perl /path/to/file/pandora_tomcat.pl /path/to/file/pandora_tomcat.conf

Se distribuyen también binarios para su ejecución en Windows, ( pandora_tomcat_x86.exe y pandora_tomcat_x64.exe ) configurándose de la misma forma:

module_plugin <ruta-plugin>/pandora_tomcat_x86.exe username userpassword http://<TomcatServerIP-Address>:<Puerto>

Módulos generados por el plugin

Los módulos que devuelven la ejecución de este plugin son los siguientes:

Donde [T6] es una etiqueta a elección del usuario (instance)

[T6][<APPNAME>] Status]
[T6][<APPNAME>] Sessions]
[T6]["http-nio-1009"] maxThreads
[T6]["http-nio-1009"] currentThreadsBusy
[T6]["http-nio-1009"] currentThreadCount
[T6]["http-nio-1009"] Threading usage
[T6]["http-nio-1009"] bytesReceived
[T6]["http-nio-1009"] bytesSent
[T6]["http-nio-1009"] processingTime
[T6]["http-nio-1009"] maxTime
[T6]["http-nio-1009"] errorCount
[T6]["http-nio-1009"] requestCount
[T6][workers] Current requests
[T6][workers] Current BytesReceived
[T6][workers] Current BytesSent
[T6]["ajp-nio-8909"] maxThreads
[T6]["ajp-nio-8909"] currentThreadsBusy
[T6]["ajp-nio-8909"] currentThreadCount
[T6]["ajp-nio-8909"] Threading usage
[T6]["ajp-nio-8909"] bytesReceived
[T6]["ajp-nio-8909"] bytesSent
[T6]["ajp-nio-8909"] errorCount
[T6]["ajp-nio-8909"] requestCount
[T6]["ajp-nio-8909"] processingTime
[T6]["ajp-nio-8909"] maxTime
[T6][workers] Current requests
[T6][workers] Current BytesReceived
[T6][workers] Current BytesSent
[T6][Memory] Heap usage
[T6][Memory] Heap committed
[T6][Memory] Non-Heap used
[T6][Memory] Non-Heap committed
[T6][Memory] Non-Heap max
[T6][Code Cache] Pool usage
[T6][Code Cache] Pool commited
[T6][Metaspace] Pool usage
[T6][Metaspace] Pool commited
[T6][Compressed Class Space] Pool usage
[T6][Compressed Class Space] Pool commited
[T6][PS Eden Space] Pool usage
[T6][PS Eden Space] Pool commited
[T6][PS Survivor Space] Pool usage
[T6][PS Survivor Space] Pool commited
[T6][PS Old Gen] Pool usage
[T6][PS Old Gen] Pool commited