DB2
Este documento describe la funcionalidad DB2 del discovery de PandoraFMS.
- Introducción
- Prerrequisitos
- Parámetros y configuración
- Ejecución manual
- Discovery
- Agentes y módulos generados por el plugin
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.
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/
Una vez cargado, se podrán monitorizar entornos de DB2 creando tareas de Discovery desde la sección Management > Discovery > Applications.
Para cada tarea se solicitarán los siguientes datos mínimos:
- DB2 target string: Lista de objetivos DB2 a monitorizar por la tarea. Será una lista separada por comas o por líneas. Cada base de datos objetivo se podrá definir con el formato IP:PUERTO/SID o IP/SID.
- User: Usuario de conexión a las bases de datos objetivo.
- Password: Contraseña del usuario indicado.
También se podrá ajustar la configuración de la tarea para personalizar la monitorización deseada:
- Max threads: Para optimizar el tiempo de ejecución, se podrán configurar múltiples hilos para monitorizar los agentes de la tarea. Hay que tener en cuenta que configurar múltiples hilos puede aumentar el uso de CPU de la tarea.
- Target agent: Lista de agentes objetivo para los objetivos DB2 a monitorizar. Es decir, los nombres con los que se generarán los agentes de cada objetivo definido en la tarea. Será una lista separada por comas o por líneas. La posición de los nombres en la lista deberá coincidir con la posición de los objetivos DB2 en su lista, es decir, el primer nombre se usará para el primer objetivo y así sucesivamente. Si la lista se separa por líneas, las líneas en blanco se ignorarán. Si no se especifica un nombre de agente para un objetivo se usará su IP o FQDN como nombre del agente.
- Custom module prefix: Texto incluido como prefijo para los todos los nombres de módulos generados. Es útil para localizar los módulos generados por la tarea o distinguirlos de otros.
- Get database summary: Si se activa monitorizará el sumario de las bases de datos.
- Check transactional log utilization: Si se activa monitorizará el uso del log transaccional.
- Get number of connections: Si se activa monitorizará las conexiones.
- Check DB size: Si se activa monitorizará el tamaño de las bases de datos.
- Retrieve cache statistics: Si se activa monitorizará las estadísticas de caché.
- Execute custom queries: Si se activa permitirá ejecutar consultas personalizadas a cada objetivo DB2.
- Custom queries: Bloque de configuración para definir las consultas personalizadas que se ejecutarán. Cada consulta generará un nuevo módulo para cada agente de la tarea.
Las tareas que se completen exitosamente dispondrán de un sumario de ejecución con la siguiente información:
- Total agents: Total de agentes generados por la tarea.
- Targets up: Total de objetivos a los que ha sido posible conectar.
- Targets down: Total de objetivos a los que no ha sido posible conectar.
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.