Webサイト:Blob Storageへの自動ログに対する診断サポート
9月に、Windows Azure Blob StorageへHTTPログを自動的に永続化できるWindows Azure Webサイトのアップデートをリリースしました。
今回またWebサイトを更新し、Webサイトのアプリケーション診断ログをBlob Storageに永続化するようにしました。
これにより、非常に簡単に、テキストBlobとして診断ログをいくらでも(ストレージアカウントが大量のデータを維持することができるので)永続化でき、後でそれらをリッチなデータマイニング/分析で使用できます。また、コード内で問題があった場合に、より簡単に素早くその診断および解析ができるようになります。
コードに診断書を追加
以下は、System.Diagnosticsでビルトインの.NET Trace APIを使用して、Webアプリケーションのコードを計測する方法を示した簡単な例になります。以下のシナリオでは、特定のメソッドを呼び出すのにかかる時間をログに記録する簡単なtraceステートメントを追加しています(時間がかかる可能性のあるリモートサービスやデータベースは中止するかもしれません)。
このような計測コードを追加すると、より簡単に本番環境のアプリケーションにおける減速原因を素早く判別することができます。パフォーマンスデータのログ記録により、時間の経過と共にパフォーマンス傾向を分析することができます(例えば、100個中99番目の待ち時間が何であるかを分析するなど)。
Windows Azure StorageにBlobとして診断ログファイルを保存
自動的にBlob Storageに直接書き込まれる診断ログを有効にするには、Windows Azure管理ポータルを使用してWebサイトに移動し、CONFIGUREタブをクリックしてください。そして、その中のAPPLICATION DIAGNOSTICSセクションへ移動してください。今後は、Blob Storageに永続化させる“Application Logging”を設定することができます。これを行うには、“on”を選択して、永続化したいログレベル(error、verbose、informationなど)を選択するだけです。
緑色の“manage blob storage”ボタンをクリックすると、診断ログを保存したいBlob Storageアカウントの設定ダイアログが表示されます。
設定が完了したら、“ok”ボタンをクリックして、“save”を押してください。これで、アプリケーション実行時に、診断データが自動的にBlob Storageアカウントに永続化されます。
アプリケーション診断データの確認
診断ログデータは、アプリケーションが実行されるとすぐに永続化されます(Webサイトにこれを自動的に処理するトレースリスナーがあり、毎秒数千の診断メッセージを書くことができます)。
ログの表示およびダウンロードには、Windows Azure Blob Storageをサポートする標準ツールを使用することができます。以下では、Blob Storageアカウントを表示するのにCloudXplorerツールを使用しています:
アプリケーション診断ログは、CSVテキストファイルとして保存されます。Windows Azure Webサイトは、自動的にWebサイト運営の年->月->日->時間でマッピングされたBlobコンテナのサブフォルダにファイルを永続化します(これにより、探しているファイルがより簡単に見つかります)。
ファイルはCSVテキストファイルなので、幅広いさまざまなツールやカスタムスクリプトを使用して、ログファイルを開いたり、処理することができます(多数を素早く分析したい場合は、Windows Azure HDInsightを使用してHadoopクラスタをスピンアップすることも可能です)。以下はExcelを使用して上記の診断ファイルを開いている簡単な例です。
上記をご確認いただくと、日付/時刻、情報レベル、アプリケーション名、WebサーバインスタンスID、eventtick、プロシード、スレッドIDのすべてが、DoSomethingメソッドの待ち時間を記録したカスタムメッセージに加えられ永続化されています。
診断を常時ONで実行
今回の更新により、Blob Storageに診断トレースメッセージを非常に簡単にログに記録することができます(すでにサポートされているHTTPログに加え)。上記の手順は、開始するためだけに必要なものです。
Windows Azure Storageアカウントには各100TB保存でき、Windows Azure Webサイトはそれにログを永続化する効率的な方法を提供するので、本番環境に診断を常に残し、アプリケーションで行ったことをすべてログに記録することも可能になりました。このデータを永続化させることは、アプリケーションの状態を理解し、問題がある場合はデバッグし、時間と共によりよい分析を行うことがより一層簡単になります。