👌

App Service に負荷をかけてモニタリングしてみる

2022/12/20に公開

はじめに

Azure App Service に負荷をかけた際のApp Service Plan(以下ASP) の CPU percentage をモニタリングしようと思います。負荷については stress ツールを使用して負荷をかけていきます。

環境

  • Web App for Container
  • OS: Linux
  • location: japaneast
  • ASP: P1V2

準備

  1. Resource group 作成
az group create --l ●location● -n ●resource_group_name●
  1. ASP 作成
az appservice plan create \
    --name ●app_service_plan_name● \
    --resource-group ●resource_group_name● \
    --sku ●sku● \
    --is-linux
  1. Web App for container 作成
    webappに関しては今回は立てるだけでいいので、ポータルより、基本的にデフォルトの設定で作成します。
  • リソースグループ: 上記で作成したリソースグループ
  • 名前: 適当
  • 公開: Docker コンテナー (コードにしても問題ない)
  • OS: Linux
  • 地域: japaneast (ほかでも問題ない)
  • 価格プラン: 上記で作成したプラン

検証

負荷は、App Service -> 開発ツール -> SSH でSSHにアクセスして、 stressツールをインストールし、stressコマンドによりCPUに負荷をかけていきます。

apt install -y stress

cpu 負荷をかけるのに、コア数を調べる必要があるので、以下のコマンドで、コア数を調べる。

fgrep 'physical id' /proc/cpuinfo | sort -u | wc -l

次に、上記コマンドコア数を調べてどれくらいの負荷にしたいかを stress コマンドで決定します。今回は負荷をかけたときにどうなるか検証のため、cpu使用率を100%にします。

stress --cpu 1

stress command

これで準備はできたので、モニタリングしていきます。モニタリングは Azure Monitorを使用しているので、Azure Monitor サービスから 該当の App Service Plan を選択して、モニタリングするか、 App Service Plan のリソースに 監視 -> メトリックでモニタリングします。

インスタンス数 1つ の場合

instance1

monitoring1

負荷をかける前と後で、切り替わっているのがわかるかと思います。モニタリングの仕様として、メトリックはデフォルトで1分感覚でリソースから取得しています。こちらを参照ください。

また、CPU Percentage(平均)とCPU Percentage(最大値)の値が異なりますが、こちらは、右上の時間の範囲により変化します。こちらの変化は右上の時間の範囲を変更していただければ平均値と最大値も変更されてきます。例えば、時間範囲を30分にしたとき、CPU使用率が10分間10%で、20分100%だったとします。その時、最大値は 100% で 平均値は 70%(10+100+100/3) となります。

インスタンス数 3つ の場合

instance3

上記のインスタンスに手動でインスタンス数を3つにしてみます。App Service -> 設定 -> スケールアウト で手動スケールでインスタンス数を 3にして保存をします。インスタンスが増えたかどうかを確認するために、問題と診断と解決Advanced Application restartと検索すると、今立ち上がっているインスタンスが表示されます。

スケールアウト後に再度App Service Planのメトリックに戻ると、以下のように最大値は変化がありませんが、平均値はインスタンスの平均の値になっていると思います。

App Service PlanCPU percentageメトリックの概要は以下を参照してください。

https://learn.microsoft.com/ja-jp/azure/app-service/web-sites-monitor#understand-metrics

https://learn.microsoft.com/ja-jp/azure/app-service/web-sites-monitor#cpu-time-vs-cpu-percentage

おわりに

今回は、App Service planのメトリックについて簡単にモニタリングしました。モニタリングのグラフから値の見方についてはこんな感じになります。

今回作成に使用したドキュメントです。詳細についてはこちらをお読みいただければと思います。

App Serviceの監視

https://learn.microsoft.com/ja-jp/azure/app-service/monitor-app-service

Azure Monitor の概要

https://learn.microsoft.com/ja-jp/azure/azure-monitor/overview

Discussion