App Service に負荷をかけてモニタリングしてみる
はじめに
Azure App Service に負荷をかけた際のApp Service Plan(以下ASP) の CPU percentage
をモニタリングしようと思います。負荷については stress
ツールを使用して負荷をかけていきます。
環境
- Web App for Container
- OS: Linux
- location: japaneast
- ASP: P1V2
準備
- Resource group 作成
az group create --l ●location● -n ●resource_group_name●
- ASP 作成
az appservice plan create \
--name ●app_service_plan_name● \
--resource-group ●resource_group_name● \
--sku ●sku● \
--is-linux
- 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
これで準備はできたので、モニタリングしていきます。モニタリングは Azure Monitor
を使用しているので、Azure Monitor
サービスから 該当の App Service Plan
を選択して、モニタリングするか、 App Service Plan
のリソースに 監視 -> メトリック
でモニタリングします。
インスタンス数 1つ の場合
負荷をかける前と後で、切り替わっているのがわかるかと思います。モニタリングの仕様として、メトリックはデフォルトで1分感覚でリソースから取得しています。こちらを参照ください。
また、CPU Percentage(平均)とCPU Percentage(最大値)の値が異なりますが、こちらは、右上の時間の範囲により変化します。こちらの変化は右上の時間の範囲を変更していただければ平均値と最大値も変更されてきます。例えば、時間範囲を30分にしたとき、CPU使用率が10分間10%で、20分100%だったとします。その時、最大値は 100%
で 平均値は 70%
(10+100+100/3) となります。
インスタンス数 3つ の場合
上記のインスタンスに手動でインスタンス数を3つにしてみます。App Service -> 設定 -> スケールアウト
で手動スケールでインスタンス数を 3
にして保存をします。インスタンスが増えたかどうかを確認するために、問題と診断と解決
でAdvanced Application restart
と検索すると、今立ち上がっているインスタンスが表示されます。
スケールアウト後に再度App Service Plan
のメトリックに戻ると、以下のように最大値は変化がありませんが、平均値はインスタンスの平均の値になっていると思います。
App Service Plan
のCPU percentage
メトリックの概要は以下を参照してください。
おわりに
今回は、App Service planのメトリックについて簡単にモニタリングしました。モニタリングのグラフから値の見方についてはこんな感じになります。
今回作成に使用したドキュメントです。詳細についてはこちらをお読みいただければと思います。
App Serviceの監視
Azure Monitor の概要
Discussion