Windows Azureデバッギング – VM上のリソース

Windows Azureアプリケーションのデバッグを通して、Azureプラットフォームでのデバッグテクニックを蓄積しました。Windows Azureのトラブルシュートの為に使用している情報の多くを共有するためのBlogシリーズを投稿する予定です。
シリーズの最初は、Azure VMにリモートデスクトップで接続し、確認することができるリソースを紹介したいと思います。

VM上のリソース

問題の解決の為に重要なことの一つは、環境全体と提供されているリソースとログファイルについて理解することです。
Cドライブは設定情報とローカルストレージを格納します。
Dドライブは、WindowsとWaAppAgentログを格納します。
Eドライブは、顧客のロールコードを格納します。

Cドライブ:ログファイル、ローカルストレージフォルダー

デバッグ(例えば、WinDBG、ツール、ダンプファイル、ログファイルなど)している間、ローカルの一時領域としてCドライブを使用できます。すべてのトラブルシューティングツールが読み込むためにC:\Scratchを作成します。

  • C:\Config サービス設定情報
    • <DeploymentID>.<RoleName>.<index>.xml
      これは、ユーザロール用メインの設定情報です。サービス設定ファイル(管理ポータルで設定を更新したり、更新を再配置など)を更新したら、複数のコピーされたXMLファイルが格納され、<index>カウンターは、新しい設定バージョンが1つ追加されます。
      • デプロイ名
      • サービス名
      • 証明書
      • ホストプロセス
      • cscfg設定と値
      • ローカルストレージフォルダー
      • InputEndpoint、InternalEndpoinとポートのマッピング
    • <GUID>.ccf
      • OSバージョン
      • クラスター名
      • デプロイID
      • VMサイズ(<ProcessorCount>を探してください)
      • ipconfig情報
  • C:Resources ローカルストレージ、ログファイル、AspNetTemp
    • ディレクトリ\<GUID>.<RoleName>.DiagnosticStore – IISログ、失敗したリクエスト(freb)ログ
    • ディレクトリ\<guid>.<role>.DiagnosticStore\Monitor\Tables – Azure 診断モニターが収集したすべての調査情報(イベントログ、ロールログ、WAD調査情報など)。table2csv.exeを使用して.tsfファイルを収集する方法は、Getting Azure Diagnostic Information from a VMを参照してください。
    • Temp\<GUID>.<RoleName>\RoleTemp – ホストプロセスログ
    • Directory\<GUID>.<RoleName>.<LocalStorage name> – サービスモデル(.csdef)で定義されている<LocalStorage>フォルダーです。

Dドライブ:Windows(%SystemDrive%、%SystemRoot%など)、エージェントログ

  • D:\Packages\GuestAgent – エージェントログ
    • このロケーションからWaAppAgent.exeが開始されます。
    • WaAppAgent.exe.log – インスタンスのスタートアップ詳細を記録するエージェントログファイル
    • WaAppAgent.<index>.log – 履歴ログファイル

Eドライブ:サービスパッケージを含む仮想ドライブ

ゲストエージェントがサービスパッケージを配置したとき、このドライブが作成されます。これは動的に生成され、落ち着くまでFドライブ、Gドライブとなります。

  • _entrypoint.txt – ホストプロセスが呼び出すエントリポイントを含むDLL
  • RoleModel.xml – <Startup>タスクと<Sites>設定エレメントを含むXMLファイルです。また、MSBuild情報とターゲット.NET Frameworkのバージョンを含みます。
  • <GUID>.csman – PackageManifestは、パッケージのすべてのファイル一覧(Visual Studioにコピー&ペーストできる形式)を記録しています。
  • \Base\x64 – サービスコードで動作するホストプロセス
  • \Approot – 顧客のコード、aspxページ、DLLなど
  • \Sitesroot\<index> – Full IISサイトの動作起点のフォルダーです。
    ロールがデプロイされたとき、\Approot から、この\Sitesroot へファイルがコピーされ、IISは、\Sitesrootから動作するように設定されます。一時的なテストの為に、ロールを変更する(web.configの変更、新しいDLLなど)場合には、ここを置き換えなければなりません。