[アップデート] AWS App Runnerで同時実行数(Concurrency)のメトリクスを取得可能になりました

[アップデート] AWS App Runnerで同時実行数(Concurrency)のメトリクスを取得可能になりました

Clock Icon2023.02.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

先日AWSより「AWS App Runnerで幾つかのCloudWatch Metricsを追加した」旨のアナウンスがありました。

https://aws.amazon.com/about-aws/whats-new/2023/02/aws-app-runner-concurrency-cpu-memory-utilization-metrics/

内容自体はシンプルなのですが、上記アナウンスだと少しわかりにくい部分があったので本記事で補足しておきます。

更新内容

今回の更新はGitHubで公開されているロードマップのうち以下の2つに対応した結果となります。

アナウンスよりロードマップをベースに説明する方が分かりやすいので順に解説していきます。

1. 同時実行数(Concurrency)の追加

App Runnerは同時実行数(Concurrency)に応じたオートスケールが可能ですが、この同時実行数に対するメトリクスはこれまでありませんでした。

今回の更新でApp Runnerサービス単位の同時実行数(Concurrency)がCloudWatch Metricsに記録される様になります。
これによりサービスの負荷状況に対する監視やオートスケール設定の見直のための参考値として使うことが可能になりました。

個人的には「どうして今まで存在してなかったんだ?」って位重要なメトリクスだと思うので素直に嬉しいですね。

2. サービス単位のCPU使用率、メモリ使用量の追加

次に、従来のApp RunnerではCPU使用率(CPUUtilization)とメモリ使用量(MemoryUtilization)はインスタンス毎にしか取得できなかったのですが、今回の更新によりサービス単位のCPU使用率(CPUUtilization)とメモリ使用量(MemoryUtilization)も記録される様になりました。

こちらは分かりやすい内容ですね。

現在取得可能なメトリクス一覧

上記内容をふまえ、本日時点でApp Runnerで取得可能なメトリクス一覧は以下の通りとなります。

インスタンス単位のメトリクス

種別 メトリクス名 内容
CPU使用率 CPUUtilization 1分当たりの平均CPU使用率 (%)
メモリ使用量 MemoryUtilization 1分当たりの平均メモリ使用量 (MByte)

インスタンス単位のメトリクスは従来通り変わりありません。

サービス単位のメトリクス

種別 メトリクス名 内容
NEW! CPU使用率 CPUUtilization 1分当たりの平均CPU使用率 (%)
NEW! メモリ使用量 MemoryUtilization 1分当たりの平均メモリ使用量 (MByte)
NEW! 同時実行数 Concurrency サービス全体の同時実行数 (近似値)
HTTPリクエスト数 Requests サービスに対するHTTPリクエスト数
HTTPレスポンス 2xxStatusResponses
4xxStatusResponses
5xxStatusResponses
ステータスコード別のレスポンス数
HTTPレイテンシー RequestLatency HTTPアクセスに対するレイテンシー (ミリ秒)
インスタンス数 ActiveInstances アクティブなインスタンス数 (※HTTPリクエストが無い場合は非アクティブとして扱われるため、起動インスタンス数では無いので注意)

AWSのアナウンスで

With the newly added metrics, you can now view 7 service level metrics

と記述されているのはあくまでも「7種類」のメトリクスであり、実際のメトリクス数としては「9つ」あるのでご注意ください。
(この点に気が付くのにしばらく時間がかかりました...)

確認してみた

ここからは実際の環境で確認していきます。

以前の記事で作成した環境に適当に負荷を掛けてメトリクスを記録しています。

マネジメントコンソールからApp Runnerサービスを選択し、「メトリクス」タブを選ぶとサービス単位の各メトリクスを参照できます。

このタブの一番下に新しくCPUUtilizationMemoryUtilizationConcurrencyが追加されています。

適当に負荷をかけているので上図の具体的な値そのものに意味はありません。
重要なのは、デフォルトではそれぞれ

  • CPUUtilization : 1分単位の平均値
  • MemoryUtilization : 1分単位の平均値
  • Concurrency : 1分単位の最大値

を表示している点となります。
単位時間や統計処理を変えたい場合は従来通りグラフを拡大して変更してください。

もちろんCloudWatch側から各種メトリクスを参照することも可能です。

(サービス単位のメトリクスとインスタンス単位のメトリクスを併せて表示)

余談 : App Runnerの「同時実行」に関して

App Runnerの同時実行の考え方については以下の記事が参考になるのでここで紹介しておきます。

https://nathanpeck.com/concurrency-compared-lambda-fargate-app-runner/

最後に

簡単ですが以上となります。
本記事の内容が皆さんの役に立てば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.