すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:セルフマネージド Filebeat による MySQL ログの収集

最終更新日:Aug 20, 2026

Filebeat を使用して、スロークエリログやエラーログなどの MySQL ログを収集し、Alibaba Cloud Elasticsearch インスタンスに送信して、Kibana でクエリ、分析、可視化できます。

手順

  1. 前提条件

    ログを受信するための Alibaba Cloud Elasticsearch インスタンスと分析用の Kibana コンソール、および MySQL と Filebeat をホストするための Elastic Compute Service (ECS) インスタンスを作成します。

  2. ステップ 1:MySQL のインストールと設定

    MySQL をインストールし、MySQL の設定ファイルでエラーログとスロークエリログを有効にします。これらのログを有効にしないと、Filebeat は収集できません。

  3. ステップ 2:Filebeat のインストールと設定

    Filebeat をインストールして MySQL ログを収集し、Alibaba Cloud Elasticsearch インスタンスに送信します。Filebeat の設定ファイルで MySQL モジュールを有効にし、Kibana と Alibaba Cloud Elasticsearch のアクセスアドレスを指定します。

  4. ステップ 3:Kibana での MySQL ログの可視化

    テストクエリを実行し、Kibana ダッシュボードでエラーログとスロークエリログを表示します。

前提条件

ステップ 1:MySQL のインストールと設定

  1. ECS インスタンスに接続します。

    詳細については、「パスワードを使用した Linux インスタンスへの接続」をご参照ください。

    説明

    このガイドのコマンドは、root 以外のユーザーで実行してください。

  2. MySQL リポジトリをダウンロードしてインストールします。

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
  3. MySQL をインストールします。

    sudo yum install mysql-server
  4. my.cnf ファイルでエラーログファイルとスロークエリログファイルを設定します。

    説明

    デフォルトでは、MySQL ログファイルは無効になっています。手動で有効にする必要があります。MySQL コマンドを実行して、スロークエリログを一時的に有効にすることもできます。

    1. my.cnf ファイルを開きます。

      sudo vim /etc/my.cnf
    2. ログファイルを設定します。

      [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

      パラメーター

      説明

      log_queries_not_using_indexes

      インデックスを使用しないクエリをスロークエリログに記録するかどうかを指定します。1 は記録を有効にし、0 は無効にします。

      slow_query_log

      スロークエリログを有効または無効にします。on はログを有効にし、off は無効にします。

      slow_query_log_file

      スロークエリログの保存先パスです。

      long_query_time

      スロークエリのしきい値 (秒単位) です。MySQL は、このしきい値を超えたクエリをslow_query_log_fileで指定されたファイルに記録します。

      重要

      テスト目的のため、このトピックではこのパラメーターを 0 に設定しています。本番環境では、ビジネス要件に基づいて値を設定してください。

    3. (オプション) ログファイルを作成します。

      重要

      MySQL 5.6 ではログファイルが自動的に作成されません。手動で作成する必要があります。

      sudo mkdir /var/log/mysql
      sudo touch /var/log/mysql/mysqld.log
      sudo touch /var/log/mysql/slow-mysql-query.log
    4. すべてのユーザーにログファイルの読み書き権限を付与します。

      sudo chmod 777 /var/log/mysql/slow-mysql-query.log /var/log/mysql/mysqld.log
  5. MySQL を起動し、そのステータスを確認します。

    sudo systemctl start mysqld
    sudo systemctl status mysqld

ステップ 2:Filebeat のインストールと設定

  1. Alibaba Cloud Elasticsearch インスタンスの Kibana コンソールにログインします。

    詳細については、「Kibana コンソールへのログイン」をご参照ください。

  2. 左側のナビゲーションペインで、[ログ] をクリックします。

  3. [セットアップ手順を表示] をクリックします。

  4. [Kibana にデータを追加] ページで、[MySQL ログ] をクリックします。

  5. [セルフマネージド] ページで、[RPM] をクリックします。

    説明

    このガイドでは Linux ベースのインスタンスを使用しているため、[RPM] が選択されています。ご使用のオペレーティングシステムに適したインストール方法を選択してください。

  6. 画面の指示に従って、ECS インスタンスに Filebeat をインストールします。

  7. MySQL モジュールの設定を変更して、エラーログファイルとスロークエリログファイルのパスを指定します。

    1. MySQL モジュールを有効にします。

      sudo filebeat modules enable mysql
    2. mysql.yml ファイルを開きます。

      sudo vim /etc/filebeat/modules.d/mysql.yml
    3. MySQL モジュールの設定を変更します。

      - module: mysql
        # Error logs
        error:
          enabled: true
          var.paths: ["/var/log/mysql/mysqld.log"]
          # ログファイルのカスタムパスを設定します。空のままにすると、
          # Filebeat は OS に応じてパスを選択します。
          #var.paths:
      
        # Slow logs
        slowlog:
          enabled: true
          var.paths: ["/var/log/mysql/slow-mysql-query.log"]
          # ログファイルのカスタムパスを設定します。空のままにすると、
          # Filebeat は OS に応じてパスを選択します。
          #var.paths:

      パラメーター

      説明

      enabled

      値を true に設定します。

      var.paths

      ログファイルのパスです。このパスは、MySQL 設定ファイルで指定されたパスと一致する必要があります。詳細については、「ステップ 1:MySQL のインストールと設定」をご参照ください。

  8. filebeat.yml ファイルを設定します。

    1. filebeat.yml ファイルを開きます。

      sudo vim /etc/filebeat/filebeat.yml
    2. Filebeat モジュールの設定を変更します。

      filebeat.config.modules:
        # 設定読み込み用のグロブパターン
        path: /etc/filebeat/modules.d/mysql.yml
      
        # 設定のリロードを有効にするには true に設定します
        reload.enabled: true
      
        # path 配下のファイルの変更をチェックする期間
        reload.period: 1s
    3. Kibana の設定を変更します。

      #================================ Kibana =====================================
      
      # Beats バージョン 6.0.0 以降、ダッシュボードは Kibana API を介してロードされます。
      # これには Kibana エンドポイントの設定が必要です。
      setup.kibana:
      
        # Kibana ホスト
        # スキームとポートは省略でき、デフォルト (http および 5601) に設定されます。
        # 追加のパスを指定する場合、スキームが必要です:http://localhost:5601/path
        # IPv6 アドレスは常に次のように定義する必要があります:https://[2001:db8::1]:5601
        host: "https://es-cn-xxx.kibana.elasticsearch.aliyuncs.com:5601"

      host:Kibana コンソールのアクセスアドレスです。Kibana 設定ページから取得できます。 詳細については、「Kibana コンソールのパブリックエンドポイントを表示する」をご参照ください。 形式は <Kibana パブリックエンドポイント>:5601 です。

    4. Elasticsearch の出力設定を変更します。

      output.elasticsearch:
        # 接続するホストの配列。
        hosts: ["es-cn-0pp1jxvcl000*****.elasticsearch.aliyuncs.com:9200"]
        # オプションのプロトコルと基本認証情報。
        #protocol: "https"
        username: "elastic"
        password: "<your_password>"

      パラメーター

      説明

      hosts

      Alibaba Cloud Elasticsearch インスタンスのアクセスアドレス (<インスタンスのプライベート IP アドレスまたはパブリック IP アドレス>:9200 形式) は、インスタンスの「基本情報」ページで確認できます。詳細については、「インスタンスの基本情報を表示する」をご参照ください。

      説明

      ECS インスタンスと Alibaba Cloud Elasticsearch インスタンスが同じ Virtual Private Cloud (VPC) 内にある場合は、プライベート IP アドレスを使用します。それ以外の場合は、パブリック IP アドレスを使用し、IP ホワイトリストを設定します。詳細については、「インスタンスのパブリックまたはプライベート IP ホワイトリストの設定」をご参照ください。

      username

      Alibaba Cloud Elasticsearch インスタンスにアクセスするためのユーザー名です。デフォルト値は elastic です。

      password

      指定したユーザー名のパスワードです。インスタンス作成時に設定したものを指定します。忘れた場合は、リセットできます。詳細については、「インスタンスのアクセスパスワードのリセット」をご参照ください。

  9. 次のコマンドを実行して、ダッシュボードやその他のアセットを Elasticsearch と Kibana にアップロードし、Filebeat サービスを開始します。

    sudo filebeat setup
    sudo service filebeat start

ステップ 3:Kibana での MySQL ログの可視化

  1. ECS インスタンスで MySQL を再起動し、テストクエリを実行します。

    次のコマンドを実行して MySQL を再起動します。

    sudo systemctl restart mysqld
  2. ログの内容を表示します。

    次の例は、ログエントリのサンプルを示しています。

    
    [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. 宛先の Alibaba Cloud Elasticsearch インスタンスの Kibana コンソールにログインします。

    詳細については、「Kibana コンソールへのログイン」をご参照ください。

  4. 左側のナビゲーションペインで、Dashboard をクリックします。

  5. [ダッシュボード] リストで、[[Filebeat MySQL] 概要] をクリックします。

  6. ページの右上隅で、時間範囲を選択してログを表示します。

    查看日志