RDS Proxy モニタリングダッシュボード
RDS Proxy のモニタリングダッシュボードには、プロキシの [モニタリング] タブからアクセスできます。
ダッシュボードには、ウィジェットに配置された事前設定されたメトリクスのセットが用意されており、一般的なオブザーバビリティタスクとトラブルシューティングタスクの実行に役立つように設計されています。このダッシュボードにメトリクスが表示されない場合は、ダッシュボードの右上セクションにあるリンクを使用して CloudWatch のすべてのメトリクスを表示できます。
デフォルトのダッシュボードにメトリクスを追加または削除することはできません。プロキシのカスタムモニタリングビューを作成する場合は、CloudWatch で直接作成できます。詳細については、「CloudWatch ダッシュボードの使用」を参照してください。
モニタリングダッシュボードは複数のセクションに分かれており、メトリクスは事前定義された集計を使用してウィジェットごとにグループ化されています。基盤となる RDS Proxy メトリクスの詳細については、「CloudWatch を使用した RDS Proxy メトリクスのモニタリング」を参照してください。
概要
可用性 % (ロール別)
AvailabilityPercentage メトリクスの集計に基づいて、READWRITE および READ_ONLY ロールでターゲットが使用可能であった時間の割合。
可用性メトリクスは、プロキシによって実行されるデータベースのヘルスチェックの成功率を表すものであり、ターゲットデータベースインスタンスのヘルスステータスを反映します。このウィジェットは各ロールの Average 統計を使用し、計算は特定のロールにおけるデータベースインスタンスの数 (READWRITE ロールの場合は 1 つ、READ_ONLY ロールの場合は複数の場合あり) や、プロキシ内のノードの数 (RDS Proxy インフラストラクチャによって決定) の影響を受けます。
注記
RDS Proxy は、登録されている DB インスタンスの設定に基づいて自動的に容量を調整します。プロキシ内のノード数を直接制御することはできませんが、可用性メトリクスの sample count 統計を使用して現在のノード数を確認することは可能です。RDS Proxy が容量を調整する方法の詳細については、「IP アドレス容量の計画」を参照してください。
READWRITE ターゲットロールには単一のデータベースインスタンスのみを含めることができ、可用性の割合はすべてのプロキシノードにおけるヘルスチェック成功率の平均として計算されます。例えば、プロキシに 4 つのノードがあり、そのうちの 1 つが特定の期間内に正常なヘルスチェックレスポンスを受信しなかった場合、その期間の読み取り/書き込みの可用性は 75% と報告されます。同様に、プロキシに 4 つのノードがあり、そのいずれもが 1 分間のうち 30 秒間ヘルスチェックを実行できなかった場合、プロキシはその 1 分間における可用性を 50% と報告します。
READ_ONLY ターゲットロールには、Aurora クラスター内の複数のレプリカなど、複数のデータベースインスタンスを含めることができます。各 RDS Proxy ノードの観点から、ターゲットインスタンスのいずれかがヘルスチェックに合格すると、読み取り専用ロールは使用可能であると見なされます。その後、すべてのプロキシノードにわたって可用性が平均化され、最終的な数がウィジェットに表示されます。次の 4 つのノードを含むプロキシの例を考えてみましょう。
-
各プロキシノードは、複数の読み取り専用ターゲット (データベースインスタンス) に対してヘルスチェックを実行します。一部のチェックは成功し、一部のチェックは失敗します。プロキシノードは、少なくとも 1 つのターゲットインスタンスから正常なヘルスチェックレスポンスを受け取る限り、読み取り専用ロールが使用可能であることを報告します。
-
4 つのプロキシノードは、複数の読み取り専用ターゲットに対してヘルスチェックを実行します。3 つのプロキシノードは少なくとも 1 つのターゲットに接続できますが、1 つのプロキシノードはどのターゲットにも接続できません。読み取り専用ロールの可用性は、プロキシノードから報告されたロールの可用性の
Averageとして計算されます。(100% + 100% + 100% + 0% )/ 4 = 75%
注記
RDS Proxy READ_ONLY ターゲットロールは、Aurora クラスター、または 2 つの読み取り可能なスタンバイを持つ Amazon RDS マルチ AZ DB クラスターのデプロイでサポートされていますが、リードレプリカを使用する Amazon RDS DB インスタンスのデプロイではサポートされていません。プロキシに読み取り専用ターゲットが含まれていない場合、READ_ONLY ロールの可用性は「ゼロ」と表示されることがあります。
ロール可用性ウィジェットは、以下のシナリオで最も役立ちます。
-
接続エラーの診断。プロキシノードまたはターゲットデータベースインスタンスの正常性によって可用性が影響を受けたかどうかをすばやく評価したい場合。
-
データベースで明確な可用性の低下は発生していないものの、プロキシのヘルスチェックメトリクスがデータベースの過負荷という仮説を裏付ける場合の、高トラフィックイベントの診断。RDS Proxy は、モニタリングとヘルスチェックの役割のために予約された複数の永続的な接続を使用します。そのため、データベースメトリクスがダウンタイムを示していない一方で、プロキシのヘルスチェックが断続的に失敗している場合は、データベースに過度の負荷がかかっていることを示す兆候である可能性があります。
-
プロキシがターゲットインスタンスに接続できない原因となる設定の問題を特定します。例えば、プロキシの可用性メトリクスが低下しているにもかかわらず、他のシグナル上ではターゲットインスタンスが正常であるように見える場合は、プロキシのサブネットに関連付けられたネットワーク ACL の問題や、ターゲットデータベースインスタンスにアタッチされたセキュリティグループの設定に問題がある可能性があります。
RDS Proxy の可用性メトリクスに関連する問題を診断する場合は、データベース自体のヘルスと使用率の指標も確認する必要があります。プロキシの可用性の計算は、データベースがヘルスチェックに応答できるかどうかに左右されます。そのため、結論を出す前に両側から情報を収集する必要があります。
データベース接続の使用状況 % (ロール別)
各ロールにおけるプロキシの接続プールの使用率。DatabaseConnections を MaxDatabaseConnectionsAllowed で割って計算されます。
許可されるデータベース接続の最大数は、MaxConnectionsPercent 設定によって制御されるプロキシの最大プールサイズを指します。これは、max_connections パラメータなどのデータベース接続制限によって異なります。この設定の詳細については、「RDS Proxy 接続に関する考慮事項」を参照してください。
注記
RDS Proxy は、MaxConnectionsPercent クォータの一部を内部モニタリング接続用に確保します。予約済み接続の総数は一定ではなく、内部プロキシノードの数とターゲットデータベースインスタンスの数によって異なります。
許可される接続数とピーク負荷時に予想されるデータベース接続の最大数との間に、少なくとも 30% のヘッドルームを持たせることをお勧めします。このヘッドルームにより、予期しないワークロードの急増時にもクライアントエクスペリエンスが向上し、RDS Proxy が内部インフラストラクチャ全体に接続を再分散して、熱管理やその他の目的に役立てることができます。この推奨事項に従うために、接続使用率ウィジェットには、最大数の 70% の位置に固定のガイドラインが表示されています。
例えば、1 つのライターと 2 つのリーダーで構成され、各インスタンスの max_connections 設定が 500 である Aurora PostgreSQL クラスターがあり、MaxConnectionsPercent が 50 に設定されたプロキシを使用しているとします。
-
RDS Proxy は、モニタリング用に多数の接続を確保するため、インスタンスあたりの
MaxDatabaseConnectionsAllowedは 250 未満となります。(max_connections=500 * MaxConnectionsPercent=50%) - reserved connections -
1 つのライターを含む
READWRITEロールの場合、プロキシ接続プールの最大サイズは 250 をわずかに下回る値 (50% * 500 - reserved_connections) となり、70% のガイドラインは 175 接続未満 (70% * 250 - reserved connections) に相当します。 -
2 つのリーダーを含む
READ_ONLYロールの場合、プロキシ接続プールの最大サイズは 500 をわずかに下回り (2 * 50% * 500 - reserved_connections)、70% のガイドラインは 350 接続未満 (70% * 500 - reserved connections) に相当します。
このウィジェットは、接続使用率の一般的な指標として機能し、特定のトラブルシューティングシナリオの出発点として役立ちます。例えば、次のようになります。
-
接続使用率が頻繁かつ急激に変動する場合、
MaxIdleConnectionsPercent設定が低すぎる可能性があります。アイドル状態の接続をより長期間維持するようにすれば、接続のチャーンを減らすことができます。 -
ワークロードパターンとクライアントアクティビティに基づいて、特定の時点で使用されている接続の数について、大まかな予想を立てられるようになります。ウィジェットは、これらの想定を検証し、クライアントの潜在的な問題を検出するのに役立ちます。
MaxIdleConnectionsPercent設定は非常に低いものの、接続使用率が一貫して非常に高い状況を考えてみましょう。これは、クライアントがアイドル状態になることはほとんどない (必ずしも問題ではありません) ことを示している可能性がありますが、接続がピン留めされているため、アイドル状態チェックの対象外になっていることを意味している可能性もあります。 -
ピン留めまたはプロキシ設定に問題がない場合、データベース接続使用率が高いことは、データベースの
max_connections設定を引き上げる必要があるか、読み取り専用ロールの場合には、クラスターに追加のリードレプリカが必要であることを示している可能性があります。
レイテンシーの内訳
接続の借用とクエリレスポンスのレイテンシー。
| ラベル | 説明 | ソース |
|---|---|---|
DatabaseConnectionsBorrowLatency |
プール内の既存の接続か、データベースに対して新たに開く必要がある接続かにかかわらず、プロキシがデータベース接続を取得するのにかかる時間。 | RDS Proxy、DatabaseConnectionsBorrowLatency メトリクス |
QueryResponseLatency |
クエリリクエストを取得してから、プロキシが応答するまでの時間。 | RDS Proxy、QueryResponseLatency メトリクス |
QueryDatabaseResponseLatency |
プロキシとデータベース間のネットワークレイテンシーなど、データベースがクエリに応答するのにかかった時間。 | RDS Proxy、QueryDatabaseResponseLatency メトリクス |
このウィジェットは、クエリの平均応答時間や、プロキシレイヤーが合計レイテンシーにどのように寄与しているかを理解するのに役立ちます。借用レイテンシーメトリクスは、プールの輻輳を検出するのに特に役立ちます。これは、プールですぐに利用できる接続が十分にないため、クライアントリクエストが待機している状態です。
これらのメトリクスのデータポイントは、値が 0 より大きい場合にのみ発行されます。つまり、クエリトラフィックがない期間には、ウィジェットにギャップが含まれる可能性があります。
クライアント接続
接続状態別に分類された、クライアントとプロキシ間の接続の数。
| ラベル | 説明 | ソース |
|---|---|---|
ClientConnectionsReceived |
受信したクライアント接続リクエストの数。 | RDS Proxy、ClientConnectionsReceived メトリクス |
ClientConnectionsSetupSucceeded |
正常に確立されたクライアント接続の数。 | RDS Proxy、ClientConnectionsSetupSucceeded メトリクス |
ClientConnectionsSetupFailedAuth |
認証または TLS の設定ミスのために失敗したクライアント接続の試行回数。 | RDS Proxy、ClientConnectionsSetupFailedAuth メトリクス |
ClientConnectionsClosed |
閉じられたクライアント接続の数。 | RDS Proxy、ClientConnectionsClosed メトリクス |
このウィジェットは、複数のクライアント接続メトリクスを 1 つのグラフに表示することで、クライアント接続のスループットやステータスを評価するのに役立ちます。これは、クライアント接続の全体的な成功率をモニタリングし、接続の開閉率を観察するのに役立ちます。これは、接続ストームやクライアントアクティビティの経時的な変化を検出するのに役立ちます。
Proxy ワークロード
QueryRequests プロキシメトリクスに基づく、プロキシエンドポイントあたりのクエリリクエストの数。
データ系列のラベルはエンドポイントによって異なります。
-
デフォルトの読み取り/書き込みプロキシエンドポイントは、
defaultラベルを使用します。 -
AWS マネジメントコンソールを使用してプロキシを作成するときにオプションの読み取り専用エンドポイントを有効にした場合、このエンドポイントはプロキシ名のプレフィックスが付いた
read-onlyラベルを使用します。my-proxyという名前のプロキシの場合、ラベルはmy-proxy-read-onlyになります。 -
追加のプロキシエンドポイントは、追加のプレフィックスなしでエンドポイント名をラベルとして使用します。
このウィジェットは、各プロキシエンドポイントで処理されるワークロードのボリュームをモニタリングするのに役立ちます。
重要
拡張クエリプロトコルを使用する PostgreSQL 接続でのクエリアクティビティについては、現在、QueryRequests メトリクスは出力されません。
レイテンシー
データベース応答レイテンシー (ターゲット別)
QueryDatabaseResponseLatency プロキシメトリクスに基づくターゲット (データベースインスタンス) ごとのデータベースレスポンスレイテンシー。
このウィジェットは、プロキシ配下の各データベースインスタンスにおけるデータベースレスポンスレイテンシーをモニタリングするのに役立ちます。特に、ワークロードごとに異なるデータベースインスタンスを使用する場合や、インスタンスサイズが均一でない場合に有効です。次の例を考えます。
-
データベースクラスターには複数のリードレプリカが含まれており、そのすべてがプロキシを介してトラフィックを受信します。さらに、一部のレプリカはプロキシをバイパスするクライアントから直接トラフィックを受信します。このウィジェットは、追加のトラフィックがプロキシを介して処理されるワークロードのクエリレイテンシーに影響を与えているかどうかを判断するのに役立ちます。
-
データベースクラスターにはさまざまなサイズのレプリカが含まれており、ワークロード全体がプロキシを介して処理されます。また、データベースインスタンスはデフォルトの接続設定を使用しており、接続制限はインスタンスサイズに比例します。プロキシは接続制限に従い、小規模なインスタンスには比例してより少ない接続を割り当てますが、それらのインスタンスはキャッシュやバッファも小さいため、レイテンシーが高くなる可能性があります。このウィジェットは、それが当てはまるかどうか、およびクエリレイテンシーの点で、小さなインスタンスがより大きなインスタンスに遅れを取らずに処理できているかどうかを判断するのに役立ちます。
接続プール
ピン留めされたデータベース接続 % (ロール別)
各ロールにピン留めされたデータベース接続の割合。DatabaseConnectionsCurrentlySessionPinned を DatabaseConnections で割って計算されます。
このウィジェットは、ワークロードにおける接続ピン留めをモニタリングするのに役立ちます。他のウィジェットと同様に、ピン留めされた接続の絶対数よりも適切なヘルスインジケータとして、相対値が使用されています。理想的な値はゼロですが、すべてのワークロードで接続ピン留めを完全に回避できるとは限りません。接続が他のワークロードに識別可能な影響を与えない限り、接続のごく一部でピン留めが発生することを許容できるかもしれません。ただし、ワークロード全体の大部分でピン留めが発生している場合、RDS Proxy による接続の多重化 (トランザクション間での接続の再利用) を妨げるようなクライアントの動作に問題がある可能性があります。
接続の固定の詳細については、「RDS Proxy の固定の回避」を参照してください。
データベース接続メトリクスをセットアップ (ロール別)
プロキシとデータベース間の接続セットアップの数。セットアップ結果とターゲットロール別に分類されます。ウィジェットには、ロールごとに複数のデータ系列が表示されます。
| ラベル | 説明 | ソース |
|---|---|---|
DatabaseConnectionRequests |
データベース接続の作成リクエストの数。 | RDS Proxy、DatabaseConnectionRequests メトリクス |
DatabaseConnectionsSetupSucceeded |
正常に確立されたデータベース接続の数。 | RDS Proxy、DatabaseConnectionsSetupSucceeded メトリクス |
DatabaseConnectionsSetupFailed |
失敗したデータベース接続リクエストの数。 | RDS Proxy、DatabaseConnectionsSetupFailed メトリクス |
これらのメトリクスのデータポイントは、値が 0 より大きい場合にのみ発行されます。つまり、関連するイベントがない期間には、ウィジェットにギャップが含まれる可能性があります。例えば、クライアントが特定の期間中にプロキシを介してクエリを実行し、プロキシが既存のバックエンドデータベース接続を (新しい接続を開かずに) 再利用することでトラフィック全体を処理できる場合、その期間のデータポイントは表示されません。
このウィジェットは、プロキシとデータベース間のアクティビティと接続チャーンを観察するのに役立ちます。[クライアント接続] ウィジェットに表示される情報と組み合わせることで、プロキシ内の接続プーリングや多重化の効率を評価できます。
RDS Proxy は、接続プール全体を最大容量で事前に割り当てるわけではなく、また、一定期間非アクティブなアイドル状態のデータベース接続を切断することに留意してください。負荷がかかっている際に、DatabaseConnectionRequests が 0 を上回り、変動することは正常ですが、注意が必要なのは DatabaseConnectionRequests と ClientConnectionsReceived との比率です。例えば、次のようになります。
-
クライアントがプロキシに対して一定数の接続を開き、プロキシが各期間にほぼ同数のデータベースへの接続を開く場合、固定などの理由でプロキシが接続を再利用できていない可能性があります。この状況では、プロキシが接続を再利用できないようにしているクライアントの動作に焦点を当てて、さらに調査が必要になる場合があります。
-
クライアントがプロキシへの一定数の接続を開いているにもかかわらず、新しいデータベース接続がその数のごく一部にすぎない場合、プロキシが既存の接続を再利用することでトラフィックの大部分を処理していることを示しています。これは、接続プールの通常の望ましい状態です。
データベース接続メトリクスをセットアップ (ターゲット別)
データベース接続メトリクスをセットアップ (ロール別) に相当するもので、ターゲット (データベースインスタンス)ごとにデータを内訳表示したものです。
データベース接続の使用状況
データベース接続の使用状況 % (ターゲット別)
各ターゲット (データベースインスタンス) におけるプロキシの接続プールの使用率。DatabaseConnections を MaxDatabaseConnectionsAllowed で割って計算されます。
このウィジェットは、データベース接続の使用状況 % (ロール別) と似ていますが、各データベースインスタンスの接続使用率を詳細に表示します。これは、複数のインスタンスを持つデータベースクラスターで、READ_ONLY ロールへの接続が公平に分散されているかを検証するのに役立ちます。
例えば、2 つのリーダーを持ち、リーダーあたりの MaxDatabaseConnectionsAllowed が 500 に設定されている Aurora クラスターがあるとします。プロキシ接続の数が最初のリーダーで 100、2 番目のリーダーで 125 の場合、ウィジェットには最初のリーダーで 20%、2 番目のリーダーで 25% の接続使用率が表示されます。
注記
RDS Proxy は、データベースの接続制限に基づいて重み付けを行い、各レプリカのクライアント接続の数を均等化しようとします。CPU 使用率などのデータベースメトリクスに基づいてトラフィックを負荷分散することはなく、各クライアントセッションが開始された後、それがどのくらい続くかを把握することもありません。その結果、インスタンス間の接続使用率のわずかな不均衡は、通常の現象です。
データベース接続の使用状況 (READWRITE/READ_ONLY ロール別)
プロキシとデータベースが使用および許可するデータベース接続の数。このタイプのウィジェットは 2 つあります。1 つは READWRITE ロール用、もう 1 つは READ_ONLY ロール用です。
このウィジェットは、プロキシのデータベースターゲットが READ_ONLY ロールをサポートしている場合にのみ表示されます。これには Aurora DB クラスターと Amazon RDS マルチ AZ DB クラスターのデプロイが含まれます。Amazon RDS DB インスタンスのデプロイでは、ウィジェットは表示されません。
各ウィジェットには、複数のデータ系列が含まれています。
| ラベル | 説明 | ソース |
|---|---|---|
Database Connections |
プロキシまたは他のクライアントによって開かれたかどうかにかかわらず、データベースに存在する接続の数。 | データベース、DatabaseConnections メトリクス |
Database Connections: proxy |
RDS Proxy がデータベースのモニタリングに使用する内部接続を除く、プロキシとデータベースの間に存在するデータベース接続の数。 | RDS Proxy、DatabaseConnections メトリクス |
MaxDatabaseConnectionsAllowed: Proxy |
MaxConnectionsPercent 設定によって制御される、プロキシによって許可されるデータベース接続の最大数。 |
RDS Proxy、MaxDatabaseConnectionsAllowed メトリクス |
表示される数値は、プロキシと基盤となるデータベースクラスターの合計値です。例えば、データベースクラスターにそれぞれ 1,000 の接続を許可する 2 つのインスタンスが含まれており、プロキシの MaxConnectionsPercent が 20 に設定されているとします。このシナリオでは、MaxDatabaseConnectionsAllowed: Proxy は 2 * 1000 * 20% = 400 から、モニタリング目的で RDS Proxy によって内部的に予約された接続の数を減算したものになります。実際の値は 400 未満となり、プロキシ内のノード数によって異なります。
このウィジェットは、以下の場合に最も役立ちます。
-
プロキシとデータベースの絶対接続使用率の数値をモニタリングします。
-
プロキシ経由でデータベースに到達する接続数と、プロキシをバイパスする接続数を特定します。
-
現在の接続使用率と最大許容使用率との差を計算します。
注記
DatabaseConnections の値は、すべてのクライアント接続がプロキシを介して処理される場合でも、Database Connections: Proxy よりも大きくなります。RDS プラットフォームと RDS Proxy インフラストラクチャによって維持される内部接続は常に多数あります。これらの接続はデータベースによってカウントされますが、プロキシメトリクスには反映されません。