Amazon Aurora Serverless v2で監視すべきCloudWatchメトリクス

2022.05.10

Amazon Aurora Serverless v2は最大・最小キャパシティを指定すると、負荷に応じてキャパシティがオートスケールします。

インスタンスサイズを明示的に指定するプロビジョン型ほど慎重にサイジングする必要はありませんが、最大・最小キャパシティが適切かメトリクスを確認する必要があります。

そのような用途に使えるメトリクスを紹介します。

Aurora Serverless v2を監視・サイジングする上で注意すべきこと

インスタンスごとにメトリクスを取得可能

Amazon Aurora Serverless v1はクラスター単位で作成しましたが、 Amazon Aurora Serverless v2はDBインスタンス単位で作成します。

そのため、Serverlessの各種メトリクスは、クラスター単位だけでなく、DBインスタンス単位でも取得できます。

ACUの指定はクラスター単位

Amazon Aurora Serverless v2インスタンスがスケールする最大・最小キャパシティ(Aurora Capacity Unit;ACU)はクラスター単位で指定します。

クラスター内に、読み書き、読み取り専用、分析用など様々なロールのインスタンスが存在する場合、ロールを横断した最大・最小ACUを指定してください。

監視すべきCloudWatch メトリクス

Amazon Aurora Serverless v2で監視すべきメトリクス一覧は次のドキュメントにまとめられています。

Important Amazon CloudWatch metrics for Aurora Serverless v2

多くのスケールアップはメモリー・CPUリソースがトリガーのため、まずは関連するメトリクスをおさえましょう。

ServerlessDatabaseCapacity

クラスター平均・DBインスタンス単位のACUです。

2台のServerlessインスタンスで構成されるクラスターがあり、インスタンス単位の ServerlessDatabaseCapacity

  • インスタンス1:4.5
  • インスタンス2:0.5

の場合、クラスター単位の ServerlessDatabaseCapacity

  • (4.5+0.5)/2 = 2.5

となります。

ACUUtilization

クラスターに割り当てられた最大ACUに対する ACU の使用率です。

このメトリクスが100%に近い場合、キャパシティが足りないことを意味します。

  • インスタンスの ServerlessDatabaseCapacity が 4.5
  • クラスターの最大ACUが64

の場合、インスタンス単位の ACUUtilization

  • (4.5/64) = 0.0703125 = 7.0%

となります。

この値が100%に近い場合、最大ACUが足りていないことを意味します。

最大ACUを増やしたり、データベースのチューニングを実施しましょう。

また、キャパシティ不足に気付けるよう、このメトリクスには CloudWatch アラームを設定しましょう。

このメトリクスからは、最大ACUに対してACUがどのくらい余裕があるのかはわかりますが、どのリソースが不足しているのかは教えてくれません。

この情報を手助けしてくれるのが、以下の

  • CPUUtilization
  • FreeableMemory

です。

CPUUtilization

最大ACUに割り当てられるCPUリソースに対する CPU の使用率です。

CPUUtilizationServerlessDatabaseCapacity をプロットすると、CPUリソースの利用に連動して、ACUも小刻みに変動していることがわかります。

このメトリクスが100%に近い場合、クラスターに割り当てた最大ACUではCPUのキャパシティが足りていないことを意味します。

ACUUtilization が100%にもかかわらず、CPUUtilization に余裕がある場合、CPU以外のリソースを大量に消費していることを意味します。

FreeableMemory

最大ACUに割り当てられるメモリーリソースに対する空きメモリ量です。

1ACUあたり 2GiB のメモリーが割り当てられます。

最大ACUを64に設定し、メモリーを持て余している場合、キャプチャのように最大ACUに対応するメモリー(2 GiB/ACU * 64 ACU = 128 GiB)に近い値を推移します。

このメトリクスが0に近い場合、クラスターに割り当てた最大ACUではメモリーのキャパシティが足りていないことを意味します。

その他のメトリクス

余裕がある場合は、以下のメトリクスも監視しましょう。

  • TempStorageIops
  • TempStorageThroughput
  • NetworkReceiveThroughput
  • NetworkThroughput
  • NetworkTransmitThroughput
  • StorageNetworkReceiveThroughput
  • StorageNetworkThroughput
  • StorageNetworkTransmitThroughput

まとめ

Aurora Serverlessのスケールアップの多くはCPU/メモリーがトリガーのため、まずはこれらに関連するメトリクスをおさえましょう。

Aurora Serverless v2の粒度はDBインスタンスのため、Serverless固有のメトリクスはDBインスタンス単位でも取得可能です。

キャパシティのレンジはクラスター単位で指定します。

ACUUtilization はACUの利用状況を表すメトリクスです。 全Serverlessインスタンスでこのメトリクスを監視し、最大ACUに余裕があること、つまり、100% に近い値を取らないことを監視してください。

参照