このガイドでは、Filebeat を使用して MySQL のエラーログとスロークエリログを Alibaba Cloud Elasticsearch に一元化する方法について説明します。このチュートリアルを完了すると、事前に構築された Kibana ダッシュボードを通じてデータベースのパフォーマンスとエラーを可視化できるようになります。
ワークフローの概要
環境の準備:Elasticsearch と ECS をセットアップします。
MySQL の設定:ソースデータベースでログを有効にします。
Filebeat のデプロイ:MySQL モジュールをインストールおよび設定してログを転送します。
可視化:Kibana を使用してデータを分析します。
前提条件
Alibaba Cloud Elasticsearch クラスター:この例では V6.7.0 (Standard Edition) を使用します。Alibaba Cloud Elasticsearch クラスターの作成をご参照ください。
Alibaba Cloud Elastic Compute Service (ECS) インスタンス:CentOS が稼働していること。カスタム起動をご参照ください。
ネットワーク:ECS インスタンスと Elasticsearch クラスターが通信できることを確認します (理想的には同じ VPC 内)。
ステップ 1:MySQL のインストールと設定
ご利用の ECS インスタンスに接続し、以下の手順に従って、Filebeat が読み取れるログを MySQL が生成するようにします。
このガイドでは、一般ユーザーを例として使用します。
ECS インスタンスに接続します。
MySQL をインストールします。
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm sudo yum install mysql-serverログを有効にします。
説明デフォルトでは、MySQL のログファイル設定は無効になっています。ログファイル設定を手動で有効にする必要があります。また、MySQL コマンドを実行して一時的なスローログを有効にすることもできます。
/etc/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 644 /var/log/mysql/*.logMySQL を起動します。
sudo systemctl start mysqld sudo systemctl status mysqld
ステップ 2:Filebeat のインストールと設定
Filebeat は専用の MySQL モジュールを使用して、ログを Elasticsearch に送信する前に構造化された JSON に解析します。
Elasticsearch クラスターの Kibana コンソールにログインします。
左側のナビゲーションメニューで、[Logs] をクリックします。
[View setup instructions] をクリックします。
[Add Data to Kibana] ページで、[MySQL logs] をクリックします。
[Self Managed] ページで、[RPM] をクリックします。
説明このトピックでは Linux オペレーティングシステムを使用しているため、[RPM] を選択しています。ご利用のオペレーティングシステムに基づいて適切なインストール方法を選択できます。
プロンプトに従って、ECS インスタンスに Filebeat をインストールします。
MySQL モジュールを設定します。
MySQL モジュールを有効にし、ログパスを指定します。
sudo filebeat modules enable mysql sudo vim /etc/filebeat/modules.d/mysql.yml設定を更新します。
- 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.ymlFilebeat モジュールの設定を更新します。
filebeat.config.modules: # 設定読み込み用の Glob パターン path: /etc/filebeat/modules.d/mysql.yml # 設定の再読み込みを有効にするには true に設定 reload.enabled: true # path 配下のファイルが変更をチェックされる期間 reload.period: 1sKibana の設定を更新します。

setup.kibana: host: "https://es-cn-0pp1jxvcl000*****.kibana.elasticsearch.aliyuncs.com:5601"host:Kibana コンソールへのアクセスに使用される URL。URL は Kibana 設定ページから取得できます。詳細については、「Kibana コンソールのパブリックエンドポイントの表示」をご参照ください。URL は<Kibana コンソールのパブリックエンドポイント>:5601の形式で指定します。Elasticsearch の出力設定を変更します。

output.elasticsearch: # 接続するホストの配列 hosts: ["es-cn-0pp1jxvcl000*****.elasticsearch.aliyuncs.com:9200"] # オプションのプロトコルと基本認証情報 #protocol: "https" username: "elastic" password: "<your_password>"パラメーター
説明
hostsAlibaba Cloud Elasticsearch クラスターのエンドポイント。フォーマットは
<インスタンスのプライベートまたはパブリックエンドポイント>:9200です。Elasticsearch クラスターのプライベートまたはパブリックエンドポイントは、インスタンスの基本情報ページから取得できます。詳細については、「インスタンスの基本情報の表示」をご参照ください。説明パブリックエンドポイントを使用する場合は、ご利用の ECS の IP が Elasticsearch の IP ホワイトリストに追加されていることを確認してください。詳細については、「インスタンスのパブリックまたはプライベート IP アドレスホワイトリストの設定」をご参照ください。
usernameElasticsearch クラスターへのアクセスに使用されるユーザー名。デフォルト値:elastic。
passwordインスタンスのパスワードは通常、作成時に設定します。パスワードを忘れた場合は、リセットできます。パスワードのリセット方法については、「インスタンスのアクセスパスワードのリセット」をご参照ください。
初期化と起動
setup コマンドを実行して、事前に構築されたダッシュボードと Ingest パイプラインを Elasticsearch にロードし、サービスを開始します。
sudo filebeat setup sudo service filebeat start
ステップ 3:Kibana でログを可視化する
Filebeat が実行されると、自動的にログを Elasticsearch に転送します。
MySQL を再起動してエラーログを生成するか、いくつかの SQL クエリを実行します。
sudo systemctl restart mysqldElasticsearch クラスターの Kibana コンソールにログインします。
左側のサイドバーで、[Dashboard] をクリックします。
[Filebeat MySQL] Overview を検索して選択します。
右上隅で時間範囲を選択し、その時間範囲のログを表示します。
