DB2

Este documento describe la funcionalidad DB2 del discovery de PandoraFMS.

Introducción

Este plugin tiene como finalidad monitorizar bases de datos DB2, mediante consultas que extraerán información sobre datos que son claves para conocer el rendimiento y estado de la bases de datos, como son el número de conexiones, cache , tamaño de la base de datos, porcentaje de log utilizado y bastantes más stats. Estos datos se verán reflejados en PandoraFMS, en módulos que aportaran el valor estadístico, dentro de un agente que representará a cada base de datos.

Este plugin está desarrollado para usarse con Pandora FMS Discovery, por lo que a diferencia de otros plugins no genera agentes por XML, si no que todo lo descubierto se devuelve en la salida JSON del plugin.

Prerrequisitos

Este plugin realiza conexiones remotas a las bases de datos a monitorizar, por lo que es necesario asegurar la conectividad entre el servidor de Pandora FMS y dichas bases de datos.

Parámetros y configuración

Parámetros

--conf Ruta al archivo de configuración
--target_databases Ruta al archivo de configuración que contiene los targets de las bases de datos
--target_agents Ruta al archivo de configuración que contiene los targets de los agentes
--custom_queries Ruta al archivo de configuración que contiene las consultas personalizadas

Archivo de configuración (--conf)

agents_group_id = < ID del grupo en el que se crearán los agentes >
interval = < Intervalo de monitorización de los agentes en segundos >
user = < Usuario de conexión >
password = < Contraseña >
threads = < Número de hilos que se usaran para la creación de agentes >
modules_prefix = < Prefijo de módulos >
execute_custom_queries = < Activar con 1 para habilitar el uso de consultas personalizadas >
analyze_connections = < Activar con 1 para habilitar la monitorización de conexiones >
database_summary =  < Activar con 1 para habilitar la monitorización de estadísticas de la base de datos >
transactional_log =  < Activar con 1 para habilitar la monitorización de estadísticas de log >
db_size =  < Activar con 1 para habilitar la monitorización de estadísticas del tamaño de la base de datos >
cache_stats = < Activar con 1 para habilitar la monitorización de estadísticas de cache >

Ejemplo

agents_group_id = 10
interval = 300
user = sa 
password = HHgD85V@
threads = 1
modules_prefix = 
execute_custom_queries = 1
analyze_connections = 1
database_summary =  1
transactional_log =  1
db_size =  1
cache_stats = 1

Listado de bases de datos objetivo (--target_databases)

El contenido del fichero será un listado de bases de datos objetivo, separando cada base de datos por comas o por líneas. El formato para una base de datos podrá ser cualquiera de los siguientes:

ip/sid
ip:puerto/sid

En caso de no indicarse el puerto, se usará el puerto 50000 TCP por defecto para la conexión al objetivo.

Ejemplo

172.17.0.2:50000/SAMPLE

Listado de agentes objetivo (--target_agents)

El contenido del fichero será un listado de bases de nombres de agentes, separando cada agente por comas o por líneas. Estos nombres de agentes se usarán para volcar la información de cada base de datos objetivo en el nombre de agente indicado correspondiente, en lugar de dejar que el plugin genere los nombres de agentes de forma automática.

La posición de cada nombre de agente en el listado debe coincidir con la posición de la base de datos objetivo en su propio listado, es decir, el nombre para la primera base de datos objetivo será el primer nombre de este listado, teniendo en cuenta que las líneas en blanco son ignoradas.


Ejemplo

agente1,,agente3
agente4
agente5,agente6,agente7,,agente9

Consultas personalizadas (--custom_queries)

Se debe introducir un módulo por cada consulta personalizada que se pretenda monitorizar. Los módulos deben seguir una estructura, que es la siguiente:

check_begin      --> Etiqueta de abertura del módulo
name             --> Nombre del módulo
description      --> Descripción del módulo.
operation        --> Tipo de operación 
datatype         --> Tipo de módulo
min_warning      --> Configuración del umbral mínimo de warning
max_warning      --> Configuración del umbral máximo de warning
str_warning      --> Configuración de string de warning
warning_inverse  --> Activar el intervalo inverso con 1 para umbral de warning
min_critical     --> Configuración del umbral mínimo de critical
max_critical     --> Configuración del umbral máximo de critical
str_critical     --> Configuración de string de critical
critical_inverse --> Activar el intervalo inverso con 1 para umbral de crítico
module_interval  --> Este intervalo se calcula como un multiplicador del intervalo del agente. 
target           --> Consulta personalizada
target_databases --> Agentes de bases de datos en los que se creará el módulo
check_end        --> Etiqueta de cierre del módulo

Ejemplo

check_begin
name Select 1
description 
operation value
datatype generic_data
min_warning 5
target VALUES (1);
target_databases all
check_end

check_begin
name sace_controlators.total_registers
description Number of registros in sace_ontrolators table
operation value
datatype generic_data
min_warning 20
target SELECT COUNT(*) AS TotalRegistros FROM esquema.sace_controlators;
target_databases pandora
check_end

check_begin
name operators.max_value.sace_controlators
description max value in column operators
operation full
datatype generic_data
target SELECT MAX(operators) AS ValorMaximo FROM esquema.sace_controlators;
target_databases pandora
check_end

Ejecución manual

El formato de la ejecución del plugin es el siguiente:

./pandora_db2 \
--conf < ruta al fichero de configuración > \
--target_databases < ruta al fichero de configuración que contiene las bases de datos objetivo > \
[ --target_agents < ruta al fichero de configuración de agentes > ] \
[ --custom_queries < ruta al fichero de configuración que contiene las consultas personalizas > ]

Por ejemplo:

./pandora_db2 \
--conf /usr/share/pandora_server/util/plugin/db2.conf \
--target_databases /usr/share/pandora_server/util/plugin/targets.conf \
--target_agents /usr/share/pandora_server/util/plugin/target_agents.conf \
--custom_queries /usr/share/pandora_server/util/plugin/custom_queries.conf

Discovery

Este plugin puede integrarse con el Discovery de Pandora FMS.

Para ello se debe cargar el paquete ".disco" que puede descargar desde la librería de Pandora FMS:

https://pandorafms.com/library/ 

image-1687944701817.png

Una vez cargado, se podrán monitorizar entornos de DB2 creando tareas de Discovery desde la sección Management > Discovery > Applications.

image-1687944752646.png

Para cada tarea se solicitarán los siguientes datos mínimos:

image-1684831012628.png

También se podrá ajustar la configuración de la tarea para personalizar la monitorización deseada:

image-1684831055212.png

Las tareas que se completen exitosamente dispondrán de un sumario de ejecución con la siguiente información:

image-1684831099946.png

Las tareas que no se completen exitosamente dispondrán de un sumario de ejecución registrando los errores producidos.

Agentes y módulos generados por el plugin

El plugin creará un agente por cada base de datos objetivo. Ese agente contendrá los siguientes módulos:

Si esta activado database_summary:

AGENT_WAIT_TIME_PERCENT Representa el porcentaje de tiempo en el que los agentes de DB2 están esperando por alguna actividad, como bloqueos o solicitudes externas.
APP_RQSTS_COMPLETED_TOTAL Indica el número total de solicitudes de aplicaciones completadas en la base de datos DB2.
AVG_RQST_CPU_TIME Representa el tiempo promedio de CPU utilizado por cada solicitud de aplicación en la base de datos.
CF_WAIT_TIME_PERCENT Muestra el porcentaje de tiempo en el que los agentes de DB2 están esperando por recursos compartidos en los sistemas con múltiples nodos.
IO_WAIT_TIME_PERCENT Indica el porcentaje de tiempo en el que los agentes de DB2 están esperando por operaciones de entrada/salida (I/O).
LOCK_WAIT_TIME_PERCENT Representa el porcentaje de tiempo en el que los agentes de DB2 están esperando por bloqueos de recursos.
NETWORK_WAIT_TIME_PERCENT Muestra el porcentaje de tiempo en el que los agentes de DB2 están esperando por operaciones de red.
RECLAIM_WAIT_TIME_PERCENT Indica el porcentaje de tiempo en el que los agentes de DB2 están esperando por la liberación de recursos.
ROUTINE_TIME_RQST_PERCENT Representa el porcentaje de tiempo utilizado por las rutinas almacenadas (procedimientos almacenados, funciones, etc.) en cada solicitud de aplicación.
RQST_WAIT_TIME_PERCENT Muestra el porcentaje de tiempo en el que las solicitudes de aplicaciones están esperando para ser ejecutadas por los agentes de DB2.
TOTAL_BP_HIT_RATIO_PERCENT Indica el porcentaje de aciertos en la caché de búfer (buffer pool), lo que representa la eficiencia en el acceso a los datos en memoria.
TOTAL_BP_HIT_RATIO_PERCENT Representa el porcentaje de tiempo utilizado por las operaciones de finalización de transacciones en cada solicitud de aplicación.

 

Si esta activado transactional_log:

Log utilization percent Porcentaje de log utilizado en Kilobytes


Si esta activado db_size:

Database size Tamaño de la base de datos en Megabytes

 

Si esta activado analyze_connections:

Active connections Número de conexiones activas

 

Si esta activado cache_stats:

cache hit ratio <nombre de la caché de búfer de cada fila>  Porcentaje cache hit ratio para cada BP_NAME. Al combinar el cache hit ratio con "bp_name" (nombre de la caché de búfer), puedes evaluar el rendimiento de caché de búfer para cada una de las cachés existentes en la base de datos DB2. Puedes monitorear y comparar el cache hit ratio para cada caché de búfer individualmente, lo que te permite identificar qué cachés de búfer están funcionando de manera más eficiente y cuáles pueden requerir ajustes.

El plugin también creará un módulo por cada consulta personalizada definida en el fichero de configuración.