Parametrización del plugin
El plugin se utiliza previa configuración del fichero externo de configuración.
NOTA: Es extremadamente importante tener en cuenta que los archivos de configuración pensados para el plugin en UNIX deben estar editados y almacenados con retornos de carro tipo “UNIX” y que si se usan retornos de carro tipo “WINDOWS” el plugin no funcionará adecuadamente.
Existen tres bloques funcionales dentro del fichero de configuración:
Configuración de acceso a MySQL y datos generales
Para que el plugin monitorice la base de datos hay que proporcionarle las credenciales de acceso y algunos datos generales que luego se usarán en las comprobaciones:
Usuario, password y host de MySQL
Las credenciales de acceso se completarán de la siguiente forma:
conf_mysql_user mysql
conf_mysql_pass 1234
conf_mysql_host 127.0.0.1
Existe la posibilidad de que tengamos la contraseña en blanco del usuario mysql. En este caso
habria que comentar la linea ( # conf_mysql_pass)
Datos generales
Aquí se especificarán el directorio home de MySQL (generalmente /var/lib/mysql), el fichero de
log, un directorio para ficheros temporales y la ruta completa al plugin de parseo de logs de
Pandora:
conf_mysql_homedir /var/lib/mysql
conf_mysql_basedir /var/lib/mysql
conf_mysql_logfile /var/log/mysql.log
conf_temp /tmp
conf_logparser /etc/pandora/plugins/grep_log
Parámetros de sistema
A continuación se describen los módulos de comprobación específicos del sistema que se encuentran
configurados por defecto en el mysql.conf adjunto:
Bloque de chequeo de sistema
Un bloque de chequeo de sistema en el fichero de configuración es como se muestra a continuación:
check_begin
# Linea de comentario.
<token de chequeo de sistema>
check_end
A continuación se describen los chequeos del plugin:
Verificación del conectividad con la base de datos
Mediante este chequeo se comprobará si la base de datos tiene conectividad con otros elementos
software. Si este chequeo no es satisfactorio se abortará la monitorización:
check_begin
check_mysql_service
check_end
Chequear si el proceso de mysql está activo
Este chequeo comprueba que el proceso de MySQL este activo en el sistema:
check_begin
check_mysql_service
check_end
Chequeo de memoria del servidor (proceso)
Mediante este chequeo se comprueba el uso de memoria por el servidor MySQL.
check_begin
check_mysql_memory
check_end
Número de conexiones TIME_WAIT en el sistema
Muestra el número de conexiones en estado TIME_WAIT en el sistema:
check_begin
check_system_timewait
check_end
Chequeo de espacio en disco del servidor
Chequea el espacio es disco (en KB) por parte de la base de datos. Se comprobará el tamaño del
directorio MySQL homedir especificado en el apartado de Datos generales:
check_begin
check_system_diskusage
check_end
Tamaño del fichero ibdata1
Chequea el tamaño (en KB) del fichero ibdata1 que se encuentra en el directorio MySQL homedir:
check_begin
check_mysql_ibdata1
check_end
Búsqueda de errores en los logs de error de la base de datos
Buscará la cadena “ERROR” en el fichero de log indicado en la sección de Datos generales. Este modulo siempre devolverá el tipo de dato async_string y en caso de que la comprobación devuelva datos se ejecutará el comando asociado (explicado en la sección Ejecución de comandos bajo condición):
check_begin
check_mysql_logs
check_end
Parámetros de rendimiento
A continuación se describen los módulos de comprobación de rendimiento:
Bloque de chequeo de rendimiento
Similares a los de chequeos de sistema como se muestra a continuación:
check_begin
# Linea de comentario.
<token de chequeo de rendimiento>
check_end
A continuación se muestran los bloques de chequeo de rendimiento:
Número de conexiones activas MySQL
Devuelve el número de conexiones activas en la base de datos:
check_begin
mysql_status Full processlist
check_end
Número de conexiones abortadas por que el cliente no cerró correctamente la conexión .
check_begin
mysql_status Aborted_connects
check_end
Número de bytes recibidos por los clientes
check_begin
mysql_status Bytes_received
check_end
Número de bytes enviados por los clientes
check_begin
mysql_status Bytes_sent
check_end
Información de estado del servidor (SHOW GLOBAL STATUS ó SHOW STATUS)
Estas consultas se basan en el comando SHOW GLOBAL STATUS de MySQL. Dentro de los datos
devueltos por este comando se podrá realizar la búsqueda de algún token y de su valor asociado:
check_begin
mysql_status <token to search>
check_end
Información de estado de InnoDB (SHOW INNODB STATUS)
Estas consultas se basan en el comando SHOW INNODB STATUS de MySQL. Dentro de los datos
devueltos por este comando se podrá realizar la búsqueda de algún token y de su valor asociado:
check_begin
mysql_status Com_insert
check_end
Número de inserciones en la base de datos
Número de transacciones de tipo INSERT hechas en la base de datos:
check_begin
check_name <check_name>
mysql_innodb <token to search in innodb status>
check_end
Número de bloqueos sobre tablas en la base de datos al realizar una transacción
check_begin
mysql_status Com_lock_tables
check_end
Bloqueos activos sobre tablas y registros por cada sesión activa
check_begin
# Number of locks over DB tables
mysql_status Table_locks_waited
check_end
check_begin
# Number of row locks
mysql_status Innodb_row_lock_waits
check_end
Peticiones de I/0 pendientes
check_begin
mysql_status Pending_io
check_end
Tamaño total de datos en GB
check_begin
mysql_status Total_size
check_end
Monitorización vía SQL
Una de las características mas potentes del plugin es la posibilidad de especificar su propia orden
SQL para obtener el valor. Veamos algún ejemplo:
check_begin
check_name num_tables
check_schema information_schema
check_sql SELECT COUNT(*) FROM tables
check_end
Check_name El nombre de la comprbación que se verá en la interfaz de Pandora. .
Check_sql La query que deberá devolver un dato simple (ya sea número o cadena)..
Check_schema El esquema de MySQL al que se conectará el plugin para realizar la query
Ejecución de comandos bajo condición
En todos los módulos se podrá especificar la ejecución de un comando si se cumple una condición.
Dichas condiciones podrán ser:
• == (igual a un valor)
• != (Diferente de un valor)
• < (menor de un valor dado)
• > (Mayor de un valor dado).
Si la condición se satisface entonces se ejecutará el comando configurado mediante el token post_execution. En el caso del chequeo check_mysql_logs se ejecutará el comando si devuelve algún dato esta comprobación.
Un ejemplo de esta configuración es la siguiente:
check_begin
check_mysql_cpu
post_condition > 95
post_execution snmptrap -v 1 -c public x.x.x.x 1.2.4.4.65.6.4.3 6 128
check_end
Parametrización del comando asociado a un chequeo
Como se comentó anteriormente en cada comprobación se puede configurar un comando a ejecutar si la condición se cumple. Además, se puede utilizar un token en el comando para que si este se ejecuta entonces se sustituya por el valor del chequeo. Por ejemplo, por medio de la macro _DATA_ en este ejemplo se guarda en el fichero /tmp/mysql_cpu_result el contenido del chequeo:
check_begin
check_mysql_cpu
post_condition > 95
post_execution echo _DATA_ >> /tmp/mysql_cpu_result
check_end
Estado del módulo
Complementariamente, los módulos devolverán un estado si se indica con el token de configuración:
post_status WARNING
O bien:
post_status CRITICAL
Tipo de dato
Por defecto todos los monitores devolverán generic_data, salvo que se indique el siguiente token de configuración.
module_type generic_data_inc
module_type async_string
(o cualquier otro válido)
La única excepción es el monitor check_mysql_service automáticamente un módulo de tipo generic_proc.
Tratamiento de datos en comprobaciones de tipo de rendimiento
En comprobaciones de tipo de rendimiento y queries SQL se puede configurar para que se devuelva
el valor absoluto tal cual lo devuelve MySQL (data_absolute) o la diferencia entre el dato actual y el anterior (data_delta). En la primera ejecución de la comprobación configurada con data_delta no se devolverá dato alguno. A partir de la segunda ejecución se devolverá el incremento. Si se diera el caso que la diferencia entre el dato actual y el anterior fuera negativa, el valor de la comprobación se resetearia y la comprobación no devolverá dato alguno.
Por defecto las comprobaciones de tipo de rendimiento serán configuradas como data_absolute.
Por ejemplo esta comprobación devolverá el incremento de las sesiones activas en MySQL:
check_begin
mysql_status Full processlist
data_delta
check_end