Checkmk
to checkmk.com
Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

1. Introducción

Checkmk te permite monitorizar de forma exhaustiva los clústeres MySQL y Galera para MySQL. Puedes encontrar una lista completa de opciones de monitorización en nuestro Catálogo de Check Plugins. Entre otras cosas, Checkmk puede monitorizar lo siguiente:

Para poder monitorizar las bases de datos, además del agente Checkmk sólo necesitas el Plugin de agente en el servidor de base de datos. No se necesita software adicional ni en el Checkmk ni en el servidor de bases de datos.

A continuación, describiremos la configuración de la monitorización de MySQL para hosts Linux y Windows. Más adelante, pasaremos a la configuración mediante el Agent bakery.

2. Configuración de la monitorización

2.1. Crear un usuario

Linux y Windows

El único requisito para configurar la monitorización en MySQL es disponer de un usuario de base de datos y su contraseña. Este usuario sólo necesita derechos de lectura en las instancias de MySQL. Si aún no existe dicho usuario, créalo en las instancias que se van a monitorizar. Para ello, inicia sesión en MySQL con un usuario con suficientes derechos de acceso y, a continuación, crea un nuevo usuario de base de datos:

mysql> CREATE USER 'checkmk'@'localhost' IDENTIFIED BY 'MyPassword';

Este usuario recién creado necesita autorización para leer las instancias. Por tanto, comprueba si el usuario tiene los permisos necesarios, o añádelos con el siguiente comando. El siguiente ejemplo lo hace para el usuario checkmk:

mysql> GRANT SELECT, SHOW DATABASES ON *.* TO 'checkmk'@'localhost';

Si utilizas la replicación MySQL, el usuario debe tener al menos el derecho CLIENTE DE REPLICACIÓN para monitorizar el servidor de réplica:

mysql> GRANT REPLICATION CLIENT ON *.* TO 'checkmk'@'localhost';

2.2. Instalación del Plugin

Linux

El Plugin mk_mysql necesario se encuentra en tu servidor Checkmk, en el directorio~/share/check_mk/agents/plugins/. Como primer paso, copia este Plugin en el directorio de plugins del agentedel host que se va a monitorizar. El directorio de Plugins suele ser/usr/lib/check_mk_agent/plugins/. En cuanto el script esté en el directorio especificado, hazlo ejecutable:

root@linux# chmod 700 mk_mysql

Por supuesto, este Plugin también puede ejecutarse de forma asíncrona si es necesario.

Windows

El Agente para Windows viene de serie con una serie de Plugins. Por eso, también encontrarás el Plugin para la monitorización de MySQL en tu host después de instalar el agente. Sólo tienes que copiarlo en el directorio correcto para utilizarlo.

PS> copy "c:\Program Files (x86)\checkmk\service\plugins\mk_mysql.vbs" c:\ProgramData\checkmk\agent\plugins\

2.3. Crear el archivo de configuración

El archivo de configuración que crees a continuación -o a través del Agent bakery- se utiliza como única fuente para los ajustes de monitorización de MySQL. Cualquier otro ajuste de configuración que pueda existir localmente no es tenido en cuenta por Checkmk.

Linux

A continuación, crea un archivo con el nombre mysql.cfg en eldirectorio de configuración (normal:/etc/check_mk/) para el agente Checkmk en el host de destino.

El agente puede recuperar la información deseada de tu instancia MySQL utilizando los datos de usuario introducidos en él. Aunque la especificación de un usuario de la base de datos es opcional, te lo recomendamos, ya que el agente suele ejecutar el plugin como usuario root del sistema. Si no se especifica ningún nombre de usuario de la base de datos, el cliente MySQL intenta acceder a la base de datos con el nombre de usuario del usuario del sistema que la ejecuta, sin utilizar contraseña, o utilizando la contraseña almacenada en .mylogin.cnf. Puedes encontrar más información, por ejemplo, en la documentación de MySQL.

Esto se hace en el formato habitual de los archivos de configuración de MySQL:

/etc/check_mk/mysql.cfg
[client]
user=checkmk
password=MyPassword

Guardar los datos de acceso con el siguiente comando protege contra accesos no autorizados:

root@linux# chmod 400 mysql.cfg

Windows

En un host Windows, crea un archivo llamado mysql.ini en el directorio siguiente:

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword

Si ejecutas varias instancias de MySQL con diferentes nombres de usuario y contraseñas en el host, simplemente crea un archivo .ini por instancia utilizando el siguiente esquema de nombres: mysql_INSTANCE-ID.ini

2.4. Crear servicios

Ahora que has instalado y configurado el Plugin, puedes realizar undescubrimiento de servicios para este host. La siguiente captura de pantalla muestra sólo una selección de los servicios que se pueden encontrar:

mysql discovery

3. Configuración avanzada

3.1. Ejecutar un Plugin de forma asíncrona

El Plugin para la monitorización de MySQL, como tantos otros, puede ejecutarse de forma asíncrona, por ejemplo para tener en cuenta tiempos de ejecución más largos en instancias MySQL grandes.

Linux

En un host Linux, el Plugin sólo se traslada a un subdirectorio del directorio del Plugin. Por ejemplo, si sólo quieres ejecutar el Plugin cada 5 minutos, sólo tienes que mover el script mk_mysql a un subdirectorio llamado 300. Encontrarás instrucciones detalladas para la ejecución asíncrona de plugins en el artículo sobre el agente de Linux.

Windows

Para ejecutar el Plugin de forma asíncrona en Windows, ajusta la configuración del agente y amplía la sección execution en pluginscon la siguiente entrada:

C:\ProgramData\checkmk\agent\check_mk.usuario.yml
plugins:
    execution:
        - pattern: mk_mysql.vbs
          cache_age: 300
          async: yes

Puedes encontrar instrucciones detalladas para la ejecución asíncrona de Plugin en un host Windows en el artículo sobre losagentes Windows.

3.2. Opciones adicionales para los archivos de configuración

Configurar la comunicación con MySQL mediante socket

En lugar de dejar que el agente se comunique con MySQL a través de TCP, puedes indicar a Checkmk que se dirija al socket. Para ello, sólo tienes que definir la variable socket en el archivo mysql.cfg. He aquí un ejemplo del archivo de configuración de Windows:

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
*socket=/var/run/mysqld/mysqld.sock*

Definir host manualmente

Además, también es posible definir el host MySQL manualmente a través de los archivos de configuración. La variable correspondiente se llama simplemente host. Aquí, de nuevo, utilizando el ejemplo de Windows:

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
*host=127.0.0.1*

3.3. Configurar umbrales

Monitorización de sesiones

Algunos de los checks configurados de esta forma no tienen valores umbrales preestablecidos, lo que suele ocurrir porque no hay valores por defecto razonables que sean suficientes en la mayoría de los casos. Sin embargo, pueden configurarse en unos sencillos pasos. Por ejemplo, puedes encontrar la regla MySQL Sessions & Connectionsa través de la conocida Host & Service Parameters. Se puede utilizar para definir valores umbrales significativos para el servicio MySQL sessions que sean útiles para tu instancia de MySQL.

mysql sessions connections

Monitorización de las conexiones

Tampoco hemos especificado valores umbrales para la utilización del número máximo de conexiones simultáneas especificadas por MySQL, ya que dependen mucho más de la estructura de tu instancia MySQL que con otros servicios. El establecimiento de los valores umbrales correspondientes se puede realizar en un santiamén con una regla del conjunto de reglas MySQL Connections. Lo mismo ocurre con la cantidad de conexiones abiertas.

mysql connections

Monitorización del tamaño de las bases de datos

El tamaño de las bases de datos individuales en MySQL se monitoriza mediante el complemento MySQL: Capacity check plugin. Los valores umbrales de este plugin se pueden determinar con la regla Size of MySQL databases.

mysql size database

3.4. Monitorización de archivos de registro

Con la ayuda del check plugin logwatch también puedes monitorizar los archivos de registro generados por MySQL en busca de errores. Después de configurar el plugin, comprueba primero dónde se encuentran los archivos de registro correspondientes en tu instancia de MySQL. Su ubicación exacta se puede encontrar en el archivo .ini o .cnf de tu instancia.

Puedes introducir los registros que te interesen en el archivo de configuración de Logwatch y hacer las siguientes entradas, por ejemplo, en un host Linux:

/etc/check_mk/logwatch.cfg
/var/log/mysql/error.log
 W Can't create/write to file
 C [ERROR] Can't start server
 C mysqld_safe mysqld from pid file /var/run/mysql/mysqld.pid ended

4. Configuraciones mediante el Agent bakery

La configuración se simplifica mucho con laAgent bakery, ya que se evitan los errores de sintaxis en los archivos de configuración y se pueden realizar fácilmente adaptaciones a entornos cambiantes. La principal diferencia respecto a una instalación manual es que sólo para configuraciones especiales específicas de MySQL tienes que trabajar en el host MySQL en su línea de comandos.

Para la configuración inicial, basta con queconfigures el usuario de la base de datos en el host MySQL, y crees la regla correspondiente en la panadería. Puedes encontrar el conjunto de reglas en Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules. A continuación, puedes buscar MySQL en el campo de búsqueda:

mysql bakery ruleset search

Introduce el ID de usuario y la contraseña del nuevo usuario de la base de datos. Con el siguiente campo puedes configurar el agente Checkmk para hosts Linux de modo que no establezca la conexión con MySQL a través de TCP, sino a través del socket. Dependiendo del tamaño y la utilización, esto puede contribuir a mejorar el rendimiento.

También se puede definir una versión asíncrona del Plugin de MySQL utilizando este conjunto de reglas. Esto puede ser útil para tener en cuenta tiempos de ejecución más largos con instancias MySQL grandes, o si simplemente no se necesitan los datos de estado cada minuto.

mysql bakery

5. Opciones de diagnóstico

Si, por ejemplo, surgen comportamientos inesperados o problemas al configurar la monitorización, se recomienda comprobarlo directamente en un host afectado. Como los Plugin para la monitorización de MySQL, tanto para Linux como para Windows, son shell o scripts de Visual Basic, pueden ejecutarse fácilmente sin el agente. Independientemente del sistema operativo utilizado, sólo es necesario dar a conocer al shell o a la línea de comandos el directorio de configuración correspondiente.

5.1. Opciones de diagnóstico en Linux

Primero comprueba los directorios aplicables para tu host respectivo.

user@host:~$  grep 'export MK' /usr/bin/check_mk_agent
export MK_LIBDIR='/usr/lib/check_mk_agent'
export MK_CONFDIR='/etc/check_mk'

Ahora utiliza el comando exportar para crear las variables del entorno MK_CONFDIR yMK_LIBDIR. Personaliza los comandos según tus directorios reales.

root@linux# export MK_CONFDIR="/etc/check_mk/"
root@linux# export MK_LIBDIR="/usr/lib/check_mk_agent"

Importante: estas variables del entorno sólo existen en el intérprete de comandos abierto en ese momento, y desaparecen en cuanto lo cierras.

A continuación, puedes ejecutar el script mk_mysql directamente en el directorio del Plugin del agente Checkmk.

root@linux# $MK_LIBDIR/plugins/mk_mysql

Si se han concedido correctamente todos los derechos al usuario de la base de datos, ahora deberías ver varios cientos de líneas de salida, incluso en un entorno MySQL pequeño y fresco.

5.2. Opciones de diagnóstico en Windows

Para poder ejecutar manualmente el Plugin check en un host Windows, abre primero una línea de comandos con derechos de administrador. Ahora establece la variable del entorno MK_CONFDIRen esta línea de comando, esto es necesario para que el Plugin pueda encontrar tus archivos de configuración.

PS> set MK_CONFDIR=c:\ProgramData\checkmk\agent\config

Importante: una variable del entorno establecida aquí tampoco es permanente, sino que sólo existe mientras esté abierta esta línea de comando.

Durante la ejecución real del Plugin, es aconsejable redirigir la salida a la línea de comandos. Para ello, Windows proporciona la herramienta integrada cscript.

PS> cscript c:\ProgramData\checkmk\agent\plugins\mk_mysql.vbs

5.3. Posibles errores y mensajes de error

mysqladmin: falló la conexión al servidor en xyz

El mensaje de error connect to server at xyz failed indica que el usuario especificado en el fichero de configuración no tiene acceso a MySQL. Primero comprueba que no se han producido errores de transmisión al crear el archivo de configuración (mysql.cfg o mysql.ini).

Si el nombre de usuario o la contraseña especificados en el archivo de configuración son incorrectos, recibirás algo parecido al siguiente mensaje de error:

Access denied for user checkmk

No se emite el tamaño de la base de datos

Si ves toda una serie de datos de tu instancia MySQL en Checkmk, pero no hay ningún servicio que monitorice el tamaño de las bases de datos que contiene, es una indicación de que el usuario de la base de datos no tiene el derecho SELECT.

Check tu usuario de base de datos en MySQL con el siguiente comando:

mysql> show grants for 'checkmk'@'localhost';
+--------------------------------------------------------------------------+
| Grants for checkmk@localhost                                             |
+--------------------------------------------------------------------------+
| GRANT SELECT, SHOW DATABASES ON *.* TO `checkmk`@`localhost`             |
+--------------------------------------------------------------------------+

Si falta la palabra clave SELECT en tu salida, concede al usuario de la base de datos los derechos adecuados, tal y como se especifica en el capítulode configuración de usuarios.

6. Archivos y directorios

6.1. En el host MySQL

En Linux

Ruta del archivo Función

/usr/bin/check_mk_agent

El agente que recoge todos los datos sobre el host.

/usr/lib/check_mk/plugins/

El directorio habitual en el que se almacenan los Plugin.

/etc/check_mk/mysql.cfg

El archivo de configuración del Plugin MySQL.

/etc/check_mk/mysql.local.cfg

Fichero de configuración adicional para especificar sockets específicos del host.

Windows

Ruta del archivo Función

C:\ProgramData\checkmk\agent\plugins\

El directorio habitual de Plugins.

C:\ProgramData\checkmk\agent\config\

El directorio de configuración habitual.

C:\Program Files (x86)\checkmk\agent\config\

El directorio de configuración habitual hasta la versión Checkmk. 1.6.0

C:\Program Files (x86)\check_mk\plugins\

El directorio habitual de Plugins hasta la versión Checkmk. 1.6.0

6.2. En el servidor Checkmk

Ruta del archivo Función

~/share/check_mk/agents/plugins/mk_mysql

El Plugin que recupera los datos del host MySQL.

En esta página