AWS Aurora Serverless v2を導入・運用している話〜運用(メトリクス)編〜
こんにちは!Life is Tech! インフラ/SREグループのふ〜みんです。
もう年末ですね…前回のAWS Aurora Serverless v2 導入編からかなり間が空いてしまいました…
*この記事から入って来た方は、前回の導入編の記事から読んで頂けると読みやすいかなと思います!
色々と立て込んでおりまして、同じSREチームのあさっちやぎだじゅんがNoteあげていくのを申し訳なく思いながら、年内には自分もこれを書き上げるぞ、という意気込みで望んでおります!
さて、気を取り直して運用(メトリクス)編、進めていきたいと思います!
Aurora Serverless v2で確認すべきメトリクス
Aurora Serverless v2ではACUという概念でコンピューターリソースが定義されるが故に「で、メトリクス、何見ればええのん?」となりがちです。
*僕はなりました…🥲
こちらもAWSのドキュメントを確認していきましょう。「Aurora Serverless v2 の重要な Amazon CloudWatch メトリクス」として公開されています!
基本的にメトリクスは普段の健康状態を確認するものですが、ここでは、下記の6つが重要指標として示されています。
ServerlessDatabaseCapacity
ACUUtilization
CPUUtilization
FreeableMemory
TempStorageIops
TempStorageThroughput
ただし、Auroraのスケーリングに関しては、CPUやメモリの使用率に依存する場合がほとんどであり、ストレージ周りが原因でスケールすることは稀なケースとされているので、基本的にはServerlessDatabaseCapacity、ACUUtilization、CPUUtilization、FreeableMemoryの4つを健康指標として見れれば良いかなと思います。
それでは、この4つの項目をそれぞれ見ていきましょう。
ServerlessDatabaseCapacity
これは現在のACU値です。Serverless v2のインスタンスを作成する際、ACUの範囲を下記のような画面で指定していると思うので、この範囲のどのあたりの値を指しているかを見ておくと良いです。
ACUUtilization
名前のままですが、ACUの使用率です。使用率は
$$
ACUUtilization = \frac{ServerlessDatabaseCapacity} {最大ACU値}
$$
として算出されています。例えば、この値が定期的に90%を超えるようなことが多い場合にはACUの上限値を引き上げた方がいいです。ACUの上限値をあげても、その値でリソースを使用しない限り課金されることはないので、安心して幅ひろめに取っちゃってもいいかなと思います。
ACUUtilizationに閾値を設けアラートを設定しても良いかとは思いますが、、一瞬上がっただけでアラートが飛んできたとしても特に取れるアクションがないような場合も考えられます。(そもそもスパイクアクセスが多い場合に採用している事が多いと思いますので…
このあたりは用途に応じてアラートの飛ばし方を考えた方がいいかなと思います。
CPUUtilization
これ日本語で書くとややこしいのですが、
$$
CPUUtilization = \frac{CPU使用量}{最大 ACU 値で使用可能な CPU 容量}
$$
になります。ただ、そこまでややこしく考えなくて良くて、普通のAuroraインスタンスで利用しているCPU使用率をAurora Serverless に適応させたと考えるだけで大丈夫です。
ではACUUtilizationとの相関はどんな感じになるのか気になるところだと思いますので、ある日の同じ時間帯でのACUUtilizationとCPUUtilizationのメトリクスを載せてみます。
基本的にはほぼ同様の形をとりますが、赤枠の時間帯だけACUUtilizationが上がっているかと思います。この時間帯に関してはネットワーク流量が多かったため、ACU値が上がったのだと思われますが、このDBの場合、ACUの上限値を大きな値にしていない(10以下)ため大袈裟気味に見えている感じです😅
FreeableMemory
最大ACU値になった場合に利用できるメモリの未使用量になります。ここも基本的にはACUの方が先にスケールするので、メトリクスは取っておき、ACUUtilizationが上がって来た際に、CPUUtilizationと併せて参照するようにすると良いかなと思います。
まとめ
Aurora Serverless v2 のメトリクスについてまとめてみました。Aurora Serverless はACUという独自の概念があることで少し戸惑いがちですが、メトリクスの主要項目の内容を抑えておけばそこまで混乱することなく運用できると思います。
少しでもこの記事が参考になると幸いです!
ライフイズテック サービス開発部では、月毎に気軽にご参加いただけるカジュアルなイベントを実施しています。開催予定のイベントは、 connpass のグループからご確認ください。興味のあるイベントがあったらぜひ参加登録をお願いいたします。皆さんのご参加をお待ちしています!