Azure App Service のアプリの監視

Azure App Service には、Azure portal の Web アプリ、モバイル、および API アプリに対する組み込みの監視機能が用意されています。

Azure portal では、アプリや App Service プランの "クォータ" と "メトリック" を確認したり、"アラート" および "自動スケーリング" ルール ベースのメトリックを設定したりすることができます。

クォータを理解する

App Service にホストされているアプリは、使用できるリソースに一定の制限があります。 この制限は、アプリに関連付けられている App Service プランによって定義されます。

Note

App Service の Free および Shared (プレビュー) サービス プランは、他の App Service アプリと同じ Azure 仮想マシンで稼働する基本レベルです。 一部のアプリは他のお客様に属する場合もあります。 これらのレベルは、開発とテストのみを目的としています。

アプリが Free プランまたは Shared プランでホストされている場合、アプリで使用できるリソースの制限はクォータによって定義されます。

アプリが Basic プラン、Standard プラン、Premium プランでホストされている場合、アプリで使用できるリソースの制限は、App Service プランのサイズ (S、M、L) とインスタンス数 (1、2、3 など) によって設定されます。

Free アプリまたは Shared アプリのクォータは、次のようになります。

Quota 説明
CPU (ショート) このアプリが 5 分間に使用できる CPU の量。 このクォータは、5 分ごとにリセットされます。
CPU (1 日) このアプリが 1 日に使用できる CPU の総量。 このクォータは、24 時間ごとに (UTC の午前 0 時に) リセットされます。
[メモリ] このアプリが使用できるメモリの総量。
帯域幅 このアプリが 1 日に使用できる送信帯域幅の総量。 このクォータは、24 時間ごとに (UTC の午前 0 時に) リセットされます。
ファイルシステム 使用可能なストレージの総量。

BasicStandardPremium でホストされているアプリに適用できるクォータは、ファイルシステムのみです。

さまざまな App Service SKU で利用できる特定のクォータ、制限、機能について詳しくは、Azure サブスクリプション サービスの制限に関するページをご覧ください。

クォータの適用

アプリが CPU (ショート)CPU (1 日)帯域幅のクォータを超過すると、クォータがリセットされるまでアプリは停止されます。 この期間中は、すべての受信要求の結果が HTTP 403 エラーになります。

403 エラー メッセージ

アプリのメモリ クォータを超えた場合は、アプリが一時的に停止されます。

ファイルシステム クォータを超えた場合は、ログへの書き込みも含み、 すべての書き込み操作が失敗することになります。

クォータを引き上げたりアプリから削除したりするには、App Service プランをアップグレードしてください。

メトリックを理解する

重要

平均応答時間は、メトリック集計との混同を避けるために非推奨です。 代わりに応答時間を使用してください。

Note

アプリのメトリックには、そのアプリの SCM サイト (Kudu) に対する要求が含まれます。 これには、Kudu を使用してサイトの logstream を表示する要求が含まれます。 logstream 要求は数分間にわたる可能性があり、要求時間メトリックに影響を与えます。 これらのメトリックを自動スケーリング ロジックで使用する場合、ユーザーはこの関係に注意する必要があります。

Http サーバー エラーは、バックエンド サービス (アプリをホストするワーカー) に到達する要求のみを記録します。 FrontEnd で要求が失敗した場合、要求は Http サーバー エラーとして記録されません。 正常性チェック機能/Application Insights 可用性テストは、監視の外部で使用できます。

メトリックを利用すると、アプリまたは App Service プランの動作に関する情報が得られます。

アプリについて利用できるメトリックには、次のものがあります。

メトリック 説明
応答時間 アプリが要求に応答するのに要した時間 (秒単位)。
平均応答時間 (非推奨) アプリが要求に応答するのに要した平均時間 (秒単位)。
平均メモリ ワーキング セット アプリで使用された平均メモリ量 (メガバイト (MiB))。
接続 サンドボックス内に存在するバインドされたソケットの数 (w3wp.exe とその子プロセス)。 バインドされたソケットは、bind()/connect() API の呼び出しによって作成され、対象のソケットが CloseHandle()/closesocket() で閉じられるまで残っています。
CPU 時間 アプリで消費された CPU の量 (秒)。 このメトリックについて詳しくは、「CPU 時間と CPU の割合」をご覧ください。
現在のアセンブリ このアプリケーション内のすべての AppDomain で読み込まれたアセンブリの現在の数。
受信データ アプリで消費された受信帯域幅の量 (MiB)。
送信データ アプリで消費された送信帯域幅の量 (MiB)。
ファイル システムの使用量 ストレージ共有別の使用量 (バイト単位)。
Gen 0 ガベージ コレクション アプリ プロセスが開始されてからジェネレーション 0 オブジェクトがガベージ コレクションされた回数。 上位のジェネレーションの GC には、下位のジェネレーションの GC がすべて含まれます。
Gen 1 ガベージ コレクション アプリ プロセスが開始されてからジェネレーション 1 オブジェクトがガベージ コレクションされた回数。 上位のジェネレーションの GC には、下位のジェネレーションの GC がすべて含まれます。
Gen 2 ガベージ コレクション アプリ プロセスが開始されてからジェネレーション 2 オブジェクトがガベージ コレクションされた回数。
ハンドルの数 アプリ プロセスによって現在開かれているハンドルの合計数。
正常性チェックの状態 App Service プラン内のアプリケーションのインスタンス全体にわたる平均的な正常性状態。
HTTP 2xx 200 以上 300 未満の HTTP 状態コードが結果として返された要求の数。
HTTP 3xx 300 以上 400 未満の HTTP 状態コードが結果として返された要求の数。
HTTP 401 HTTP 401 状態コードが結果として返された要求の数。
HTTP 403 HTTP 403 状態コードが結果として返された要求の数。
HTTP 404 HTTP 404 状態コードが結果として返された要求の数。
HTTP 406 HTTP 406 状態コードが結果として返された要求の数。
HTTP 4xx 400 以上 500 未満の HTTP 状態コードが結果として返された要求の数。
HTTP サーバー エラー 500 以上 600 未満の HTTP 状態コードが結果として返された要求の数。
IO その他のバイト/秒 アプリ プロセスがデータを含まない I/O 操作 (制御操作など) にバイトを発行している速度。
IO その他の操作/秒 アプリ プロセスが読み取りまたは書き込み操作ではない I/O 操作を発行している速度。
IO 読み取りバイト/秒 アプリ プロセスが I/O 操作からバイトを読み取っている速度。
IO 読み取り操作/秒 アプリ プロセスが読み取り I/O 操作を発行している速度。
IO 書き込みバイト/秒 アプリ プロセスが I/O 操作にバイトを書き込んでいる速度。
IO 書き込み操作/秒 アプリ プロセスが書き込み I/O 操作を発行している速度。
メモリ ワーキング セット アプリで使用されている現在のメモリ量 (MiB)。
プライベート バイト プライベート バイトは、アプリ プロセスによって割り当てられた、他のプロセスとは共有できないメモリの現在のサイズ (バイト単位) です。
要求数 結果として返された HTTP 状態コードを問わない、要求の合計数。
アプリケーション キュー内の要求数 アプリケーション要求キュー内の要求の数。
スレッド数 アプリ プロセス内で現在アクティブなスレッドの数。
アプリ ドメイン合計数 現在このアプリケーションに読み込まれている AppDomain の数。
アンロード済みのアプリ ドメイン合計数 アプリケーションの開始以降にアンロードされた AppDomain の合計数。

App Service プランについて利用できるメトリックには、次のものがあります。

Note

App Service プランのメトリックは、BasicStandardPremiumIsolated の各レベルのプランでのみ使用できます。

メトリック 説明
CPU の割合 プランの全インスタンスで使用された平均 CPU。
メモリの割合 プランの全インスタンスで使用された平均メモリ。
受信データ プランの全インスタンスで使用された平均受信帯域幅。
送信データ プランの全インスタンスで使用された平均送信帯域幅。
ディスク キューの長さ ストレージのキューに登録された読み取り要求と書き込み要求の平均数。 ディスク キューが長いときは、過剰なディスク I/O のためにアプリの速度が低下している可能性があることを示しています。
HTTP キューの長さ 処理される前にキューで待つ必要があった HTTP 要求の平均数。 HTTP キューが長いこと、または HTTP キューの長さが増加していることは、プランに大きな負荷がかかっているしるしです。

CPU 時間と CPU の割合

CPU の使用状況を反映するメトリックには、次の 2 つがあります。

CPU 時間:Free プランまたは Shared プランでホストされているアプリで役に立ちます。これらのプランのクォータの 1 つが、アプリによって使用される CPU 時間 (分数) で定義されているためです。

CPU の割合:Basic、Standard、および Premium プランでホストされるアプリで使用します。これらはスケール アウトが可能だからです。CPU 使用率は、すべてのインスタンスにわたる使用率の有効な指標になります。

メトリックの粒度と保持ポリシー

アプリと App Service プランのメトリックは、サービスによってログに記録され、集計され、これらの規則に従って保持されます

Azure portal でのクォータとメトリックの監視

アプリに影響するさまざまなクォータとメトリックの状態を確認するには、Azure portal にアクセスします。

Azure portal 上のクォータ グラフ

クォータを検索するには、 [設定]>[クォータ] を選択します。 グラフでは、次の内容を確認できます。

  1. クォータ名。
  2. リセットの間隔。
  3. 現在の上限。
  4. 現在の値。

Azure portal 内のメトリック グラフ リソースの [概要] ページから直接メトリックにアクセスできます。 ここには、一部のアプリ メトリックを表すグラフが表示されます。

これらのグラフのいずれかをクリックするとメトリック ビューが表示され、そこでカスタム グラフの作成や別のメトリックへのクエリ実行などのさまざまな操作を実行できます。

メトリックについて詳しくは、「サービス メトリックの監視」をご覧ください。

アラートと自動スケーリング

アプリまたは App Service プランのメトリックは、アラートに関連付けることができます。 詳細については、アラート通知の受信に関するページをご覧ください。

Basic 以上の App Service プランでホストされている App Service アプリでは自動スケーリングがサポートされます。 自動スケーリングでは、App Service プランのメトリックを監視するルールを構成することができます。 ルールによって、必要に応じて追加リソースを提供するインスタンス数を増減できます。 また、アプリがオーバー プロビジョニングされたときのコスト削減にも役立ちます。

自動スケーリングについて詳しくは、スケールの方法に関する記事と Azure Monitor の自動スケーリングのベスト プラクティスに関する記事をご覧ください。