Azure TIPS
Azure WebサイトのSite Extensions「DaaS」で各種ログを手軽に収集・解析するには?
“Diagnostic as a Service”(DaaS)を利用して、エラーログ、メモリダンプ、HTTPログを一括で収集し、解析を行う方法を説明する。
一般的に、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サイトのホスティングプランを[基本]または[標準]に変更する(※いずれも有料プランになる)。
(2)Webサーバーのログをファイルシステムに保存するように設定する
次に、[構成]タブからサイト診断を、[WEB サーバーのログ記録]を[ファイル システム]に変更する。
以上を行うことで、DaaSが利用できる状態になる。
DaaSによるログの収集・解析
DaaSは、「http://<your-website-domain>.scm.azurewebsites.net/DaaS」から参照する。
DaaSのトップは図3のように、2つのボタンと解析履歴のテーブルで構成される。解析を始めるには、[Diagnose Now]ボタンをクリックし、ログの収集・解析処理を発行する。
収集・解析には多少の時間を要する。収集・解析終了後、各解析結果を取得できる。
解析は、イベントログ、メモリダンプ、HTTPログがそれぞれ行われる。
イベントログの解析
イベントログでは、稼働中に生じた例外などがレポートとしてまとめられる。
メモリダンプの解析
メモリダンプでは、エラーなどの各イベントの使用メモリやGCヒープの詳細がレポートとしてまとめられる。
HTTPログの解析
HTTPログは、IISによって保存されるログであり、W3Cログフォーマットで保存される。HTTPログ解析結果は、このHTTPログを14の項目で解析したものである。
具体的には、次の表の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 |
※「ASPX」とは、マイクロソフト技術のASP.NETで作成されたページのことで、「.aspx」という拡張子を持つ。
DaaSトップ画面の[Schedule Analysis]ボタンからは、収集・解析を設定でき、定期的な収集・解析をスケジュールできる。また、Azureストレージアカウントを渡すことで、収集・解析結果をBLOBストレージに保存するように設定できる。
まとめ
DaaSを利用することで、Webサイト単体でログの収集から、簡単な解析までを行うことができる。DaaSの収集解析の処理は、WebサイトにWebジョブとして登録され、Webサイトインスタンスの処理能力を使用して実行している。そのため、収集・解析をスケジューリングして定期実行する場合は、Webアプリケーションの処理を妨げにならないよう、アクセスの多い時間帯を避け、深夜などのアクセスの少ない時間帯などに実行されるよう配慮する必要がある。
※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
1. クライアントPCから「Azure SQLデータベースをBlobストレージにバックアップ」するには?[C#]
Azure SQLデータベースを.bacpacファイルとしてBlobストレージにエクスポートするコンソール・アプリの作り方を紹介。そのアプリをタスク・スケジューラーに登録すれば、定期バックアップも実現できる。
2. Azure Webサイトのデプロイ・ロジックをカスタマイズするには?
Azure Webサイトでは、さまざまなWebアプリをGitでデプロイできるだけでなく、そのデプロイ・ロジックを自由にカスタマイズすることもできる。そのカスタマイズ方法を解説する。
3. 【現在、表示中】≫ Azure WebサイトのSite Extensions「DaaS」で各種ログを手軽に収集・解析するには?
“Diagnostic as a Service”(DaaS)を利用して、エラーログ、メモリダンプ、HTTPログを一括で収集し、解析を行う方法を説明する。
4. Azure Webサイトにカスタムドメインを設定するには?
Microsoft Azure Web Sitesで独自ドメイン名を適用する方法を説明する。CNAMEレコードだけでなく、wwwなしのネイキッドドメインが実現可能なAレコード(IPアドレス)も指定できる。
5. Azure Webサイトをバックアップするには?
Azure Webサイトでは、Webサイトとデータベースをバックアップ/復元するための機能が提供されている。その機能の基本的な使い方を解説する。