Microsoft Open Technologiesは先頃,ログやトレースを使ったデバッグ作業と,リアルタイム監視および警告システムの開発を支援するオープンソースプロジェクトであるTxのリリースを発表した。
注目すべき機能としては,
- 生のイベントソースにLINKQが使用可能。
- リアルタイムのイベントソースに対してリアクティブエクステンションを使用可能にするとともに,多重化されたイベントシーケンス(異なったタイプのイベントを発生順に格納する単一のシーケンス)をサポート。
- 複数のソースを対象とする単一クエリ,リアルタイム情報と履歴情報を同じAPIでサポート。
- 履歴ログとトレースファイルを対象に,1回の読み込み処理で複数のクエリ – 例えば,“警告” イベントの総数の取得,“Begin” と “End” に一致するイベントの検索,各アクティビティの平均期間の算出 – を実行可能。
簡単な解析はLINQPadで実行できる。あるいは.NETアプリケーションとして監視アプリケーションを開発することも可能だ。LINQPadで操作する場合は,データベースに格納されているようにイベントを取り扱うことができる。
リリースは4つのNuGetパッケージで構成されている。
- Tx.Core – 特定のトレース形式に依存しない共通コンポーネント。
- Tx.Windows – ETW(Event Tracing For Windows)やイベントログ,ファイルおよびリアルタイムカウンタAPIをソースとするパフォーマンスカウンタ,W3CフォーマットのIISテキストログをサポート。
- Tx.SqlServer – SQL Server拡張イベントをサポート。
- Tx.All – 上記すべてに使用可能なユーティリティパッケージ。
MicrosoftがTxを使用しないケースについてアドバイスしている点にも注意が必要だ。
- リアルタイムなフィードに関連せず,データがすべてメモリあるいは解析の容易な単一ファイルに格納されている場合は,TxよりもLINQ-To-Objectsを使用した方がよい。
- リアルタイムフィードが存在する場合でも,各フィードあるいはファイルに格納されているイベントが単一形式ならば,リアクティブエクステンションを単独で使用すればよい。
このツールはこれまで,Microsoft社内でWCFチームやService Busチームが使用していた。それが今回,.NET開発者のプロジェクトに利用できるように公開されたものだ。まずは資料を確認することから始めるとよいだろう。