読者です 読者をやめる 読者になる 読者になる

Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Windows Azure Diagnostics ログ出力

Windows Azureのログ出力について、自分の理解を整理するためにまとめなど。

Windows Azureで出力できるログの種類は以下の通りであり、出力先がTableの
のものとBlobのものに分類される。

Tableに出力されるログは独自の形式にしたがって出力され、MSDNなどに
テーブル構造などが解説されているのを見たことがありません。
(どなたか知っていたら教えてください)

Blobに出力されるログは、ログファイルそのものがBlobに転送される仕組みに
なっている。

ログの種類 出力先
トレースログ Table
パフォーマンスカウンタ Table
イベントログ Table
インフラログ Table
IISログ Blob
IIS失敗ログ Blob
クラッシュダンプ Blob
その他 独自ログ Blob

いずれにおいても、ログは、Windows Azure ストレージに直接出力されるわけではなく、
Windows Azureのローカルストレージに出力された後、設定した間隔でWindows Azure
ストレージに転送される。また、オンデマンド転送というのもできる(はず)
したがって、ロールが死んだりするその瞬間のログを確実にとれるのか? よく
分かっていません。

以下は、Tableに出力されるログクラスを中心に記述したクラス図。
DiagnosticsMonitorから、各ログに対応するインスタンスが取得できるため、
それらに転送時間を設定すればログを取得することができる。

自分的には、クラス図に起こすと結構分かりやすかったりするんで、おすすめ
なんですが、世間的にはどうなんでしょう。(astah Community版で描いたもの)

実際のコードは以下のような感じで、時と場合によりますが、OnStartで設定。
実際の転送間隔は、あまり短くないほうがよいようですが、適切な間隔が不明。

いずれにしろ、ログの転送はもっさりしているというか、いつ転送されるのか
よくわからないんで、うーんという感じ。オンプレミスみたいに、すぐココに
ログがあるわけではないので、なんともまどろっこしい。

        public override bool OnStart()
        {
            // DiagnosticMonitorインスタンスを取得する。
            var mconfig = DiagnosticMonitor.GetDefaultInitialConfiguration();

            // Windows イベントログの設定
            mconfig.WindowsEventLog.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
            mconfig.WindowsEventLog.ScheduledTransferPeriod = TimeSpan.FromSeconds(30);

            // 通常のログの設定 (Traceクラスで出すやつ)
            mconfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
            mconfig.Logs.ScheduledTransferPeriod = TimeSpan.FromSeconds(30);

            // 構成の設定
            DiagnosticMonitor.Start("DiagnosticsConnectionString", mconfig);

            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
            RoleEnvironment.Changing += RoleEnvironmentChanging;

            return base.OnStart();
        }

TableXplorerで開発ストレージを覗いた様子

続くかも。

ログに関しては、TechDays 2010の T1-302「Windows Azure の管理を効率化する監視、ログ、管理 API 機能詳細」
が参考になると思います。PPTも、動画もアップされているので。