Amazon CloudWatch メトリクスを使用して Aurora PostgreSQL のリソース使用状況を分析する
Aurora はメトリクスデータを 1 分間隔で CloudWatch に自動的に送信します。CloudWatch メトリクスを使用して Aurora PostgreSQL のリソース使用状況を分析することができます。メトリクスを使用して、ネットワークのスループットとネットワーク使用量を評価できます。
CloudWatch によるネットワークスループットの評価
システム使用量がインスタンスタイプのリソース限界に近づくと、処理が遅くなることがあります。CloudWatch の [Logs Insights] (ログのインサイト) を使用して、ストレージリソースの使用状況をモニタリングし、十分なリソースが使用可能であることを確認できます。必要に応じて、DB インスタンスをより大きなインスタンスクラスに変更できます。
Aurora ストレージの処理は、次の理由で遅くなることがあります。
-
クライアントと DB インスタンス間のネットワーク帯域幅が不十分です。
-
ストレージサブシステムへのネットワーク帯域幅が不十分です。
-
ご使用のインスタンスタイプでは大きいワークロード。
CloudWatch の [Logs Insights] (ログのインサイト) にクエリを実行して、Aurora ストレージリソースの使用状況のグラフを生成し、リソースを監視できます。グラフには CPU 使用率とメトリクスが表示され、より大きなインスタンスサイズにスケールアップするかどうかの判断に役立ちます。CloudWatch [Logs Insights] (ログのインサイト) のクエリ構文の詳細については、「CloudWatch Logs Insights クエリ構文」を参照してください。
CloudWatch を使用するには、Aurora PostgreSQL ログファイルを CloudWatch にエクスポートする必要があります。既存のクラスターを変更して、ログを CloudWatch にエクスポートすることもできます。 ログを CloudWatch にエクスポートする方法については、「Amazon CloudWatch にログを発行するオプションをオンにする」を参照してください。
CloudWatch [Logs Insights] (ログのインサイト) にクエリを実行するには、DB インスタンスの [Resource ID] (リソース ID) が必要です。[Resource ID] (リソース ID) は、コンソールの [Configuration] (設定) タブで確認できます。
ログファイルにリソースストレージメトリクスを照会するには:
CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/
) を開きます。 CloudWatch 概要のホームページが表示されます。
-
必要に応じて AWS リージョン を変更します。ナビゲーションバーで、AWS リソースがある AWS リージョン を選択します。詳細については、「 リージョンとエンドポイント」を参照してください。
-
ナビゲーションペインで、[Logs] (ログ)、[Logs Insights] (ログのインサイト) の順に選択します。
[Logs Insights] (ログのインサイト) ページが表示されます。
-
ドロップダウンリストから、分析するログファイルを選択します。
-
フィールドに次のクエリを入力します。
<resource ID>
を DB クラスターのリソース ID に置き換えてください。filter @logStream = <resource ID> | parse @message "\"Aurora Storage Daemon\"*memoryUsedPc\":*,\"cpuUsedPc\":*," as a,memoryUsedPc,cpuUsedPc | display memoryUsedPc,cpuUsedPc #| stats avg(xcpu) as avgCpu by bin(5m) | limit 10000
-
[Run query] (クエリを実行) をクリックします。
ストレージ使用率グラフが表示されます。
次の画像は、[Logs Insights] (ログのインサイト) ページとグラフ表示を示しています。
CloudWatch メトリクスで DB インスタンスの使用状況を評価する
CloudWatch メトリクスを使用して、インスタンスのスループットを監視し、インスタンスクラスがアプリケーションに十分なリソースを提供しているかどうかを確認できます。DB インスタンスクラスの制限については、Aurora 用の DB インスタンスクラスのハードウェア仕様 に移動し、DB インスタンスクラスの仕様を確認して、ネットワークパフォーマンスを確認してください。
DB インスタンスの使用量がインスタンスクラスの限界に近い場合、パフォーマンスが低下し始める可能性があります。CloudWatch メトリクスによってこの状況を確認できるので、より大きなインスタンスクラスへの手動スケールアップを計画できます。
以下の CloudWatch メトリクス値を組み合わせて、インスタンスクラスの限界に近づいているかどうかを確認します。
-
NetworkThroughput - Aurora DB クラスター内の各インスタンスについて、各クライアントによって送受信されたネットワークスループットの量。このスループット値には、DB クラスターとクラスターボリューム内のインスタンス間のネットワークトラフィックは含まれません。
-
StorageNetworkThroughput – Aurora DB クラスター内の各インスタンスによって Aurora ストレージサブシステムとの間で送受信されたネットワークスループットの量。
NetworkThroughput を StorageNetworkThroughput に加えると、Aurora DB クラスター内の各インスタンスによって Aurora ストレージサブシステムとの間で送受信されたネットワークスループットになります。インスタンスのインスタンスクラス限界は、この 2 つのメトリクスの合計よりも大きい必要があります。
以下のメトリクスを使用して、送受信時のクライアントアプリケーションからのネットワークトラフィックの詳細を確認できます。
-
NetworkReceiveThroughput – Aurora PostgreSQL DB クラスター内の各インスタンスがクライアントから受信したネットワークスループットの量。 DB クラスターとクラスターボリューム内のインスタンス間のネットワークトラフィックは、このスループットに含まれません。
-
NetworkTransmitThroughput – Aurora DB クラスター内の各インスタンスが各クライアントに送信したネットワークスループットの量。 DB クラスターとクラスターボリューム内のインスタンス間のネットワークトラフィックは、このスループットに含まれません。
-
StorageNetworkReceiveThroughput – DB クラスター内の各インスタンスが Aurora ストレージサブシステムから受信したネットワークスループットの量。
-
StorageNetworkTransmitThroughput – DB クラスター内の各インスタンスが Aurora ストレージサブシステムに送信したネットワークスループットの量。
これらすべてのメトリクスを合計して、ネットワーク使用量とインスタンスクラスの限界との比較を評価します。インスタンスクラス限界は、これらのメトリクスの合計よりも大きい必要があります。
ネットワーク限界とストレージの CPU 使用率は相互に関係しています。ネットワークのスループットが増加すると、CPU 使用率も増加します。CPU とネットワークの使用状況を監視すると、リソースがどのくらい枯渇しているのか、またなぜ枯渇しているのかについての情報が得られます。
ネットワークの使用量を最小限に抑えるには、次のことを検討してください。
-
より大きなインスタンスクラスを使用します。
-
pg_partman
パーティショニング戦略を使用します。 -
書き込みリクエストをバッチに分割して、トランザクション全体を減らします。
-
読み取り専用ワークロードを読み取り専用インスタンスに転送します。
-
未使用のインデックスをすべて削除します。
-
膨張したオブジェクトと VACUUM をチェックします。膨張がひどい場合は、PostgreSQL 拡張機能
pg_repack
を使用します。pg_repack
の詳細については、「最小限のロックで PostgreSQL データベース内のテーブルを再編成する」を参照してください。