Cómo monitorizar MySQL o MariaDB con Prometheus y Grafana

Para asegurarte de que el servidor MySQL/MariaDB funciona correctamente, necesitas implementar la monitorización en tu infraestructura. Esto te permite optimizar el rendimiento, identificar problemas/cuellos de botella y asegurarte de que tu base de datos está sana. Con Prometheus y Grafana, puedes conseguirlo y crear bonitos cuadros de mando de monitorización para servidores MySQL.

En esta guía, aprenderás a monitorizar servidores MySQL/MariaDB con Prometheus y Grafana. Configurarás ‘prometheus-mysqld-exporter’ para generar métricas y añadir la monitorización de extremos al servidor Prometheus. Después, crearás un nuevo panel de control Grafana para la monitorización de MySQL.

Requisitos previos

Para empezar, asegúrate de que tienes lo siguiente

  • Un servidor MySQL/MariaDB instalado
  • Un usuario no root con privilegios de administrador
  • Prometheus y Grafana instalados en tu servidor

Configurar el usuario MySQL/MariaDB

Para supervisar el servidor MySQL/MariaDB, debes crear un nuevo usuario MySQL dedicado. Este usuario tendrá los menores privilegios, como PROCESS, REPLICATION CLIENT y SELECT en todas tus bases de datos.

En esta sección, crearás un nuevo usuario MySQL para supervisar tu servidor MySQL.

Accede a tu servidor MySQL/MariaDB con lo siguiente. Introduce tu contraseña«root» cuando se te solicite.

sudo mysql -u root -p

Ahora ejecuta las siguientes consultas para crear un nuevo usuario MySQL‘prometheus‘ con la autenticación‘unix_socket’. Este usuario tendrá privilegios para ver procesos, clientes de replicación y seleccionar en todas las bases de datos del servidor MySQL.

CREATE USER IF NOT EXISTS 'prometheus'@'localhost' IDENTIFIED WITH unix_socket;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'prometheus'@'localhost';
FLUSH PRIVILEGES;

crear usuario mysql

A continuación, ejecuta la siguiente consulta para comprobar el usuario MySQL‘prometheus@localhost‘. Verás al usuario‘prometheus‘ con privilegios de SELECT, PROCESS y BINLOG MONITOR como cliente de replicación.

SHOW GRANTS FOR 'prometheus'@'localhost';

Escribe‘quit’ para salir del servidor MySQL/MariaDB.

comprobar usuario mysql

Instalación de prometheus-mysqld-exporter

El ‘prometheus-mysqld-exporter‘ es un exportador de métricas MySQL. Es compatible con MySQL >= 5.6 y MariaDB >= 10.3. Para utilizar «prometheus-mysqld-exporter», tienes que instalarlo en tu servidor MySQL.

En este ejemplo, el servidor MySQL se ejecuta en el servidor Debian 12. Y por defecto, el «prometheus-mysqld-exporter» está disponible en el repositorio oficial de Debian, así que lo instalaremos a través de APT. Si utilizas otra distro, puedes descargarlo e instalarlo manualmente para GitHub.

En primer lugar, ejecuta el siguiente comando para actualizar el índice de paquetes de Debian.

sudo apt update

actualizar repo

Una vez actualizado el repositorio, instala el paquete‘prometheus-mysqld-exporter‘ con el siguiente comando. Introduce«Y» para confirmar la instalación.

sudo apt install prometheus-mysqld-exporter

instala prometheus-mysqld-exporter

Una vez finalizada la instalación, ejecuta el siguiente comando«systemctl» para recargar el gestor systemd.

sudo systemctl daemon-reload

A continuación, puedes iniciar y activar el servicio«prometheus-mysqld-exporter» con el siguiente comando. Con esto, el servicio «prometheus-mysqld-exporter» debería estar ejecutándose y habilitado en tu sistema.

sudo systemctl enable --now prometheus-mysqld-exporter

Añadir usuario MySQL al prometheus-mysqld-exporter

Ahora que has creado un usuario MySQL e instalado ‘prometheus-mysqld-exporter’. El siguiente paso es añadir tu MySQL a la configuración de ‘prometheus-mysqld-exporter’. Hacer esto te permite generar métricas de tu servidor MySQL y exponer el endpoint en el puerto por defecto ‘9104’.

Abre el archivo‘/etc/default/prometheus-mysqld-exporter‘ con el siguiente editor‘nano‘.

sudo nano /etc/default/prometheus-mysqld-exporter

Descomenta la variable de entorno‘DATA_SOURCE_NAME‘ para integrar MySQL con el‘prometheus-mysqld-exporter‘. En este ejemplo, se utilizará el usuario MySQL‘prometheus‘ para monitorizar el servidor MySQL a través del archivo‘mysqld.sock‘.

DATA_SOURCE_NAME="prometheus@unix(/run/mysqld/mysqld.sock)/"

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando«systemctl» para reiniciar el servicio«prometheus-mysqld-exporter» y aplicar los cambios. A continuación, comprueba su estado para asegurarte de que se está ejecutando.

sudo systemctl restart prometheus-mysqld-exporter
sudo systemctl status prometheus-mysqld-exporter

Puedes ver a continuación que «prometheus-mysqld-exporter» se está ejecutando.

setup prometheus-mysql-exporter

Por último, abre tu navegador web y visita http://192.168.10.41:9104/. Éste es el punto final por defecto para el «prometheus-mysqld-exporter«. Si la configuración se realiza correctamente, se generará una métrica que se mostrará como la siguiente:

métrica generada

Añadir el punto final «prometheus-mysqld-exporter» al Prometheus

Ahora que la configuración de‘prometheus-mysqld-exporter‘ está completa y se ha generado la métrica. Ahora tienes que añadir el«prometheus-mysqld-exporter» como punto final a tu servidor Prometheus. En esta guía, el punto final«prometheus-mysqld-exporter» está disponible en«192.168.10.41:9104«.

Si no tienes un servidor Prometheus, instálalo a través de Cómo instalar Prometheus y Node Exporter en Debian 12

Ve a tu servidor Prometheus y abre el archivo de configuración‘/etc/prometheus/prometheus.yml‘ con el editor ‘nano’.

sudo nano /etc/prometheus/prometheus.yml

Dentro de‘scrape_configs‘, añade el punto final de tu‘prometheus-mysqld-exporter‘ de la siguiente manera. En este ejemplo, el«prometheus-mysqld-exporter» se ejecuta en el«servidor1» con la dirección IP y el puerto«192.168.10.41:9104«.

scrape_configs:
- job_name: server1
static_configs:
- targets: ['192.168.10.41:9104']
labels:
alias: db1

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando‘systemctl‘ para reiniciar el servicio‘prometheus‘ y aplicar tus cambios.

sudo systemctl restart prometheus

Por último, abre el panel de control de tu servidor Prometheus y selecciona el menú«Estado > Objetivos«. Asegúrate de que puedes ver el‘servidor1‘, que es el endpoint de tu monitorización MySQL.

prometheus con exportador mysqld endpint

Configurar el panel de control de Grafana para el servidor MySQL

Después de añadir el endpoint ‘prometheus-mysqld-exporter’ al servidor Prometheus, ya estás listo para construir el panel Grafana para la monitorización del servidor MySQL. En esta sección, importarás el panel de control para la monitorización de MySQL a través de GrafanaLabs.

Si no tienes Grafana instalado, instálalo con Cómo instalar Grafana y Prometheus en Ubuntu 24.04

En tu panel de control de Grafana, haz clic en el menú«Panel de control > Nuevo > Importar«. En este ejemplo, utilizaremos plantillas Grafana de GrafanaLabs para monitorizar el servidor MySQL.

Copia el número de identificación de Grafana y pégalo, después haz clic en«Cargar» para confirmar.

salpicadero de importación

Ahora selecciona«Prometheus» como fuente de datos y haz clic en«Importar«.

salpicadero de importación

Si se realiza correctamente, verás el panel de control de tu monitorización de MySQL/MariaDB con Prometheus y Grafana.

panel de control de mysql

Conclusión

¡Enhorabuena! Has completado la monitorización del servidor MySQL/MariaDB con Prometheus y Grafana. Has monitorizado el servidor MySQL con el ‘prometheus-mysqld-exporter’ y generado métricas para MySQL. También has añadido el «prometheus-mysqld-exporter» como punto final a tu servidor Prometheus. Por último, has creado un panel de control Grafana para supervisar tu servidor MySQL.

También te podría gustar...