Azureをデプロイし問題を解決していく時に必要な道具としてログがある。
今回、デプロイ後のログ収集について分かった事をメモとして残しておこうと思う。
Azure上のログの取得方法
Diagnostic経由のログ
Azure上でログを取得する場合
- System.Diagnostics.Trace.WriteLine
- System.Diagnostics.Trace.TraceInformation
を利用した。このログは、Roleを実行しているVMの中に保存されている。
このログは単純には閲覧できないようである。 一つの方法は、ストレージへの転送を行うことで実現するらしい。
設定ファイル修正
ServiceConfiguration.cscfgの「name="DiagnosticsConnectionString"」をAzure Storage に変更しておく。 以下のコードの次の項目は自分のアカウント情報に切り替える。
- AccountName=
- AccountKey=
<ConfigurationSettings> <!-- <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" />--> <Setting name="DiagnosticsConnectionString" value="DefaultEndpointsProtocol=https;AccountName=XXXXX;AccountKey=XXXXX" /> </ConfigurationSettings>
詳しい説明
Windows Azure Monitoring, Logging, and Management APIs に、PDC 09年の動画がある。
今回はそれを参考に設定した。
Diagnosticの設定
以下のコードを追加することで、 ストレージに転送される。
public override bool OnStart()
{
DiagnosticMonitorConfiguration conf = DiagnosticMonitor.GetDefaultInitialConfiguration();
conf.Directories.ScheduledTransferPeriod = TimeSpan.FromSeconds(2);
conf.Logs.ScheduledTransferPeriod = TimeSpan.FromSeconds(2);
// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;
DiagnosticMonitor.Start("DiagnosticsConnectionString",conf);
Storage用ツール
転送されたログを管理するために以下のストレージアクセスツールを見つけた。 ログの転送には、前者のを利用する方がいいと思う。 (僕はこちらを利用している)
さいごに
問題解決に向けて、事実の把握は重要である。その一つとしてログがあるが、このログの確認について、 ここでは書いてみた
参考
WEB
- Windows Azure Monitoring, Logging, and Management APIs
- Azureにデプロイしたらロールステータスが Initializing ? Busy ? Stopping ?のループで一向に Readyにならない


コメントする