4 Surveiller MySQL avec l’agent Zabbix 2
Introduction
Cette page vous guide à travers les étapes nécessaires pour démarrer la surveillance de base d’un serveur MySQL.
Pour surveiller un serveur MySQL, plusieurs approches sont possibles : Zabbix agent, Zabbix agent 2 ou la norme Open Database Connectivity (ODBC). Ce guide se concentre principalement sur la surveillance d’un serveur MySQL avec Zabbix agent 2, qui constitue l’approche recommandée grâce à sa configuration fluide dans divers environnements. Cependant, cette page propose également des instructions pour les autres approches ; n’hésitez donc pas à choisir celle qui correspond le mieux à vos besoins.
À qui s’adresse ce guide
Ce guide est conçu pour les nouveaux utilisateurs de Zabbix et contient l’ensemble minimal d’étapes nécessaires pour activer la surveillance de base d’un serveur MySQL. Si vous recherchez des options de personnalisation poussées ou avez besoin d’une configuration plus avancée, consultez la section Configuration du manuel Zabbix.
Prérequis
Avant de poursuivre ce guide, vous devez télécharger et installer Zabbix server, Zabbix frontend et Zabbix agent 2 conformément aux instructions correspondant à votre système d’exploitation.
Selon votre environnement, certaines étapes de ce guide peuvent légèrement différer. Ce guide est basé sur un environnement exécutant Ubuntu.
Créer un utilisateur MySQL
Pour surveiller un serveur MySQL, Zabbix doit y avoir accès ainsi qu’à ses processus. Votre installation MySQL dispose déjà d’un utilisateur avec le niveau d’accès requis (l’utilisateur « zabbix » créé lors de l’installation de Zabbix), cependant, cet utilisateur possède plus de privilèges que nécessaire pour une simple surveillance (privilèges pour DROP des bases de données, DELETE des entrées de tables, etc.). Il est donc nécessaire de créer un utilisateur MySQL destiné uniquement à la surveillance du serveur MySQL.
1. Connectez-vous au client MySQL, créez un utilisateur « zbx_monitor » (remplacez <password> pour l’utilisateur « zbx_monitor » par un mot de passe de votre choix), et GRANT les privilèges nécessaires à cet utilisateur :
mysql -u root -p
# Enter password:
mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
mysql> quit;
Une fois l’utilisateur créé, vous pouvez passer à l’étape suivante.
Configurer l’interface web Zabbix
1. Connectez-vous à l’interface web Zabbix.
2. Créez un hôte dans l’interface web Zabbix :
- Dans le champ Host name, saisissez un nom d’hôte (par exemple, « MySQL server »).
- Dans le champ Templates, saisissez ou sélectionnez le modèle « MySQL by Zabbix agent 2 » qui sera lié à l’hôte.
- Dans le champ Host groups, saisissez ou sélectionnez un groupe d’hôtes (par exemple, « Databases »).
- Dans le champ Interfaces, ajoutez une interface de type « Agent » et indiquez l’adresse IP de votre serveur MySQL. Ce guide utilise « 127.0.0.1 » (localhost) pour surveiller un serveur MySQL installé sur la même machine que le serveur Zabbix et Zabbix agent 2.

- Dans l’onglet Macros, passez à Inherited and host macros, recherchez les macros suivantes et cliquez sur Change à côté de la valeur de la macro pour la mettre à jour :
- {$MYSQL.DSN} - définissez la source de données du serveur MySQL (la chaîne de connexion d’une session nommée du fichier de configuration du plugin MySQL de Zabbix agent 2). Ce guide utilise la source de données par défaut « tcp://localhost:3306 » pour surveiller un serveur MySQL installé sur la même machine que le serveur Zabbix et Zabbix agent 2.
- {$MYSQL.PASSWORD} - définissez le mot de passe de l’utilisateur MySQL « zbx_monitor » précédemment créé.
- {$MYSQL.USER} - définissez le nom de l’utilisateur MySQL « zbx_monitor » précédemment créé.

3. Cliquez sur Add pour ajouter l’hôte. Cet hôte représentera votre serveur MySQL.
Voir les métriques collectées
Félicitations ! À ce stade, Zabbix surveille déjà votre serveur MySQL.
Pour voir les métriques collectées, accédez à la section de menu Surveillance → Hôtes et cliquez sur Tableaux de bord à côté de l’hôte.

Cette action vous amènera au tableau de bord de l’hôte (configuré au niveau du modèle) avec les métriques les plus importantes collectées depuis le serveur MySQL.

Vous pouvez également, depuis la section de menu Surveillance → Hôtes, cliquer sur Dernières données pour afficher sous forme de liste toutes les dernières métriques collectées. Notez que l’élément MySQL: Calculated value of innodb_log_file_size ne doit pas contenir de données, car la valeur sera calculée à partir des données de la dernière heure.

Configurer les alertes de problème
Zabbix peut vous avertir d’un problème dans votre infrastructure à l’aide de différentes méthodes. Ce guide fournit les étapes de configuration de base pour l’envoi d’alertes par e-mail.
1. Accédez à User settings → Profile, ouvrez l’onglet Media et ajoutez votre adresse e-mail.

2. Suivez le guide pour Recevoir une notification de problème.
La prochaine fois que Zabbix détectera un problème, vous devriez recevoir une alerte par e-mail.
Testez votre configuration
Pour tester votre configuration, nous pouvons simuler un problème réel en mettant à jour la configuration de l'hôte dans l'interface Zabbix.
1. Ouvrez la configuration de votre hôte serveur MySQL dans Zabbix.
2. Passez à l'onglet Macros et sélectionnez Inherited and host macros.
3. Cliquez sur Change à côté, par exemple, de la valeur de macro {$MYSQL.USER} précédemment configurée et définissez un autre nom d'utilisateur MySQL.
4. Cliquez sur Update pour mettre à jour la configuration de l'hôte.
5. Dans quelques instants, Zabbix détectera le problème « MySQL: Service is down », car il ne pourra pas se connecter au serveur MySQL. Le problème apparaîtra dans Monitoring → Problems.

Si les alertes sont configurées, vous recevrez également la notification du problème.
6. Remettez la valeur de la macro à sa valeur précédente pour résoudre le problème et poursuivre la surveillance du serveur MySQL.
Autres approches pour surveiller MySQL
Au lieu de surveiller un serveur MySQL avec Zabbix agent 2, vous pouvez également utiliser Zabbix agent ou le standard Open Database Connectivity (ODBC). Bien que l'utilisation de Zabbix agent 2 soit recommandée, certaines configurations peuvent ne pas prendre en charge Zabbix agent 2 ou nécessiter une approche personnalisée.
La principale différence entre Zabbix agent et ODBC réside dans la méthode de collecte des données : Zabbix agent est installé directement sur le serveur MySQL et collecte les données à l'aide de sa fonctionnalité intégrée, tandis qu'ODBC s'appuie sur un pilote ODBC pour établir une connexion au serveur MySQL et récupérer les données à l'aide de requêtes SQL.
Bien que de nombreuses étapes de configuration soient similaires à la surveillance d'un serveur MySQL avec Zabbix agent 2, il existe quelques différences importantes : vous devez configurer Zabbix agent ou ODBC afin de pouvoir surveiller un serveur MySQL. Les instructions suivantes vous guident à travers ces différences.
Surveiller MySQL avec l'agent Zabbix
Pour surveiller un serveur MySQL avec l'agent Zabbix, vous devez télécharger et installer le serveur Zabbix, le frontend Zabbix et l'agent Zabbix conformément aux instructions correspondant à votre système d'exploitation.
Une fois les composants Zabbix requis correctement installés, vous devez créer un utilisateur MySQL comme décrit dans la section Créer un utilisateur MySQL.
Après avoir créé l'utilisateur MySQL, vous devez configurer l'agent Zabbix afin qu'il puisse établir une connexion avec le serveur MySQL et le surveiller. Cela inclut la configuration de plusieurs paramètres utilisateur pour exécuter des contrôles d'agent personnalisés, ainsi que la fourniture à l'agent Zabbix des identifiants nécessaires pour se connecter au serveur MySQL en tant qu'utilisateur "zbx_monitor" créé précédemment.
Configurer l'agent Zabbix
1. Accédez au répertoire des configurations supplémentaires de l'agent Zabbix.
cd /usr/local/etc/zabbix/zabbix_agentd.d
Le répertoire des configurations supplémentaires de l'agent Zabbix doit se trouver dans le même répertoire que votre fichier de configuration de l'agent Zabbix (zabbix_agentd.conf).
Selon votre système d'exploitation et votre installation de Zabbix, ce répertoire peut se trouver à un emplacement différent de celui indiqué dans ce guide.
Pour les emplacements par défaut, consultez le paramètre Include dans le fichier de configuration de l'agent Zabbix.
Au lieu de définir tous les paramètres utilisateur nécessaires à la surveillance du serveur MySQL dans le fichier de configuration de l'agent Zabbix, ces paramètres seront définis dans un fichier distinct situé dans le répertoire des configurations supplémentaires.
2. Créez un fichier template_db_mysql.conf dans le répertoire des configurations supplémentaires de l'agent Zabbix.
vi template_db_mysql.conf
3. Copiez le contenu du fichier template_db_mysql.conf (situé dans le dépôt Zabbix) dans le fichier template_db_mysql.conf que vous avez créé, puis enregistrez-le.
4. Redémarrez l'agent Zabbix pour mettre à jour sa configuration.
systemctl restart zabbix-agent
Une fois les paramètres utilisateur de l'agent Zabbix configurés, vous pouvez passer à la configuration des identifiants qui permettront à l'agent Zabbix d'accéder au serveur MySQL.
5. Accédez au répertoire personnel de l'agent Zabbix (s'il n'existe pas sur votre système, vous devez le créer ; par défaut : /var/lib/zabbix).
cd /var/lib/zabbix
6. Créez un fichier .my.cnf dans le répertoire personnel de l'agent Zabbix.
vi .my.cnf
7. Copiez le contenu suivant dans le fichier .my.cnf (remplacez <password> par le mot de passe de l'utilisateur "zbx_monitor").
[client]
user='zbx_monitor'
password='<password>'
Configurer l’interface web Zabbix et tester votre configuration
Pour configurer l’interface web Zabbix, suivez les instructions de la section Configurer l’interface web Zabbix avec les ajustements suivants :
- Dans le champ Templates, saisissez ou sélectionnez le modèle « MySQL by Zabbix agent » qui sera lié à l’hôte.
- La configuration des Macros n’est pas requise.
Une fois l’interface web Zabbix configurée, vous pouvez afficher les métriques collectées et configurer des alertes de problème.
Pour tester votre configuration, suivez les instructions de la section Tester votre configuration avec les ajustements suivants :
- Dans la section Inherited and host macros de la configuration de l’hôte du serveur MySQL, cliquez sur Change à côté de la valeur de macro {$MYSQL.PORT} et définissez un port différent (par exemple, « 6033 »).

Surveiller MySQL avec ODBC
Pour surveiller un serveur MySQL avec ODBC, vous devez télécharger et installer Zabbix server et Zabbix frontend.
Une fois les composants Zabbix requis correctement installés, vous devez créer un utilisateur MySQL comme décrit dans la section Créer un utilisateur MySQL.
Après avoir créé l’utilisateur MySQL, vous devez configurer ODBC. Cela inclut l’installation de l’une des implémentations open source de l’API ODBC les plus couramment utilisées - unixODBC - ainsi que d’un pilote unixODBC, et la modification du fichier de configuration du pilote ODBC.
Configurer ODBC
1. Installez unixODBC. La méthode recommandée pour installer unixODBC consiste à utiliser les dépôts de paquets par défaut du système d’exploitation Linux.
apt install unixodbc
2. Installez le pilote de base de données MariaDB unixODBC. Même si vous utilisez une base de données MySQL, le pilote MariaDB unixODBC est utilisé pour des raisons de compatibilité.
apt install odbc-mariadb
3. Vérifiez l’emplacement des fichiers de configuration ODBC odbcinst.ini et odbc.ini.
odbcinst -j
Le résultat de l’exécution de cette commande devrait être similaire à ce qui suit.
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
...
4. Pour configurer le pilote ODBC afin de surveiller une base de données MySQL, vous avez besoin du nom du pilote, qui se trouve dans le fichier odbcinst.ini. Dans l’exemple suivant du fichier odbcinst.ini, le nom du pilote est "MariaDB Unicode".
[MariaDB Unicode]
Driver=libmaodbc.so
Description=MariaDB Connector/ODBC(Unicode)
Threading=0
UsageCount=1
5. Copiez le contenu suivant dans le fichier odbc.ini (remplacez <password> par le mot de passe de l’utilisateur "zbx_monitor"). Ce guide utilise "127.0.0.1" (localhost) comme adresse du serveur MySQL pour surveiller un serveur MySQL installé sur la même machine que le pilote ODBC. Notez le nom de source de données (DSN) "test", qui sera requis lors de la configuration du frontend Zabbix.
[test]
Driver=MariaDB Unicode
Server=127.0.0.1
User=zbx_monitor
Password=<password>
Port=3306
Database=zabbix
Configurer l’interface web Zabbix et tester votre configuration
Pour configurer l’interface web Zabbix, suivez les instructions de la section Configurer l’interface web Zabbix avec les ajustements suivants :
- Dans le champ Templates, saisissez ou sélectionnez le modèle « MySQL by ODBC » qui sera lié à l’hôte.
- La configuration des Interfaces n’est pas requise.
- La valeur de la macro {$MYSQL.DSN}, dans la section Inherited and host macros de la configuration de l’hôte du serveur MySQL, doit être définie sur le nom DSN du fichier odbc.ini.
Une fois l’interface web Zabbix configurée, vous pouvez afficher les métriques collectées, configurer les alertes de problème et tester votre configuration.
Voir aussi
- Création d’un élément - comment commencer à surveiller des métriques supplémentaires.
- Escalades de problèmes - comment créer des scénarios d’alerte en plusieurs étapes (par exemple, envoyer d’abord un message à l’administrateur système, puis, si un problème n’est pas résolu dans les 45 minutes, envoyer un message au responsable du centre de données).
- Supervision ODBC - comment configurer ODBC sur d’autres distributions Linux et comment commencer à surveiller des métriques supplémentaires liées aux bases de données avec ODBC.
- Modèle MySQL by Zabbix agent - informations supplémentaires sur le modèle MySQL by Zabbix agent.
- Modèle MySQL by Zabbix agent 2 - informations supplémentaires sur le modèle MySQL by Zabbix agent 2.
- Modèle MySQL by ODBC - informations supplémentaires sur le modèle MySQL by ODBC.