スローログやエラーログなどの MySQL ログを表示および分析する場合、Filebeat を使用して MySQL ログを収集できます。Filebeat はログを Alibaba Cloud Elasticsearch に送信します。これらのログは、Kibana コンソールで視覚的にクエリ、分析、および表示できます。
手順
Alibaba Cloud Elasticsearch クラスタと Elastic Compute Service (ECS) インスタンスを作成します。Elasticsearch クラスタは、Filebeat によって収集された MySQL ログを受信するために使用されます。また、これらのログを視覚的にクエリ、分析、および表示するための Kibana コンソールも提供します。ECS インスタンスは、MySQL と Filebeat をインストールするために使用されます。
MySQL をインストールし、MySQL 構成ファイルでエラーログファイルとスロークエリログファイルを構成します。その後、Filebeat は必要なログを収集できます。
Filebeat をインストールします。Filebeat は、MySQL ログを収集し、ログを Elasticsearch クラスタに送信するために使用されます。Filebeat で MySQL モジュールを有効にし、Filebeat 構成ファイルで Elasticsearch クラスタとクラスタの Kibana コンソールにアクセスするために使用する URL を指定する必要があります。
手順 3: Kibana ダッシュボードを使用して MySQL ログを表示する
クエリテストを実行し、表示および分析するエラーログとスロークエリログを Kibana コンソールのダッシュボードに表示します。
準備を行う
Alibaba Cloud Elasticsearch クラスタを作成します。
この例では、Standard Edition の Elasticsearch V6.7.0 クラスタを使用します。詳細については、「Alibaba Cloud Elasticsearch クラスタを作成する」をご参照ください。
Alibaba Cloud ECS インスタンスを作成します。
この例では、CentOS を実行する ECS インスタンスを使用します。詳細については、「ウィザードを使用してインスタンスを作成する」をご参照ください。
手順 1: MySQL をインストールして構成する
ECS インスタンスに接続します。
詳細については、「パスワードを使用して Linux インスタンスに接続する」をご参照ください。
説明この例では、一般的なユーザーを使用しています。
MySQLソースをダウンロードしてインストールします。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
MySQL をインストールします。
sudo yum install mysql-server
my.cnf ファイルでエラーログファイルと低速クエリログファイルを構成します。
説明デフォルトでは、MySQL のログファイルの設定は無効になっています。ログファイルの設定を手動で有効にする必要があります。 MySQL コマンドを実行して、一時的なスローログを有効にすることもできます。
my.cnf ファイルを開きます。
sudo vim /etc/my.cnf
ログファイルを構成します。
[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 に設定されています。ビジネス要件に基づいてこのパラメーターを指定できます。
(オプション) ログファイルを作成します。
重要MySQL 5.6 はログファイルを自動的に作成しません。ログファイルを手動で作成する必要があります。
sudo mkdir /var/log/mysql sudo touch /var/log/mysql/mysqld.log sudo touch /var/log/mysql/slow-mysql-query.log
ログファイルに対するすべてのユーザーの読み取りおよび書き込み権限を付与します。
sudo chmod 777 /var/log/mysql/slow-mysql-query.log /var/log/mysql/mysqld.log
MySQL を起動し、そのステータスを確認します。
sudo systemctl start mysqld sudo systemctl status mysqld
ステップ 2: Filebeat のインストールと構成
Elasticsearch クラスターの Kibana コンソールにログオンします。
詳細については、「Kibana コンソールへのログオン」をご参照ください。
データの視覚化と探索セクションで、[ログ] をクリックします。
表示されるページで、[セットアップ手順の表示] をクリックします。
[kibana へのデータの追加] ページで、[mysql ログ] をクリックします。
[はじめに] セクションで、[RPM] タブをクリックします。
説明このトピックでは、Linux オペレーティングシステムが使用されています。そのため、[RPM] が選択されています。お使いのオペレーティングシステムに基づいて、適切なインストール方法を選択できます。
プロンプトに従って、ECS インスタンスに Filebeat をインストールします。
MySQL モジュールの構成を変更し、収集するエラーログとスローログのファイルを指定します。
MySQL モジュールを有効にします。
sudo filebeat modules enable mysql
mysql.yml ファイルを開きます。
sudo vim /etc/filebeat/modules.d/mysql.yml
MySQL モジュールの構成を変更します。
- module: mysql # エラーログ error: enabled: true var.paths: ["/var/log/mysql/mysqld.log"] # ログファイルのカスタムパスを設定します。空のままにすると、 # Filebeat は OS に応じてパスを選択します。 #var.paths: # スローログ slowlog: enabled: true var.paths: ["/var/log/mysql/slow-mysql-query.log"] # ログファイルのカスタムパスを設定します。空のままにすると、 # Filebeat は OS に応じてパスを選択します。 #var.paths:
パラメーター
説明
enabled
このパラメーターを
true
に設定します。var.paths
このパラメーターをログファイルのパスに設定します。パスは、MySQL 構成ファイルで指定されているパスと同じである必要があります。詳細については、「ステップ 1: MySQL のインストールと構成」をご参照ください。
filebeat.yml ファイルを構成します。
filebeat.yml ファイルを開きます。
sudo vim /etc/filebeat/filebeat.yml
Filebeat モジュールの構成を変更します。
filebeat.config.modules: # 構成の読み込みのための Glob パターン path: /etc/filebeat/modules.d/mysql.yml # 構成の再読み込みを有効にするには、true に設定します reload.enabled: true # path の下のファイルの変更を確認する期間 reload.period: 1s
Kibana の構成を変更します。
setup.kibana: host: "https://es-cn-0pp1jxvcl000*****.kibana.elasticsearch.aliyuncs.com:5601"
host
: Kibana コンソールへのアクセスに使用する URL。URL は Kibana 構成ページで取得できます。詳細については、「Kibana コンソールの公開エンドポイントの表示」をご参照ください。<Kibana コンソールの公開エンドポイント>:5601
の形式で URL を指定します。Elasticsearch クラスターの構成を変更します。
output.elasticsearch: # 接続先のホストの配列 hosts: ["es-cn-0pp1jxvcl000*****.elasticsearch.aliyuncs.com:9200"] # オプションのプロトコルと基本認証資格情報 #protocol: "https" username: "elastic" password: "<your_password>"
パラメーター
説明
hosts
Elasticsearch クラスターへのアクセスに使用する URL。
<Elasticsearch クラスターの内部または公開エンドポイント>:9200
の形式で URL を指定します。内部または公開エンドポイントは、クラスターの [基本情報] ページで取得できます。詳細については、「クラスターの基本情報の表示」をご参照ください。説明ECS インスタンスと Elasticsearch クラスターが同じ仮想プライベートクラウド (VPC) 内にある場合は、内部エンドポイントを使用します。それ以外の場合は、公開エンドポイントを使用します。公開エンドポイントを使用して Elasticsearch クラスターにアクセスする場合は、インターネット経由で Elasticsearch クラスターにアクセスするためのホワイトリストを構成する必要があります。詳細については、「Elasticsearch クラスターのパブリックまたはプライベート IP アドレスホワイトリストの構成」をご参照ください。
username
Elasticsearch クラスターへのアクセスに使用するユーザー名。デフォルト値: elastic。
password
elastic ユーザー名に対応するパスワード。パスワードは、Elasticsearch クラスターの作成時に指定します。パスワードを忘れた場合は、リセットできます。パスワードのリセット手順と注意事項については、「Elasticsearch クラスターのアクセスパスワードのリセット」をご参照ください。
次のコマンドを実行して、Filebeat を起動します。
sudo filebeat setup sudo service filebeat start
ステップ 3: Kibana ダッシュボードを使用して MySQL ログを表示する
テストのために ECS インスタンスで MySQL を再起動し、ログをクエリします。
MySQL を再起動するには、次のコマンドを実行します。
sudo systemctl restart mysqld
クエリされたログを表示します。
次の図は、クエリされたログを示しています。
図 1. 低速ログ
図 2. エラーログ
Elasticsearch クラスターの Kibana コンソールにログオンします。
詳細については、「Kibana コンソールにログオンする」をご参照ください。
左側のナビゲーションペインで、[ダッシュボード] をクリックします。
[ダッシュボード] ページで、[filebeat Mysql] 概要 をクリックします。
右上隅で時間範囲を選択し、その時間範囲のログを表示します。