Amazon CloudWatch Database Insights によるデータベースのモニタリング
はじめに
Amazon CloudWatch Database Insights は、Amazon RDS および Aurora データベース向けの統合モニタリングソリューションです。データベースメトリクス、クエリ分析、ログ、イベント、アプリケーションテレメトリを CloudWatch コンソール内の単一のエクスペリエンスに統合し、データベース層で何が起きているかを把握するために複数のツールを切り替える必要をなくします。
この記事では 、Database Insights が提供する機能、2 つの動作モードの選択方法、データベースを効果的に監視するための実践的なガイダンス、および採用前に把握しておくべき制限事項について説明します。
Database Insights とは何ですか?
Database Insights は Amazon RDS Performance Insights を基盤として構築され、フリート全体のモニタリング、ログの相関分析、ロック分析、実行プランのキャプチャ、アプリケーションレベルの統合によって機能を拡張しています。これは、スタンドアロンの Performance Insights コンソールエクスペリエンス(まもなくサポート終了)の後継となるものです。
コアコンセプトは DB Load です。これは、任意の時点におけるデータベースのアクティブセッションの平均数を表します。DB Load がインスタンスの vCPU 数を超えると、データベースは過負荷状態になります。Database Insights はこのメトリクスを可視化し、複数のディメンション(SQL、待機イベント、ユーザー、ホスト、アプリケーション)でスライスすることで、パフォーマンス問題の根本原因を迅速に特定できます。
スタンダードモード vs. アドバンストモード
Database Insights は 2 つの階層で動作します。Standard モードはデフォルトで有効になっており、追加コストはかかりません。Advanced モードでは、15 か月の保持期間を設定した Performance Insights を有効にする必要があり、vCPU 時間(プロビジョニング済み)または ACU 時間(サーバーレス/リミットレス)に基づいて料金が発生します。
| 機能 | スタンダード | アドバンスト |
|---|---|---|
| ディメンション別の DB Load 主要要因の分析 | ✔ | ✔ |
| メトリクスのクエリ、グラフ化、アラーム(7 日間保持) | ✔ | ✔ |
| 機密性の高いディメンションに対するきめ細かい IAM アクセス制御 | ✔ | ✔ |
| フリート全体のモニタリングビュー | ✘ | ✔ |
| OS プロセス分析(Enhanced Monitoring) | ✘ | ✔ |
| SQL ロック分析(15 か月間保持) | ✘ | ✔ (Aurora PG) |
| SQL 実行プラン分析(15 か月間保持) | ✘ | ✔ (Aurora PG、Oracle、SQL Server) |
| クエリごとの統計の可視化 | ✘ | ✔ |
| スロー SQL クエリ分析 | ✘ | ✔ |
| Application Signals 統合(サービスの呼び出し) | ✘ | ✔ |
| 統合テレメトリダッシュボード(メトリクス、ログ、イベント) | ✘ | ✔ |
| Performance Insights カウンターメトリクスの自動インポート | ✘ | ✔ |
| CloudWatch 内の RDS イベント | ✘ | ✔ |
| オンデマンドパフォーマンス分析レポート | ✘ | ✔ |
| クロスアカウント・クロスリージョンモニタリング | ✘ | ✔ |
データ保持期間:
- スタンダード: Performance Insights データの保持期間は 7 日間です。
- アドバンスト: Database Insights が収集するすべてのメトリクスの保持期間は 15 か月間です。
主要機能の説明
フリートヘルスダッシュボード
Fleet Health Dashboard は、すべての RDS および Aurora インスタンスをクロスアカウント・クロスリージョンで 1 つ の画面に俯瞰的に表示します。ハニカムビジュアライゼーションは、vCPU キャパシティに対する DB 負荷に基づいて、インスタンスをヘルス状態(High、Warning、Ok、Idle)ごとに分類します。タグ(environment、service、team)でフィルタリングしたり、カスタムフリートビューを保存したりすることができます。Top-10 チャートでは、最も負荷の高いインスタンス、そのトップクエリ、およびトップ待機イベントを一目で確認できます。
数百のデータベースを管理する責任があり、どれに注意が必要かを素早く特定する必要がある場合に、ここから始めます。
DB 負荷分析 (調査ワークベンチ)
インスタンスダッシュボードの「DB Load Analysis」タブは、トラブルシューティングの大部分の時間を費やす場所です。5W に答えます。
- WHAT — SQL でスライスして、どのクエリが負荷を生成しているかを確認します。
- WHO — ユーザーまたはアプリケーションでスライスして、責任者を特定します。
- WHERE — ホストでスライスして、ソースマシンを見つけます。
- WHEN — タイムラインには、問題がいつ開始および停止したかが正確に表示されます。
- WHY — 調査結果を関連付けてアクションを実行します。
Top SQL テーブルは、負荷への貢献度によってクエリをランク付けし、calls/sec、平 均レイテンシ、検査された行数、およびプラン数を表示します。
ロック分析
Aurora PostgreSQL および RDS for PostgreSQL で利用可能です。Database Insights はロックスナップショットを 15 秒ごとにキャプチャし、ロックツリーとして可視化します。親ノードはブロッキングセッション、子ノードはウェイターを表します。ブロッキング SQL、継続時間、および影響を受けるダウンストリームセッションの数を確認できます。DB Load チャートの「Sliced by: Blocking SQL」オプションは、どのステートメントが時間の経過とともにロック競合を引き起こしているかを示します。
実行プラン分析
Aurora PostgreSQL (v14.10+、v15.5+)、RDS for Oracle、および RDS for SQL Server で利用可能です。Top SQL テーブルの Plans Count 列には、各クエリに存在する個別の実行プランの数が表示されます。プランを並べて比較することで、プランの変更がパフォーマンスの低下を引き起こした時点を特定できます。プラン数が多い場合は、オプティマイザーの不安定性を示しています。