# MySQL Server Advanced Plugin

# Changelog

<table border="1" id="bkmrk-date-author-change-v" style="border-collapse: collapse; width: 100%; height: 145px;"><tbody><tr style="height: 29px;"><td style="width: 25%; height: 29px;">Date</td><td style="width: 25%; height: 29px;">Author</td><td style="width: 25%; height: 29px;">Change</td><td style="width: 25%; height: 29px;">Version</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">12/03/12</td><td style="width: 25%; height: 29px;">Tomas</td><td style="width: 25%; height: 29px;">First Version</td><td style="width: 25%; height: 29px;">V1r1</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">01/07/2013</td><td style="width: 25%; height: 29px;">Mario</td><td style="width: 25%; height: 29px;">Cambios en coódigo</td><td style="width: 25%; height: 29px;">v1r2</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">25/04/2014</td><td style="width: 25%; height: 29px;">Mario</td><td style="width: 25%; height: 29px;">Cambios en código</td><td style="width: 25%; height: 29px;">v1r3</td></tr><tr style="height: 29px;"><td style="width: 25%; height: 29px;">3/09/2022</td><td style="width: 25%; height: 29px;">Alex</td><td style="width: 25%; height: 29px;">Cambios en el código</td><td style="width: 25%; height: 29px;">v1r4</td></tr></tbody></table>

# Introducción

Este documento tiene como objetivo la descripción de la monitorización de bases de datos MySQL sobre Unix. Se han elegido una serie de módulos “base” en base a nuestra experiencia en monitorización de sistemas y las necesidades de algunos de nuestros clientes. También se han añadido todas las especificaciones recogidas en diferentes entornos de producción real, tomando  
especificaciones reales de administradores de bases de datos.  
  
Para la extracción de la información se utiliza:  
  
• Un fichero de configuración externo donde se define toda la parametrización del plugin. Este fichero de configuración puede hacer llamadas (includes) a otros ficheros.  
• Se utiliza el software ya instalado en el sistema (MySQL, comandos del sistema, ficheros de alertas de MySQL, etc), para la monitorización realizada por el plugin sin tener que instalar librerías o utilidades de terceros.  
• Se utiliza un parser de log existente (el de Pandora) para procesar los logs de alertas de MySQL. Este parser debe ser “automático” y se basará en el reporte de todos los mensajes de error críticos con la forma “ERROR \*”.  
• Se realizan una serie de chequeos básicos “por defecto”, aunque se pueden suprimir o personalizar.  
• Se dispone de una interfaz “abierta” para especificar consultas SQL libres, permitiendo modelar todo tipo de consultas SQL que se realizan con otras herramientas o de forma manual por los administradores.  
• El sistema se integra con el agente Unix y con la capacidad de distribuir colecciones de ficheros, de forma que se puede distribuir el plugin por un lado y las colecciones de ficheros de forma individual -por agente- y/o por política.  
  
Cabe destacar que como el resto de monitorización con Pandora FMS, el plugin de monitorización  
MySQL se puede usar para recoger información de tipo “cadena de texto” (para tratarlo como  
eventos) o de tipo numérico (para hacer gestión del rendimiento).

# Requisitos

Los requisitos para que funcione correctamente esta monitorización son los siguientes:  
• Instalar el agente de Pandora FMS.  
• Tener perl instalado.  
• Tener una base de datos MySQL instalada en la máquina donde se va a monitorizar, con conectividad a dicha base de datos.  
• Especificar el nombre, usuario, password y host de la base de datos MySQL.  
• Es necesario que el usuario con el que se ejecuta el agente de Pandora FMS, que es el usuario que ejecutará el plugin, tenga acceso a los siguientes recursos de MySQL:  
 ◦ Directorio MySQL homedir (directorio con la instalación de MySQL, típicamente  
 /var/lib/mysql).  
 ◦ Fichero de log de MySQL (típicamente /var/lib/mysql/mysql.log).  
 ◦ Acceso y permisos de escritura a un directorio para ficheros temporales.

  
**Documentacion que debe entregar el Área que requiere la monitorizacion**  
Para la correcta monitorización de MySQL es necesario que el Área técnica envíe cierta información que sera incluida en los ficheros de configuración. Esta información es la siguiente:  
• Usuario, password, host con acceso a la base de datos MySQL. Dicho usuario debe tener  
permiso para leer en todas las tablas de las que se quiera extraer información.  
• Ficheros de log y directorio base de MySQL.  
• Si desea monitorizar alguna cosa que no venga definida “por defecto” será necesario que  
provea el código SQL para realizar esa monitorización, así como un ejemplo del dato desalida,  
especificando si es numérico, o tipo cadena, etc).

# Matriz de compatibilidad

<table border="1" id="bkmrk-sistemas-donde-se-ha" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">Sistemas donde se ha probado</td><td style="width: 50%;">• Ubuntu 10.04 con MySQL 5.0  
• OpenSuse 11.2 con MySQL 5.5</td></tr><tr><td style="width: 50%;">Sistemas donde deberia funcionar</td><td style="width: 50%;">• Resto de sistemas Unix con MySQL 5.0 o  
superiores</td></tr></tbody></table>

# Clasificación de módulos de EndPoints generados

Hay que tener en cuenta que la mayoría de estos parámetros deben ser procesados como “delta” o  
usando el tipo de datos “generic\_data\_inc” ya que son contadores.  
  
Aborted\_connects  
Binlog\_cache\_disk\_use  
Binlog\_cache\_use  
Binlog\_stmt\_cache\_disk\_use  
Binlog\_stmt\_cache\_use  
Bytes\_received  
Bytes\_sent  
Com\_admin\_commands  
Com\_assign\_to\_keycache  
Com\_alter\_db  
Com\_alter\_db\_upgrade  
Com\_alter\_event  
Com\_alter\_function  
Com\_alter\_procedure  
Com\_alter\_server  
Com\_alter\_table  
Com\_alter\_tablespace  
Com\_analyze  
Com\_begin  
Com\_binlog  
Com\_call\_procedure  
Com\_change\_db  
Com\_change\_master  
Com\_check  
Com\_checksum  
Com\_commit  
Com\_create\_db  
Com\_create\_event  
Com\_create\_function  
Com\_create\_index  
Com\_create\_procedure  
Com\_create\_server  
Com\_create\_table  
Com\_create\_trigger  
Com\_create\_udf  
Com\_create\_user  
Com\_create\_view  
Com\_dealloc\_sql  
Com\_delete  
Com\_delete\_multi  
Com\_do  
Com\_drop\_db  
Com\_drop\_event  
Com\_drop\_function  
Com\_drop\_index  
Com\_drop\_procedure  
Com\_drop\_server  
Com\_drop\_table  
Com\_drop\_trigger  
Com\_drop\_user  
Com\_drop\_view  
Com\_empty\_query  
Com\_execute\_sql  
Com\_flush  
Com\_grant  
Com\_ha\_close  
Com\_ha\_open  
Com\_ha\_read  
Com\_help  
Com\_insert  
Com\_insert\_select  
Com\_install\_plugin  
Com\_kill  
Com\_load  
Com\_lock\_tables  
Com\_optimize  
Com\_preload\_keys  
Com\_prepare\_sql  
Com\_purge  
Com\_purge\_before\_date  
Com\_release\_savepoint  
Com\_rename\_table  
Com\_rename\_user  
Com\_repair  
Com\_replace  
Com\_replace\_select  
Com\_reset  
Com\_resignal  
Com\_revoke  
Com\_revoke\_all  
Com\_rollback  
Com\_rollback\_to\_savepoint  
Com\_savepoint  
Com\_select  
Com\_set\_option  
Com\_signal  
Com\_show\_authors  
Com\_show\_binlog\_events  
Com\_show\_binlogs  
Com\_show\_charsets  
Com\_show\_collations  
Com\_show\_contributors  
Com\_show\_create\_db  
Com\_show\_create\_event  
Com\_show\_create\_func  
Com\_show\_create\_proc  
Com\_show\_create\_table  
Com\_show\_create\_trigger  
Com\_show\_databases  
Com\_show\_engine\_logs  
Com\_show\_engine\_mutex  
Com\_show\_engine\_status  
Com\_show\_events  
Com\_show\_errors  
Com\_show\_fields  
Com\_show\_function\_status  
Com\_show\_grants  
Com\_show\_keys  
Com\_show\_master\_status  
Com\_show\_open\_tables  
Com\_show\_plugins  
Com\_show\_privileges  
Com\_show\_procedure\_status  
Com\_show\_processlist  
Com\_show\_profile  
Com\_show\_profiles  
Com\_show\_relaylog\_events  
Com\_show\_slave\_hosts  
Com\_show\_slave\_status  
Com\_show\_status  
Com\_show\_storage\_engines  
Com\_show\_table\_status  
Com\_show\_tables  
Com\_show\_triggers  
Com\_show\_variables  
Com\_show\_warnings  
Com\_slave\_start  
Com\_slave\_stop  
Com\_stmt\_close  
Com\_stmt\_execute  
Com\_stmt\_fetch  
Com\_stmt\_prepare  
Com\_stmt\_reprepare  
Com\_stmt\_reset  
Com\_stmt\_send\_long\_data  
Com\_truncate  
Com\_uninstall\_plugin  
Com\_unlock\_tables  
Com\_update  
Com\_update\_multi  
Com\_xa\_commit  
Com\_xa\_end  
Com\_xa\_prepare  
Com\_xa\_recover  
Com\_xa\_rollback  
Com\_xa\_start  
Compression  
Connections  
Created\_tmp\_disk\_tables  
Created\_tmp\_files  
Created\_tmp\_tables  
Delayed\_errors  
Delayed\_insert\_threads  
Delayed\_writes  
Flush\_commands  
Handler\_commit  
Handler\_delete  
Handler\_discover  
Handler\_prepare  
Handler\_read\_first  
Handler\_read\_key  
Handler\_read\_last  
Handler\_read\_next  
Handler\_read\_prev  
Handler\_read\_rnd  
Handler\_read\_rnd\_next  
Handler\_rollback  
Handler\_savepoint  
Handler\_savepoint\_rollback  
Handler\_update  
Handler\_write  
Innodb\_buffer\_pool\_pages\_data  
Innodb\_buffer\_pool\_pages\_dirty  
Innodb\_buffer\_pool\_pages\_flushed  
Innodb\_buffer\_pool\_pages\_free  
Innodb\_buffer\_pool\_pages\_misc  
Innodb\_buffer\_pool\_pages\_total  
Innodb\_buffer\_pool\_read\_ahead\_rnd  
Innodb\_buffer\_pool\_read\_ahead  
Innodb\_buffer\_pool\_read\_ahead\_evicted  
Innodb\_buffer\_pool\_read\_requests  
Innodb\_buffer\_pool\_reads  
Innodb\_buffer\_pool\_wait\_free  
Innodb\_buffer\_pool\_write\_requests  
Innodb\_data\_fsyncs  
Innodb\_data\_pending\_fsyncs  
Innodb\_data\_pending\_reads  
Innodb\_data\_pending\_writes  
Innodb\_data\_read  
Innodb\_data\_reads  
Innodb\_data\_writes  
Innodb\_data\_written  
Innodb\_dblwr\_pages\_written  
Innodb\_dblwr\_writes  
Innodb\_have\_atomic\_builtins  
Innodb\_log\_waits  
Innodb\_log\_write\_requests  
Innodb\_log\_writes  
Innodb\_os\_log\_fsyncs  
Innodb\_os\_log\_pending\_fsyncs  
Innodb\_os\_log\_pending\_writes  
Innodb\_os\_log\_written  
Innodb\_page\_size  
Innodb\_pages\_created  
Innodb\_pages\_read  
Innodb\_pages\_written  
Innodb\_row\_lock\_current\_waits  
Innodb\_row\_lock\_time  
Innodb\_row\_lock\_time\_avg  
Innodb\_row\_lock\_time\_max  
Innodb\_row\_lock\_waits  
Innodb\_rows\_deleted  
Innodb\_rows\_inserted  
Innodb\_rows\_read  
Innodb\_rows\_updated  
Innodb\_truncated\_status\_writes  
Key\_blocks\_not\_flushed  
Key\_blocks\_unused  
Key\_blocks\_used  
Key\_read\_requests  
Key\_reads  
Key\_write\_requests  
Key\_writes  
Last\_query\_cost  
Max\_used\_connections  
Not\_flushed\_delayed\_rows  
Open\_files  
Open\_streams  
Open\_table\_definitions  
Open\_tables  
Opened\_files  
Opened\_table\_definitions  
Opened\_tables  
Performance\_schema\_cond\_classes\_lost  
Performance\_schema\_cond\_instances\_lost  
Performance\_schema\_file\_classes\_lost  
Performance\_schema\_file\_handles\_lost  
Performance\_schema\_file\_instances\_lost  
Performance\_schema\_locker\_lost  
Performance\_schema\_mutex\_classes\_lost  
Performance\_schema\_mutex\_instances\_lost  
Performance\_schema\_rwlock\_classes\_lost  
Performance\_schema\_rwlock\_instances\_lost  
Performance\_schema\_table\_handles\_lost  
Performance\_schema\_table\_instances\_lost  
Performance\_schema\_thread\_classes\_lost  
Performance\_schema\_thread\_instances\_lost  
Prepared\_stmt\_count  
Qcache\_free\_blocks  
Qcache\_free\_memory  
Qcache\_hits  
Qcache\_inserts  
Qcache\_lowmem\_prunes  
Qcache\_not\_cached  
Qcache\_queries\_in\_cache  
Qcache\_total\_blocks  
Queries  
Questions  
Rpl\_status  
Select\_full\_join  
Select\_full\_range\_join  
Select\_range  
Select\_range\_check  
Select\_scan  
Slave\_heartbeat\_period  
Slave\_open\_temp\_tables  
Slave\_received\_heartbeats  
Slave\_retried\_transactions  
Slave\_running  
Slow\_launch\_threads  
Slow\_queries  
Sort\_merge\_passes  
Sort\_range  
Sort\_rows  
Sort\_scan  
Ssl\_accept\_renegotiates  
Ssl\_accepts  
Ssl\_callback\_cache\_hits  
Ssl\_cipher  
Ssl\_cipher\_list  
Ssl\_client\_connects  
Ssl\_connect\_renegotiates  
Ssl\_ctx\_verify\_depth  
Ssl\_ctx\_verify\_mode  
Ssl\_default\_timeout  
Ssl\_finished\_accepts  
Ssl\_finished\_connects  
Ssl\_session\_cache\_hits  
Ssl\_session\_cache\_misses  
Ssl\_session\_cache\_mode  
Ssl\_session\_cache\_overflows  
Ssl\_session\_cache\_size  
Ssl\_session\_cache\_timeouts  
Ssl\_sessions\_reused  
Ssl\_used\_session\_cache\_entries  
Ssl\_verify\_depth  
Ssl\_verify\_mode  
Ssl\_version  
Table\_locks\_immediate  
Table\_locks\_waited  
Tc\_log\_max\_pages\_used  
Tc\_log\_page\_size  
Tc\_log\_page\_waits  
Threads\_cached  
Threads\_connected  
Threads\_created  
Threads\_running  
Uptime  
Uptime\_since\_flush\_status

# Instalación

Copiar el plugin al directorio de plugins del agente, o distribuirlo con file collections. Lo mismo con el archivo conf. La llamada desde el agente será similar a esta, pero usando los paths donde esté instalado el plugin y el conf.

```
module_plugin perl /etc/pandora/plugins/pandora_mysql.pl /etc/pandora/plugins/mysql.conf
```

# Monitorización

El plugin monitoriza “por defecto” los siguientes puntos:  
  
• Verificación del conectividad con la base de datos.  
• Chequear si el proceso de mysql está activo .  
• Chequeo de memoria del servidor (proceso) .  
• Número de conexiones TIME\_WAIT en el sistema .  
• Chequeo de espacio en disco del servidor (generalmente /var/lib/mysql).  
• Tamaño del fichero ibdata1 .  
• Busqueda de errores en los logs de error de la base de datos (generalmente /var/lib/mysql/mysql.log).  
  
Adicionalmente también monitoriza los siguientes parámetros de rendimiento:  
  
• Número de conexiones activas MySQL.  
• Tiempo de actividad del servidor (uptime).  
• Número de conexiones abortadas por que el cliente no cerró correctamente la conexión.  
• Número de bytes recibidos por los clientes.  
• Información de estado del servidor (SHOW GLOBAL STATUS ó SHOW STATUS).  
• Información de estado de InnoDB (SHOW INNODB STATUS) .  
• Número de bytes enviados por los clientes.  
• Número de inserciones en la base de datos.  
• Número de bloqueos sobre tablas en la base de datos al realizar una transacción.  
• Bloqueos activos sobre tablas y registros por cada sesión activa.  
• Peticiones de I/0 pendientes.  
• Tamaño total de datos en GB.  
  
Todos esos módulos vienen parametrizados en el fichero “mysql.conf” que viene en el paquete del plugin. Esos módulos pueden ser eliminados o ampliados por un administrador de MySQL.

# 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:  
<span style="text-decoration: underline;">*Usuario, password y host de MySQL*</span>  
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)  
*<span style="text-decoration: underline;">Datos generales</span>*  
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:  
*<span style="text-decoration: underline;">Bloque de chequeo de sistema</span>*  
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:  
<span style="text-decoration: underline;">*Verificación del conectividad con la base de datos*</span>  
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
```

  
*<span style="text-decoration: underline;">Chequear si el proceso de mysql está activo</span>*  
Este chequeo comprueba que el proceso de MySQL este activo en el sistema:

```
check_begin
check_mysql_service
check_end
```

  
*<span style="text-decoration: underline;">Chequeo de memoria del servidor (proceso)</span>*  
Mediante este chequeo se comprueba el uso de memoria por el servidor MySQL.

```
check_begin
check_mysql_memory
check_end
```

  
  
*<span style="text-decoration: underline;">Número de conexiones TIME\_WAIT en el sistema</span>*  
Muestra el número de conexiones en estado TIME\_WAIT en el sistema:

```
check_begin
check_system_timewait
check_end
```

  
*<span style="text-decoration: underline;">Chequeo de espacio en disco del servidor</span>*  
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
```

  
*<span style="text-decoration: underline;">Tamaño del fichero ibdata1</span>*  
Chequea el tamaño (en KB) del fichero ibdata1 que se encuentra en el directorio MySQL homedir:

```
check_begin
check_mysql_ibdata1
check_end
```

  
*<span style="text-decoration: underline;">Búsqueda de errores en los logs de error de la base de datos</span>*  
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:  
*<span style="text-decoration: underline;">Bloque de chequeo de rendimiento</span>*  
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:  
*<span style="text-decoration: underline;">Número de conexiones activas MySQL</span>*  
Devuelve el número de conexiones activas en la base de datos:

```
check_begin
mysql_status Full processlist
check_end
```

  
*<span style="text-decoration: underline;"> Número de conexiones abortadas por que el cliente no cerró correctamente la conexión .  
</span>*

```
check_begin
mysql_status Aborted_connects
check_end
```

  
<span style="text-decoration: underline;"> *Número de bytes recibidos por los clientes*</span>

```
check_begin
mysql_status Bytes_received
check_end
```

  
  
*<span style="text-decoration: underline;"> Número de bytes enviados por los clientes</span>*

```
check_begin
mysql_status Bytes_sent
check_end
```

  
  
*<span style="text-decoration: underline;">Información de estado del servidor (SHOW GLOBAL STATUS ó SHOW STATUS</span>*)  
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
```

  
*<span style="text-decoration: underline;">Información de estado de InnoDB (SHOW INNODB STATUS)</span>*  
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
```

  
*<span style="text-decoration: underline;">Número de inserciones en la base de datos  
</span>*  
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
```

*<span style="text-decoration: underline;">Número de bloqueos sobre tablas en la base de datos al realizar una transacción  
</span>*

```
check_begin
mysql_status Com_lock_tables
check_end
```

  
*<span style="text-decoration: underline;">Bloqueos activos sobre tablas y registros por cada sesión activa  
</span>*

```
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
```

  
  
*<span style="text-decoration: underline;">Peticiones de I/0 pendientes  
</span>*

```
check_begin
mysql_status Pending_io
check_end
```

*<span style="text-decoration: underline;">Tamaño total de datos en GB  
</span>*

```
check_begin
mysql_status Total_size
check_end
```

  
*<span style="text-decoration: underline;">Monitorización vía SQL</span>*  
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
```

  
*<span style="text-decoration: underline;">Ejecución de comandos bajo condición</span>*  
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)  
• &lt; (menor de un valor dado)  
• &gt; (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
```

  
*<span style="text-decoration: underline;">Parametrización del comando asociado a un chequeo</span>*  
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
```

  
*<span style="text-decoration: underline;">Estado del módulo</span>*  
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  
  
*<span style="text-decoration: underline;">Tipo de dato</span>*  
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.

\* En los módulos en los que usemos check\_name, se puede usar check\_type para elegir el tipo de dato del módulo.

  
*<span style="text-decoration: underline;">Tratamiento de datos en comprobaciones de tipo de rendimiento</span>*  
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
```