Surveiller MySQL avec Zabbix agent 2
Introduction
Cette page vous guide à travers les étapes nécessaires pour commencer la supervision de base d'un serveur MySQL.
Pour superviser un serveur MySQL, plusieurs approches sont possibles: Zabbix agent, Zabbix agent 2 ou la norme Open Database Connectivity (ODBC). L'objectif principal de ce guide est la supervision d'un serveur MySQL avec Zabbix agent 2, qui est l'approche recommandée en raison de sa configuration fluide dans diverses configurations. Cependant, cette page fournit également des instructions pour les autres approches, alors n'hésitez pas à choisir celle qui correspond le mieux à vos besoins.
À qui ce guide s'adresse
Ce guide est conçu pour les nouveaux utilisateurs de Zabbix et contient l'ensemble minimal d'étapes nécessaires pour activer la supervision de base d'un serveur MySQL. Si vous recherchez des options de personnalisation avancées ou avez besoin d'une configuration plus poussée, consultez la section Configuration du manuel Zabbix.
Prérequis
Avant de poursuivre ce guide, vous devez télécharger et installer le serveur Zabbix, l'interface Zabbix 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 a besoin d'y accéder ainsi qu'à ses processus. Votre installation MySQL dispose déjà d'un utilisateur avec le niveau d'accès requis (l'utilisateur "zabbix" qui a été créé lors de l'installation de Zabbix), cependant, cet utilisateur dispose de plus de privilèges que nécessaire pour une simple surveillance (privilèges permettant de DROP des bases de données, DELETE des entrées de tables, etc.). Par conséquent, il faut créer un utilisateur MySQL destiné à la surveillance uniquement 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 Zabbix
1. Connectez-vous à l'interface 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, basculez vers 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 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 créé précédemment "zbx_monitor".
- {$MYSQL.USER} - définissez le nom de l'utilisateur MySQL créé précédemment "zbx_monitor".

3. Cliquez sur Add pour ajouter l'hôte. Cet hôte représentera votre serveur MySQL.
Afficher les métriques collectées
Félicitations ! À ce stade, Zabbix surveille déjà votre serveur MySQL.
Pour afficher les métriques collectées, accédez à la section de menu Monitoring → Hosts et cliquez sur Dashboards à 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 Monitoring → Hosts, cliquer sur Latest data pour afficher dans une liste toutes les dernières métriques collectées. Notez que l'élément MySQL: Calculated value of innodb_log_file_size est censé ne contenir aucune donnée, 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 diverses méthodes. Ce guide fournit les étapes de configuration de base pour l'envoi d'alertes par e-mail.
1. Accédez à Paramètres utilisateur → Profil, ouvrez l'onglet Média 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 du serveur MySQL dans Zabbix.
2. Accédez à 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} configurée précédemment, puis 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 des 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 continuer 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 la norme 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 ses fonctionnalités intégrées, 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 à celles de la surveillance d'un serveur MySQL avec Zabbix agent 2, il existe quelques différences importantes - vous devez configurer Zabbix agent ou ODBC pour pouvoir surveiller un serveur MySQL. Les instructions suivantes vous guideront à travers ces différences.
Surveiller MySQL avec Zabbix agent
Pour surveiller un serveur MySQL avec Zabbix agent, vous devez télécharger et installer Zabbix server, l'interface Zabbix et Zabbix agent 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 Zabbix agent 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 vérifications personnalisées de l'agent, ainsi que la fourniture à Zabbix agent 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 connaître les emplacements par défaut, consultez le paramètre Include dans le fichier de configuration de l'agent Zabbix.
Au lieu de définir dans le fichier de configuration de l'agent Zabbix tous les paramètres utilisateur nécessaires à la surveillance du serveur MySQL, ces paramètres seront définis dans un fichier séparé 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 que vous avez configuré les paramètres utilisateur de l'agent Zabbix, 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 Zabbix et tester votre configuration
Pour configurer l'interface Zabbix, suivez les instructions de la section Configurer l'interface Zabbix avec les ajustements suivants :
- Dans le champ Modèles, 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 Zabbix configurée, vous pouvez consulter les métriques collectées et configurer les alertes de problème.
Pour tester votre configuration, suivez les instructions de la section Tester votre configuration avec les ajustements suivants :
- Dans la section Macros héritées et macros de l'hôte de la configuration de l'hôte du serveur MySQL, cliquez sur Modifier à côté de la valeur de la 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 serveur et l'interface Zabbix.
Une fois les composants Zabbix requis installés avec succè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 les plus couramment utilisées de l'API ODBC - 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. Bien que vous disposiez d'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 de fichier odbcinst.ini suivant, 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 la source de données (DSN) "test", qui sera requis lors de la configuration de l'interface Zabbix.
[test]
Driver=MariaDB Unicode
Server=127.0.0.1
User=zbx_monitor
Password=<password>
Port=3306
Database=zabbix
Configurer l'interface Zabbix et tester votre configuration
Pour configurer l'interface Zabbix, suivez les instructions de la section Configurer l'interface Zabbix avec les ajustements suivants :
- Dans le champ Modèles, 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 Macros héritées et macros de l'hôte 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 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ème - 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).
- Surveillance 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.