[comment]: # ({a313f054-b4128477})
# 4 Surveiller MySQL avec l’agent Zabbix 2

[comment]: # ({/a313f054-b4128477})

[comment]: # ({ad3dab41-2185307b})
#### 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](#other-approaches-to-monitor-mysql) ; n’hésitez donc pas à choisir celle qui correspond le mieux à vos besoins.

[comment]: # ({/ad3dab41-2185307b})

[comment]: # ({0cf7feb5-831aae47})
**À 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](/manual/config) du manuel Zabbix.

[comment]: # ({/0cf7feb5-831aae47})

[comment]: # ({519621df-2fd1df9d})
**Prérequis**

Avant de poursuivre ce guide, vous devez [télécharger et installer](https://www.zabbix.com/download) 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.

[comment]: # ({/519621df-2fd1df9d})

[comment]: # ({8ae78277-ae0ef261})
#### 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](https://dev.mysql.com/doc/refman/8.0/en/grant.html) 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.

[comment]: # ({/8ae78277-ae0ef261})

[comment]: # ({7d9d17aa-e6607c21})
#### Configurer l'interface Zabbix

1\. Connectez-vous à l'interface Zabbix.

2\. [Créez un hôte](/manual/config/hosts/host) dans l'interface web Zabbix :

-   Dans le champ *Host name*, saisissez un nom d'hôte (par exemple, "MySQL server").
-   Dans le champ *Templates*, tapez ou sélectionnez le modèle "MySQL by Zabbix agent 2" qui sera [lié](/manual/config/templates/linking) à l'hôte.
-   Dans le champ *Host groups*, tapez 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.

![](../../../assets/en/manual/guides/mysql_host.png){width="600"}

-   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](/manual/appendix/config/zabbix_agent2_plugins/mysql_plugin#parameters) 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](#create-mysql-user) "zbx_monitor".
    -   {$MYSQL.USER} - définissez le nom de l'utilisateur MySQL [créé précédemment](#create-mysql-user) "zbx_monitor".

![](../../../assets/en/manual/guides/mysql_macros.png){width="600"}

3\. Cliquez sur *Add* pour ajouter l'hôte. Cet hôte représentera votre serveur MySQL.

[comment]: # ({/7d9d17aa-e6607c21})

[comment]: # ({bdcc4c70-339fa505})
#### 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*](/manual/web_interface/frontend_sections/monitoring/hosts) et cliquez sur *Tableaux de bord* à côté de l’hôte.

![](../../../assets/en/manual/guides/mysql_hosts.png){width="600"}

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.

![](../../../assets/en/manual/guides/mysql_dashboard.png){width="600"}

Vous pouvez également, depuis la section de menu [*Surveillance → Hôtes*](/manual/web_interface/frontend_sections/monitoring/hosts), cliquer sur [*Dernières données*](/manual/web_interface/frontend_sections/monitoring/latest_data) 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.

![](../../../assets/en/manual/guides/mysql_latestdata.png){width="600"}

[comment]: # ({/bdcc4c70-339fa505})

[comment]: # ({4cead10e-91c440fc})
#### Configurer les alertes de problème

Zabbix peut vous avertir d'un problème avec 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*](/manual/web_interface/user_profile), ouvrez l'onglet *Média* et [ajoutez votre adresse e-mail](/manual/quickstart/login#adding-user).

![](../../../assets/en/manual/quickstart/new_media.png){width="600"}

2\. Suivez le guide pour [Recevoir une notification de problème](/manual/quickstart/notification).

La prochaine fois que Zabbix détectera un problème, vous devriez recevoir une alerte par e-mail.

[comment]: # ({/4cead10e-91c440fc})

[comment]: # ({77c86049-3e5fc0d5})
#### 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](#configure-zabbix-frontend) 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*](/manual/web_interface/frontend_sections/monitoring/problems).

![](../../../assets/en/manual/guides/mysql_problem.png){width="600"}

Si les alertes sont [configurées](#set-up-problem-alerts), 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.

[comment]: # ({/77c86049-3e5fc0d5})

[comment]: # ({599a98b0-69f193e9})
#### 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**.

[comment]: # ({/599a98b0-69f193e9})

[comment]: # ({c3f2cc9e-c7da6279})
##### Surveiller MySQL avec l'agent Zabbix

Pour surveiller un serveur MySQL avec l'agent Zabbix, vous devez [télécharger et installer](https://www.zabbix.com/download) 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*](#create-mysql-user).

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](/manual/config/items/userparameters) 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](#create-mysql-user).

[comment]: # ({/c3f2cc9e-c7da6279})

[comment]: # ({ec14664c-81cd968b})
**Configurer Zabbix agent**

1\. Accédez au répertoire des configurations supplémentaires de Zabbix agent.

    cd /usr/local/etc/zabbix/zabbix_agentd.d

::: noteimportant
Le répertoire des configurations supplémentaires de Zabbix agent doit se trouver dans le même répertoire que le fichier de configuration de votre Zabbix agent (*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`](/manual/appendix/config/zabbix_agentd#include) dans le fichier de configuration de Zabbix agent.
:::

Au lieu de définir dans le fichier de configuration de Zabbix agent 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 Zabbix agent.

    vi template_db_mysql.conf

3\. Copiez le contenu du fichier [*template_db_mysql.conf*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent/template_db_mysql.conf?at=refs%2Fheads%2Frelease%2F7.4) (situé dans le dépôt Zabbix) dans le fichier *template_db_mysql.conf* que vous avez créé, puis enregistrez-le.

4\. Redémarrez Zabbix agent pour mettre à jour sa configuration.

    systemctl restart zabbix-agent

Une fois que vous avez configuré les paramètres utilisateur de Zabbix agent, vous pouvez passer à la configuration des identifiants qui permettront à Zabbix agent d'accéder au serveur MySQL.

[comment]: # ({/ec14664c-81cd968b})

[comment]: # ({49d8d7e7-98d0d0b4})
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>'

[comment]: # ({/49d8d7e7-98d0d0b4})

[comment]: # ({e1d7b01f-3d796e6b})
**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*](#configure-zabbix-frontend) avec les ajustements suivants :

-   Dans le champ *Templates*, saisissez ou sélectionnez le modèle « MySQL by Zabbix agent » qui sera [lié](/manual/config/templates/linking) à 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](#view-collected-metrics) et [configurer des alertes de problème](#set-up-problem-alerts).

Pour tester votre configuration, suivez les instructions de la section [*Tester votre configuration*](#test-your-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 »).

![](../../../assets/en/manual/guides/mysql_port.png){width="600"}

[comment]: # ({/e1d7b01f-3d796e6b})

[comment]: # ({b2aad39e-876f1a94})
##### Surveiller MySQL avec ODBC

Pour surveiller un serveur MySQL avec ODBC, vous devez [télécharger et installer](https://www.zabbix.com/download) 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*](#create-mysql-user).

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](https://www.unixodbc.org/) - ainsi que d’un pilote unixODBC, et la modification du fichier de configuration du pilote ODBC.

[comment]: # ({/b2aad39e-876f1a94})

[comment]: # ({f1ebeea4-445fc52a})
**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](#configure-zabbix-frontend).

    [test]
    Driver=MariaDB Unicode
    Server=127.0.0.1
    User=zbx_monitor
    Password=<password>
    Port=3306
    Database=zabbix

[comment]: # ({/f1ebeea4-445fc52a})

[comment]: # ({f773e20d-062f32d6})
**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*](#configure-zabbix-frontend) avec les ajustements suivants :

-   Dans le champ *Templates*, saisissez ou sélectionnez le modèle « MySQL by ODBC » qui sera [lié](/manual/config/templates/linking) à 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](#view-collected-metrics), [configurer les alertes de problème](#set-up-problem-alerts) et [tester votre configuration](#test-your-configuration).

[comment]: # ({/f773e20d-062f32d6})

[comment]: # ({0ad07481-123e0265})
#### Voir aussi

-   [Créer un élément](/manual/config/items/item) - comment commencer à surveiller des métriques supplémentaires.
-   [Escalades de problèmes](/manual/config/notifications/action/escalations) - 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 en 45 minutes, envoyer un message au responsable du centre de données).
-   [Surveillance ODBC](/manual/config/items/itemtypes/odbc_checks) - 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*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent?at=refs%2Fheads%2Frelease%2F7.4) - informations supplémentaires sur le modèle *MySQL by Zabbix agent*.
-   Modèle [*MySQL by Zabbix agent 2*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent2?at=refs%2Fheads%2Frelease%2F7.4) - informations supplémentaires sur le modèle *MySQL by Zabbix agent 2*.
-   Modèle [*MySQL by ODBC*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_odbc?at=refs%2Fheads%2Frelease%2F7.4) - informations supplémentaires sur le modèle *MySQL by ODBC*.

[comment]: # ({/0ad07481-123e0265})
