
【Azure】App Serviceでトラブルシューティングに役立ちそうな機能まとめ
こんにちは。パーソルプロセス&テクノロジー プロダクト推進部 プロダクトインフラグループ の小泉です。
不定期投稿の技術ネタ記事第3段です!
今回は、Azure App Serviceのトラブルシューティングに役立ちそうな機能の個人的調査結果をまとめました。
リソースメニューには表示されていないものもあるため、画面遷移の方法も記載しています。参考になれば幸いです。
一応全て動作確認して役立ちそうな機能をピックアップしていますが、障害発生時での確認では無いため実際にどこまで役に立つかは未知数な面もありますのでご容赦ください。
また、本記事はApp ServiceのWindows OSのインスタンスを前提としています。
プロセスエクスプローラ―
ワーカープロセスのメモリやCPU時間を確認することができます。アプリケーションのプロセスと、デプロイで使用されるKuduのプロセスが表示されます。
主に現在のメモリ使用状況を確認するのに使えると思います。
更新ボタンを押さないと画面が更新されず、また情報も数分タイムラグがあるようなので、常時リアルタイム監視するのにはあまり向いていません。

表示方法(2パターン)
① リソース画面 > プロセスエクスプローラー
② リソース画面 > 正常性チェック > インスタンス > プロセスの表示
※ 本記事のリソース画面とは、App Serviceプラン>Webアプリケーションをクリックして開いた画面を差します。
Kudu
Kuduは、App ServiceにWebアプリケーションをデプロイする際に裏側で使用されているツールです。Kuduコンソール画面に行くとより高度な設定や、管理者向けの操作ができます。以下はKuduのデバッグコンソールのご紹介です。

表示方法
リソース画面 > 高度なツール > 「移動→」をクリック > KuduコンソールのEnvironment画面が表示される >Debug consolタブ > CMDまたはPowerShellを選択
eventlog.xml
Windowsインスタンスの場合、%HOME%\home\LogFilesにeventlog.xml ファイルがあり、OSのイベントログに相当するログ(ただしApplicationイベントログのみ)が出力されます。
プロセスの起動・停止のログや、アプリケーションが出すログ以外の例外ログが出ていることがあるので、調査に行き詰った時には見る価値があります。
デバッグコンソール画面で直接表示・ダウンロードするか、「問題の診断と解決」からGUIで確認することができます。
ちなみにApp Service上のファイル構成はKuduのwikiに説明があります。
デバッグコンソール
Windowsインスタンスの場合コマンドプロンプトとPowerShellから選ぶことができ、一般的なコマンドを実行できます。ただし、管理者権限が必要なコマンドは使えない場合があります。
例えばPowerShellのGet-Processでプロセス情報を表示するとか、ls (Get-ChildItem) で特定のファイルを探すといったことができます。>でファイルへのリダイレクトも可能です。
タブ補完やCtrl+Cは使えないのでご注意を。

問題の診断と解決
問題の診断と解決は、App Serviceが提供するトラブルシューティング機能です。PaaSのためどうしても情報量が少なくなってしまう部分はありますが、視覚的にわかりやすい形式の表示が多いです。結構種類があるので、いくつかピックアップしました。
ここからはざっくりとご紹介します。

表示方法
リソース画面 > 問題の診断と解決 >見たい機能のリンクをクリック
Application Event Logs
Kuduで確認できるeventlog.xmlと同じものがGUIで確認できます。

High-CPU Analysis
CPUドリルダウンという画面で、プロセス別にCPU Timeの推移のグラフが表示されます。地味にメトリックでは確認できないプロセス別のCPU使用率の内訳を見ることができます。

High-Memory Analysis
前述のメモリバージョン。メモリドリルダウンでプロセス別にメモリ消費の推移を見ることができます。

.NET Profiler Trace
NET Profilerのトレースを取得でき、レポートも自動出力してくれます。
デフォルトの収集時間は約1分。デバッグに役立ちそうです。
なお"IIS_PROFILING_TIMEOUT_IN_SECONDS"をApp Serviceのアプリケーション設定に追加すると、収集時間を最大899秒までの値に変更できるようです。詳しくはこちらを。
Profileのレポートの見方はこちら。

他にも、一定のしきい値でメモリダンプを収集したり、ネットワークトレースを収集したりする機能もあります。詳細は以下ドキュメントが参考になります。
ちなみに、過去こんな記事も書かせてもらっていますので、良ければお読みください。
以上です。最後までお読みいただきありがとうございました。
<一緒に働いていただける方(中途/新卒) 募集中です!>
就職/転職活動中や、まだ情報収集中の方、少しでも興味を持っていただけた方は、以下のアドレスに「note見た!」とご連絡いただけると幸いです💡
プロダクト推進部/採用担当アドレス:pdo_js@persol-pt.co.jp