Sitecore Azure を使用すると Windows Azure 上にCD用のクラウドサービスとしてサイトコアをデプロイすることができます。 Sitecore Azure 3 では、 Azure上にクラウドサービスとしてデプロイされた Sitecore のログは Azure上のテーブルストレージに出力されます。
今回は、 Azure のテーブルストレージ から Sitecore のログを絞り込んで抽出する方法のメモを記載します。といってもお他のアプリでテーブルストレージにログを抽出した場合も同じですが。
検証環境
- コンテンツ編集環境 - Sitecore Azure 3.0 がインストールされた Sitecore
1. ストレージエクスプローラーのダウンロード
Windows Azure のテーブルストレージの内容を参照しますので、適当なStorage Explorer を選択します。
今回は下記URLからダウンロードできる tablexplorer のFree版を使用します。
Azure ストレージ テーブル エクスプローラー
http://clumsyleaf.com/products/tablexplorer
Storage Explorer をインストールしたら インストールしたらtablexplorer を起動してください。
File->Accounts メニューから Windows AzureのSitecoreのクラウドサービスで使用している ストレージアカウントの資格情報を設定します。ストレージアカウントの情報を設定すると下図のように Azure上のテーブル一覧が表示されます。Sitecoreのログは WADLogsTable というテーブルに格納されています。ツールバーで Export data をクリックします。
下図のような Export data ダイアログが表示されます。この画面で抽出するテーブルと抽出条件、出力先、出力ファイルの形式(XML, CSV) を選択します。
抽出条件である filter に設定できる 抽出条件に演算子や例に関しては 次のURLのSupported Comparison Operators 周辺を参照してください。
Querying Tables and Entities
http://msdn.microsoft.com/en-us/library/dd894031.aspx
Tableストレージは PartitionKey や RowKey にインデックスが設定されているので、Filterの抽出条件に含めるようにした方が高速にExport処理を行うことができます。PartitionKey の値は Tableストレージにレコードが書き込まれたファイルシステム時間の先頭に"0"を付けた文字列になっていますので、UTC時間で 2013/10/07 10:00:00 から 2013/10/07 10:10:00 までのログを抽出したい場合は次のようなクエリを使用します。
PartitionKey gt '0635167368000000000' and PartitionKey lt '0635167374000000000'
あとは出力パスや出力形式を設定して Export ボタンをクリックします(下図参照)。
エクスポートに成功すると 下図のようなダイアログに抽出レコード数が表示されます。
後は、エクスポートしたファイルを Excel のフィルタ機能などを使用してインスタンス別のログに絞り込んだり加工したりして解析を行っていきます。
ちなみにですが、ファイルタイム時間の文字列を生成するには PowerShell で次のスクリプトで簡単に生成できます。
$d = [datetime] "2013/10/07 10:00:00" "0" + $d.Ticks "0" + $d.AddMinutes(10).Ticks
上記スクリプトは 2013/10/07 10:00:00 と 10分後の 2013/10/07 10:10:00 のファイルシステム時間の先頭に"0" を付けた文字列を生成しています。
2.まとめ
説明は以上です。簡単ですが、ログの抽出方法に関するご説明を記載しました。
さんのコメント: さんのコメント: