Tous les produits
Search
Centre de documentation

Elasticsearch:Collecter les journaux MySQL avec une instance Filebeat auto-gérée

Dernière mise à jour :Aug 19, 2026

Utilisez Filebeat pour collecter les journaux MySQL, tels que le journal des requêtes lentes et le journal des erreurs, puis envoyez-les vers une instance Alibaba Cloud Elasticsearch afin de les interroger, les analyser et les visualiser dans Kibana.

Procédure

  1. Prérequis

    Créez une instance Alibaba Cloud Elasticsearch pour recevoir les journaux et une console Kibana pour l'analyse, ainsi qu'une instance ECS pour héberger MySQL et Filebeat.

  2. Étape 1 : Installer et configurer MySQL

    Installez MySQL et activez le journal des erreurs ainsi que le journal des requêtes lentes dans le fichier de configuration MySQL. Filebeat ne peut collecter ces journaux qu'une fois activés.

  3. Étape 2 : Installer et configurer Filebeat

    Installez Filebeat pour collecter les journaux MySQL et les envoyer vers une instance Alibaba Cloud Elasticsearch. Activez le module MySQL et spécifiez les adresses d'accès à Kibana et à Alibaba Cloud Elasticsearch dans le fichier de configuration de Filebeat.

  4. Étape 3 : Visualiser les journaux MySQL dans Kibana

    Exécutez une requête de test et consultez le journal des erreurs ainsi que le journal des requêtes lentes sur un tableau de bord Kibana.

Prérequis

Étape 1 : Installer et configurer MySQL

  1. Connectez-vous à l'instance ECS.

    Pour plus d'informations, consultez la rubrique Se connecter à une instance Linux à l'aide d'un mot de passe.

    Remarque

    Les commandes de ce guide sont exécutées en tant qu'utilisateur non root.

  2. Téléchargez et installez le dépôt MySQL.

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
  3. Installez MySQL.

    sudo yum install mysql-server
  4. Configurez le fichier du journal des erreurs et le fichier du journal des requêtes lentes dans le fichier my.cnf.

    Remarque

    Par défaut, les fichiers journaux MySQL sont désactivés. Vous devez les activer manuellement. Vous pouvez également exécuter une commande MySQL pour activer temporairement le journal des requêtes lentes.

    1. Ouvrez le fichier my.cnf.

      sudo vim /etc/my.cnf
    2. Configurez les fichiers journaux.

      [mysqld]
      log_queries_not_using_indexes = 1
      slow_query_log=on
      slow_query_log_file=/var/log/mysql/slow-mysql-query.log
      long_query_time=0
      
      [mysqld_safe]
      log-error=/var/log/mysql/mysqld.log

      Paramètre

      Description

      log_queries_not_using_indexes

      Indique s'il faut enregistrer les requêtes n'utilisant pas d'index dans le journal des requêtes lentes. La valeur 1 active l'enregistrement et la valeur 0 le désactive.

      slow_query_log

      Active ou désactive le journal des requêtes lentes. La valeur on active le journal et la valeur off le désactive.

      slow_query_log_file

      Chemin de stockage du journal des requêtes lentes.

      long_query_time

      Seuil de lenteur des requêtes en secondes. MySQL enregistre dans le fichier spécifié par slow_query_log_file les requêtes dépassant ce seuil.

      Important

      À des fins de test, ce paramètre est défini sur 0 dans cette rubrique. Dans un environnement de production, définissez la valeur en fonction de vos besoins métier.

    3. (Facultatif) Créez les fichiers journaux.

      Important

      MySQL 5.6 ne crée pas automatiquement les fichiers journaux. Vous devez les créer manuellement.

      sudo mkdir /var/log/mysql
      sudo touch /var/log/mysql/mysqld.log
      sudo touch /var/log/mysql/slow-mysql-query.log
    4. Accordez à tous les utilisateurs les permissions de lecture et d'écriture sur les fichiers journaux.

      sudo chmod 777 /var/log/mysql/slow-mysql-query.log /var/log/mysql/mysqld.log
  5. Démarrez MySQL et vérifiez son état.

    sudo systemctl start mysqld
    sudo systemctl status mysqld

Étape 2 : Installer et configurer Filebeat

  1. Connectez-vous à la console Kibana de votre instance Alibaba Cloud Elasticsearch.

    Pour plus d'informations, consultez la rubrique Se connecter à la console Kibana.

  2. Dans le volet de navigation de gauche, cliquez sur Logs.

  3. Cliquez sur View setup instructions.

  4. Sur la page Add Data to Kibana, cliquez sur MySQL logs.

  5. Sur la page Self managed, cliquez sur RPM.

    Remarque

    Ce guide utilise une instance basée sur Linux, c'est pourquoi l'option RPM est sélectionnée. Choisissez la méthode d'installation adaptée à votre système d'exploitation.

  6. Suivez les instructions affichées à l'écran pour installer Filebeat sur votre instance ECS.

  7. Modifiez la configuration du module MySQL pour spécifier les chemins d'accès aux fichiers du journal des erreurs et du journal des requêtes lentes.

    1. Activez le module MySQL.

      sudo filebeat modules enable mysql
    2. Ouvrez le fichier mysql.yml.

      sudo vim /etc/filebeat/modules.d/mysql.yml
    3. Modifiez la configuration du module MySQL.

      - module: mysql
        # Error logs
        error:
          enabled: true
          var.paths: ["/var/log/mysql/mysqld.log"]
          # Set custom paths for the log files. If left empty,
          # Filebeat will choose the paths depending on your OS.
          #var.paths:
      
        # Slow logs
        slowlog:
          enabled: true
          var.paths: ["/var/log/mysql/slow-mysql-query.log"]
          # Set custom paths for the log files. If left empty,
          # Filebeat will choose the paths depending on your OS.
          #var.paths:

      Paramètre

      Description

      enabled

      Définissez la valeur sur true.

      var.paths

      Chemin d'accès au fichier journal. Ce chemin doit correspondre à celui spécifié dans le fichier de configuration MySQL. Pour plus d'informations, consultez la rubrique Étape 1 : Installer et configurer MySQL.

  8. Configurez le fichier filebeat.yml.

    1. Ouvrez le fichier filebeat.yml.

      sudo vim /etc/filebeat/filebeat.yml
    2. Modifiez la configuration des modules Filebeat.

      filebeat.config.modules:
        # Glob pattern for configuration loading
        path: /etc/filebeat/modules.d/mysql.yml
      
        # Set to true to enable config reloading
        reload.enabled: true
      
        # Period on which files under path should be checked for changes
        reload.period: 1s
    3. Modifiez la configuration Kibana.

      #================================ Kibana =====================================
      
      # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
      # This requires a Kibana endpoint configuration.
      setup.kibana:
      
        # Kibana Host
        # Scheme and port can be left out and will be set to the default (http and 5601)
        # In case you specify and additional path, the scheme is required: http://localhost:5601/path
        # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
        host: "https://es-cn-xxx.kibana.elasticsearch.aliyuncs.com:5601"

      host: Adresse d'accès à la console Kibana, que vous pouvez obtenir depuis la page de configuration Kibana. Pour plus d'informations, consultez la rubrique Afficher le point de terminaison public de la console Kibana. Le format est le suivant : <point de terminaison public Kibana>:5601.

    4. Modifiez la configuration de sortie Elasticsearch.

      output.elasticsearch:
        # Array of hosts to connect to.
        hosts: ["es-cn-0pp1jxvcl000*****.elasticsearch.aliyuncs.com:9200"]
        # Optional protocol and basic auth credentials.
        #protocol: "https"
        username: "elastic"
        password: "<your_password>"

      Paramètre

      Description

      hosts

      Adresse d'accès à votre instance Alibaba Cloud Elasticsearch, au format <Adresse IP privée ou publique de l'instance>:9200. Vous trouverez cette adresse sur la page Informations de base de l'instance. Pour plus d'informations, consultez la rubrique Afficher les informations de base d'une instance.

      Remarque

      Utilisez l'adresse IP privée si vos instances ECS et Alibaba Cloud Elasticsearch se trouvent dans le même Virtual Private Cloud (VPC). Sinon, utilisez l'adresse IP publique et configurez une liste d'autorisation d'adresses IP. Pour plus d'informations, consultez la rubrique Configurer une liste d'autorisation d'adresses IP publiques ou privées pour une instance.

      username

      Nom d'utilisateur pour accéder à l'instance Alibaba Cloud Elasticsearch. Valeur par défaut : elastic.

      password

      Mot de passe associé au nom d'utilisateur spécifié, défini lors de la création de l'instance. Si vous l'avez oublié, vous pouvez le réinitialiser. Pour plus d'informations, consultez la rubrique Réinitialiser le mot de passe d'accès d'une instance.

  9. Exécutez les commandes suivantes pour charger les tableaux de bord et autres ressources dans Elasticsearch et Kibana, puis démarrez le service Filebeat.

    sudo filebeat setup
    sudo service filebeat start

Étape 3 : Visualiser les journaux MySQL dans Kibana

  1. Sur l'instance ECS, redémarrez MySQL et exécutez une requête de test.

    Exécutez la commande suivante pour redémarrer MySQL :

    sudo systemctl restart mysqld
  2. Consultez le contenu des journaux.

    Les exemples suivants présentent des entrées de journal types.

    
    [root@zl-test003 ~]# tail -50 /var/log/mysql/slow-mysql-query.log
    # Query_time: 0.000385  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
    SET timestamp=1590720469;
    ;
    # User@Host: root[root] @ localhost []  Id:     2
    # Query_time: 0.000138  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
    SET timestamp=1590720469;
    ;
    # User@Host: root[root] @ localhost []  Id:     2
    # Query_time: 0.000214  Lock_time: 0.000048 Rows_sent: 5  Rows_examined: 5
    SET timestamp=1590720469;
    SELECT * from student;
    # Time: 200529 10:47:52
    # User@Host: root[root] @ localhost []  Id:     2
    # Query_time: 0.000231  Lock_time: 0.000117 Rows_sent: 2  Rows_examined: 10
    SET timestamp=1590720472;
    SELECT * from runoob_tbl WHERE runoob_author='xxx';
    # User@Host: root[root] @ localhost []  Id:     2
    # Query_time: 0.000171  Lock_time: 0.000075 Rows_sent: 2  Rows_examined: 10
    SET timestamp=1590720472;
    SELECT * from runoob_tbl WHERE runoob_author='xxx';
    # Time: 200529 10:47:53
    # User@Host: root[root] @ localhost []  Id:     2
    # Query_time: 0.000149  Lock_time: 0.000075 Rows_sent: 2  Rows_examined: 10
    SET timestamp=1590720473;
    SELECT * from runoob_tbl WHERE runoob_author='xxx';
    # Time: 200529 10:47:56
    # User@Host: root[root] @ localhost []  Id:     2
    # Query_time: 0.000039  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
    SET timestamp=1590720476;
    sleep(4);
    
    [root@zl-test003 ~]# tail -50 /var/log/mysql/mysqld.log
    2020-05-29 10:47:43 4240 [Note] Shutting down plugin 'INNODB_LOCKS'
    2020-05-29 10:47:43 4240 [Note] Shutting down plugin 'INNODB_TRX'
    2020-05-29 10:47:43 4240 [Note] Shutting down plugin 'InnoDB'
    2020-05-29 10:47:43 4240 [Note] InnoDB: FTS optimize thread exiting.
    2020-05-29 10:47:43 4240 [Note] InnoDB: Starting shutdown...
    2020-05-29 10:47:45 4240 [Note] InnoDB: Shutdown completed; log sequence number 1666138
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'BLACKHOLE'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'ARCHIVE'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'MRG_MYISAM'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'MyISAM'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'MEMORY'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'CSV'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'sha256_password'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'mysql_native_password'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'mysql_old_password'
    2020-05-29 10:47:45 4240 [Note] Shutting down plugin 'binlog'
    2020-05-29 10:47:45 4240 [Note] /usr/sbin/mysqld: Shutdown complete
    
    200529 10:47:45 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
    200529 10:47:45 mysqld_safe Logging to '/var/log/mysql/mysqld.log'.
    200529 10:47:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    2020-05-29 10:47:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_def_timestamp server option (see documentation for more details).
    2020-05-29 10:47:45 0 [Note] /usr/sbin/mysqld (mysqld 5.6.48-log) starting as process 21710 ...
    2020-05-29 10:47:45 21710 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)
  3. Connectez-vous à la console Kibana de l'instance Alibaba Cloud Elasticsearch de destination.

    Pour plus d'informations, consultez la rubrique Se connecter à la console Kibana.

  4. Dans le volet de navigation de gauche, cliquez sur Dashboard.

  5. Dans la liste dashboards, cliquez sur [Filebeat MySQL] Overview.

  6. Dans le coin supérieur droit de la page, sélectionnez une plage de temps pour afficher les journaux.

    查看日志