Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
Azure TIPS

Azure TIPS

Azure WebサイトのSite Extensions「DaaS」で各種ログを手軽に収集・解析するには?

2014年9月1日

“Diagnostic as a Service”(DaaS)を利用して、エラーログ、メモリダンプ、HTTPログを一括で収集し、解析を行う方法を説明する。

Microsoft Student Partners Fellow 谷口 慈行
  • このエントリーをはてなブックマークに追加

 一般的に、Webアプリケーションを運用中は、アクセスログや、エラーログを収集する。Microsoft Azure Web Sites(以下、単に「Webサイト」)ではサイト診断を利用して、アクセスログを収集可能である。また、エラーログやメモリダンプはWebサイトインスタンスのストレージに保存されているため、FTPやコマンドラインツールを使用して収集できる。

 収集したログは、解析にかけてWebサイトの健康状態の把握や向上に利用することが望ましいが、なかなかリソースが割けない場合もある。このとき、Webサイトの“Diagnostic as a Service
”(以下、「DaaS」*1)の利用を検討してみてはどうだろうか。DaaSは、WebサイトのSite Extensions(サイト拡張)として動作し、Webサイトの管理アカウント下で利用できるログの収集・解析が可能となる拡張機能である。

 このDaaSを利用することで、エラーログ、メモリダンプ、HTTPログを一括で収集し、解析を行える。また、解析結果をレポートとして取得できる。

  • *1 Desktop as a Service(DaaS)とは異なる。

Site Extensions

 Site Extensionsとは、Webサイトインスタンスを用いて、インスタンスを管理しているアカウントにのみアクセス可能なWebアプリケーションをホスティングできる、Webサイトの機能である。Visual Studio Online “Monaco”がこの機能によってホストされている。

 Site Extensionsは、Kudu管理画面上部の[Site extensions]メニュー(=「http://<あなたのWebサイトのドメイン名>.scm.azurewebsites.net/SiteExtensions」)からインストールが可能だ(なお、説明は割愛するが、新Azure管理ポータルからもインストール可能になっている)。

DaaSの有効化

 DaaSは、新たに追加されたWeb Extensionsの1つである。DaaSを利用することで、Webサイトでは、HTTPログやメモリダンプの保存に加えて、それらの解析、および、レポートの作成が可能となる。

 このDaaSを有効化する最も簡単な手順は、次の2つを行うことだ*2

 (1)Webサイトのホスティングプランを[基本]または[標準]に変更する
 (2)Webサーバーのログをファイルシステムに保存するように設定する

  • *2 「DaaS」Site Extensionsは標準で利用できるようになっており、通常のExtensionsのように管理画面の[Site extensions]メニューを開いて[Gallery]タブから[Install]する必要はないが、インストールすると[Installed]タブ内に項目が表示されるようになる(なお、こうやってインストールしても、上記の2つの手順は実施しなければならない)。ちなみに、「DaaS」Site Extensionsも、前述の通り、新ポータルからインストール可能である。

 順を追って説明する。

(1)Webサイトのホスティングプランを[基本]または[標準]に変更する

 まず、[スケール]タブ開き、Webサイトのホスティングプランを[基本]または[標準]に変更する(いずれも有料プランになる)。

図1 ホスティングプランの変更
  • 1[スケール]タブを開く。
  • 2[WEB ホスティング プランのモード]を[基本]または[標準]に変更する。
  • 3[保存]ボタンをクリックし、プランの変更を有効化する。

(2)Webサーバーのログをファイルシステムに保存するように設定する

 次に、[構成]タブからサイト診断を、[WEB サーバーのログ記録]を[ファイル システム]に変更する。

図2 サイト診断の有効化
  • 1[WEB サーバーのログ記録]を[ファイル システム]に変更する。
  • 2[保存]ボタンをクリックし、変更を反映する。

 以上を行うことで、DaaSが利用できる状態になる。

DaaSによるログの収集・解析

 DaaSは、「http://<your-website-domain>.scm.azurewebsites.net/DaaS」から参照する。

 DaaSのトップは図3のように、2つのボタンと解析履歴のテーブルで構成される。解析を始めるには、[Diagnose Now]ボタンをクリックし、ログの収集・解析処理を発行する。

図3 Diagnostic as a Service
  • 1 [Diagnose Now]ボタンをクリックし、収集・解析を開始する。
  • 2 収集・解析が終了後、[→]ボタンをクリックする。

 収集・解析には多少の時間を要する。収集・解析終了後、各解析結果を取得できる。

図4 解析結果

赤枠の[Analysis Status]カラムから各解析結果を確認できる

 解析は、イベントログ、メモリダンプ、HTTPログがそれぞれ行われる。

イベントログの解析

 イベントログでは、稼働中に生じた例外などがレポートとしてまとめられる。

図5 イベントログ解析レポート

メモリダンプの解析

 メモリダンプでは、エラーなどの各イベントの使用メモリやGCヒープの詳細がレポートとしてまとめられる。

図6 メモリダンプ解析レポート

HTTPログの解析

 HTTPログは、IISによって保存されるログであり、W3Cログフォーマットで保存される。HTTPログ解析結果は、このHTTPログを14の項目で解析したものである。

図7 HTTPログ解析レポート

 具体的には、次の表の14項目が解析される。リクエスト数や時間の要するエンドポイントやエラーの数などを把握できるため、大まかなWebアプリケーションのボトルネックとなるエンドポイントを把握することに役立ち、Webアプリケーションの健康状態の検査、問題の特定に利用できる。

解析項目解析内容
Request Type Distribution 拡張子別のリクエスト数の累計
Top 20 Longest Processing Requests 時間を要したリクエストのトップ20
Top 20 Hits リクエスト数の多いエンドポイントのトップ20
20 ASPX Hits リクエスト数の多いASPXのトップ20
20 Slowest ASPX Pages 時間の要したASPXのリクエストのトップ20
20 Client IP Addresses アクセス元IPのトップ20
Requests Per Hour Table 1時間ごとのリクエスト数の累計
HTTP Status Counts HTTPステータスごとのカウント
20 HTTP 304 Errors 最近のHTTP 304ステータスエラーが発生したエンドポイントのトップ20
20 HTTP 404 Errors 最近のHTTP 404ステータスエラーが発生したエンドポイントのトップ20
20 HTTP 403 Errors 最近のHTTP 403ステータスエラーが発生したエンドポイントのトップ20
20 HTTP 500 Errors 最近のHTTP 500ステータスエラーが発生したエンドポイントのトップ20
20 HTTP 503 Errors 最近のHTTP 503ステータスエラーが発生したエンドポイントのトップ20
100 Longest Processing Requests from PINGDOM User Agent PINGDOMからのリクエストの中で時間を要したリクエストトップ20
HTTPログに対する14の解析項目

「ASPX」とは、マイクロソフト技術のASP.NETで作成されたページのことで、「.aspx」という拡張子を持つ。

 DaaSトップ画面の[Schedule Analysis]ボタンからは、収集・解析を設定でき、定期的な収集・解析をスケジュールできる。また、Azureストレージアカウントを渡すことで、収集・解析結果をBLOBストレージに保存するように設定できる。

まとめ

 DaaSを利用することで、Webサイト単体でログの収集から、簡単な解析までを行うことができる。DaaSの収集解析の処理は、WebサイトにWebジョブとして登録され、Webサイトインスタンスの処理能力を使用して実行している。そのため、収集・解析をスケジューリングして定期実行する場合は、Webアプリケーションの処理を妨げにならないよう、アクセスの多い時間帯を避け、深夜などのアクセスの少ない時間帯などに実行されるよう配慮する必要がある。

※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

Azure TIPS
1. クライアントPCから「Azure SQLデータベースをBlobストレージにバックアップ」するには?[C#]

Azure SQLデータベースを.bacpacファイルとしてBlobストレージにエクスポートするコンソール・アプリの作り方を紹介。そのアプリをタスク・スケジューラーに登録すれば、定期バックアップも実現できる。

Azure TIPS
2. Azure Webサイトのデプロイ・ロジックをカスタマイズするには?

Azure Webサイトでは、さまざまなWebアプリをGitでデプロイできるだけでなく、そのデプロイ・ロジックを自由にカスタマイズすることもできる。そのカスタマイズ方法を解説する。

Azure TIPS
3. 【現在、表示中】≫ Azure WebサイトのSite Extensions「DaaS」で各種ログを手軽に収集・解析するには?

“Diagnostic as a Service”(DaaS)を利用して、エラーログ、メモリダンプ、HTTPログを一括で収集し、解析を行う方法を説明する。

Azure TIPS
4. Azure Webサイトにカスタムドメインを設定するには?

Microsoft Azure Web Sitesで独自ドメイン名を適用する方法を説明する。CNAMEレコードだけでなく、wwwなしのネイキッドドメインが実現可能なAレコード(IPアドレス)も指定できる。

Azure TIPS
5. Azure Webサイトをバックアップするには?

Azure Webサイトでは、Webサイトとデータベースをバックアップ/復元するための機能が提供されている。その機能の基本的な使い方を解説する。

サイトからのお知らせ

Twitterでつぶやこう!