Amazon Relational Database Service (Amazon RDS) for MySQL DB インスタンスのパフォーマンスをモニタリングしたいと思っています。最適な方法を教えてください。
簡単な説明
Amazon RDS for MySQL DB インスタンスをモニタリングするには、いくつかの方法があります。
何らかの問題やマルチポイントで発生した障害をトラブルシューティングするには、これら複数の方法を使用して DB インスタンスのモニタリングすることがベストプラクティスです。
解決方法
Amazon CloudWatch
Amazon CloudWatch は、Amazon RDS for MySQL データベースインスタンスのメトリクスをリアルタイムで提供します。デフォルトで Amazon RDS のメトリクスは、60 秒ごとに Amazon CloudWatch に対し自動的に送信されます。使用状況に関するアラームを作成することで、特定の期間に 1 つの Amazon RDS メトリクスを監視することもできます。
Amazon CloudWatch で Amazon RDS メトリクスをモニタリングするには、次のステップを実行します。
注: メトリクスは、まずサービスに関する名前空間でグループ化された後、名前空間内のさまざまなディメンションの組み合わせでグループ化されます。
1. Amazon CloudWatch コンソールを開きます。
2. (オプション) AWS リージョンを更新します。ナビゲーションバーから、AWS リソースが存在する AWS リージョンを選択します。詳細については、「リージョンとエンドポイント」を参照してください。
3. ナビゲーションペインで、[メトリクス] を選択します。
4. RDS メトリクスの名前空間を選択します。
5. メトリクスのディメンションを選択します。
6. (オプション) メトリクスの表示の並べ替え、フィルタリング、更新を行います。
メトリクスの並べ替えには、列見出しを使用します。
メトリクスのグラフビューを作成する場合は、そのメトリクスの横にあるチェックボックスをオンにします。
リソースでフィルタリングするには、リソース ID を選択した上で、[検索に追加] をクリックします。
メトリクスでフィルタリングするには、メトリクス名を選択した上で、[検索に追加] をクリックします。
拡張モニタリング (間隔の詳細度 1~5 秒以内)
Amazon RDS で拡張モニタリングを使用すると、DB インスタンスが実行されているオペレーティングシステムのメトリクスを、リアルタイムで表示できます。
注: AWS Identity Access Management (IAM) ロールを作成して、Amazon RDS から Amazon CloudWatch Logs への通信を許可する必要があります。
Amazon RDS で拡張モニタリングを有効にするには、以下のステップを実行します。
1. [モニタリング] セクションまでスクロールします。
2. DB インスタンスまたはリードレプリカで、[拡張モニタリングの有効化] をクリックします。
3. [モニタリングロール] に、先に作成済みの IAM ロールを指定します。
4. Amazon RDS で rds-monitoring-role ロールを作成させる場合は、[デフォルト] を選択します。
5. [詳細度] プロパティに、DB インスタンスまたはリードレプリカのメトリクスが収集される時間間隔 (秒単位) を設定します。[詳細度] プロパティには、1、5、10、15、30、または 60 のいずれかの値を設定できます。
RDS Performance Insights
注: DB インスタンスの作成後に Performance Insights を手動で有効にしている場合は、Performance Schema を有効にするためにインスタンスの再起動が必要です。Performance Schema は、パラメーターが「0」または「1」に設定されている場合、またはパラメーターの Source 列が「user」に設定されている場合は無効になります。performance_schema パラメーターが無効に設定されている場合、Performance Insights は、DB 負荷を Amazon RDS MySQL プロセスのリスト状態により分類して表示します。performance_schema パラメーターを有効にするには、performance_schema パラメーターのリセットを使用します。
RDS Performance Insights を使用すると、データベースの負荷を視覚化できます。この表示は、待機中、SQL ステートメント、ホスト、またはユーザーによるフィルタリングが可能です。こうすることで、問題の原因となっているクエリを特定し、そのクエリに関連付けられている待機タイプと待機イベントを表示できます。
Amazon RDS コンソールで Amazon RDS for MySQL の Performance Insights を有効化できます。
スロークエリロギング
スロークエリログを有効にするには、slow_query_log の値を「1」に設定します。(この値はデフォルトで「0」に設定されており、この状態ではスロークエリログは無効です。) スロークエリログには、long_query_time メトリクスに指定された秒数よりも実行時間が長いクエリが記録されます。(long_query_time メトリクスのデフォルト値は「10」です。) 例えば、実行時間が 2 秒を超えるクエリをログに記録するには、long_query_time メトリクスに設定する秒数を「2」などに更新します。
カスタムパラメータグループを使用して、Amazon RDS for MySQL のスロークエリログを有効にするには、次のステップを実行します。
1. Amazon RDS コンソールを開きます。
2. ナビゲーションペインで、[パラメータグループ] をクリックします。
3. 変更するパラメータグループを選択します。
4. [パラメータグループアクション] をクリックします。
5. [Edit] (編集) を選択します。
6. [パラメータの編集] をクリックします。
7. 以下のパラメータを更新します。
log_output: 一般ログまたはスロークエリログが有効になっている場合に、ログのファイルシステムへの書き込みを指定するには、この値を「file」に変更します。ログファイルは 1 時間ごとにローテーションされます。
long_query_time: 実行時間が 2 秒以上のクエリをログに記録するには、この値を「2」以上に更新します。
slow_query_log: 値を「1」に更新してスロークエリによるログ記録を有効にします。(この値はデフォルトで「0」に設定されており、この状態ではログ記録は無効です。)
8. [変更を保存] をクリックします。
注: カスタム DB グループのパラメータ値は変更できますが、デフォルトの DB パラメータグループの値は変更できません。カスタム DB パラメータグループのパラメータを変更できない場合は、[値タイプ] が 「Modifiable」 に設定されているかどうかを確認します。MySQL ログを Amazon CloudWatch のロググループに公開する方法については、「Amazon CloudWatch Logs への MySQL ログの発行」を参照してください。
関連情報
MySQL データベースログファイルへのアクセス
Amazon RDS for MySQL でのパラメータ設定のためのベストプラクティス、パート 1: パフォーマンスに関連するパラメータ
Amazon RDS for MySQL、MariaDB、または Aurora for MySQL のインスタンスで CPU 使用率が高い場合のトラブルシューティングと解決方法を教えてください。
Amazon RDS MySQL DB インスタンスのログを有効にしてモニタリングする方法を教えてください。