Application Insights での WCF の監視

執筆者: Beckylin Orooji (Program Manager, Application Insights)
このポストは、3 月 7 日に投稿された WCF Monitoring with Application Insights の翻訳です。

このたび、WCF アプリケーションの監視に特化した Application Insights SDK Labs (英語) が新たにリリースされました。.NET Web アプリケーション向け Application Insights SDK では既に HTTP ベースの WCF アプリケーションがサポートされていますが、これは WCF 向けに最適化されたものではありませんでした。Application Insights WCF SDK は WCF アプリケーションの監視に最適で、一般的な WCF バインディングをすべて監視し、例外を監視したり、処理を明確に識別したり、選択的に監視したりできます。

背景

監視ツールを作成する場合、テレメトリを収集する階層を多数の中から選択できます。多くの IIS ベースのアプリケーションでは、HTTP モジュール層が使用されています。HTTP モジュールは、要求の処理に使用されるテクノロジ (ASP.NET、MVC、Web API、WCF) を問わず、すべての HTTP 要求の通知を受け取ります。また、.NET 以外のアプリケーション (英語) を監視することもできます。
しかし、この汎用的な手法が WCF アプリケーションに対しては機能していないというご意見が多数寄せられました。このようなご意見が非常に強かったため、Application Insights の熱心なファンで支持者である Tomas Restrepo (英語) が、自分自身で WCF 監視機能を開発することを決意しました。Web SDK でサポートされていない複数のエクスペリエンスを追加したり、一部の制限を解除したりする必要があると判断したのです。
この Tomas Restrepo の取り組みの成果が、WCF アプリケーション向け Application Insights SDK (英語) としてリリースされました。

機能

WCF アプリケーション向け Application Insights SDK には、多数の優れた機能が備わっています。

一般的な WCF バインディングによるインストルメンテーション

WCF テレメトリ向け Application Insights SDK では HTTP バインディングのみという制限が撤廃され、HTTP ベースまたはそれ以外のすべての一般的な WCF バインディングを使用できるようになりました。

処理のマッピング

カスタム コードを作成しなくても特定のサービス処理の要求を区別できるようになりました。汎用 URL パスの代わりに、要求のテレメトリの処理名に .. という形式が使用されるため、コードへの処理のマッピングが簡単になりました。

IErrorHandler 拡張ポイント

IErrorHandler が実装され、ほとんどの場合、サービスからスローされた例外やエラーを自動的に追跡できるようになりました。

選択的監視

既定では、どの WCF サービスを呼び出した場合にも Application Insights に要求イベントが送信されます。
監視対象のサービスを選択するには、監視対象のサービスのコントラクトや実装に [OperationTelemetry] メソッド属性 (英語) をアタッチします。この属性をアプリの任意の場所で使用すると、この属性を持たないサービスは監視対象から除外されます。

インストール

Application Insights SDK Labs のパッケージ ソースから、プレリリース版の Microsoft.ApplicationInsights.Wcf パッケージを WCF プロジェクトに追加します。

コマンド ライン版の NuGet パッケージ マネージャーを使用する場合

 
> Install-Package "Microsoft.ApplicationInsights.Wcf" –Source "https://www.myget.org/F/applicationinsights-sdk-labs/" -Pre

Visual Studio を使用する場合

ソリューション エクスプローラーでプロジェクトを右クリックし、[Manage NuGet Packages] を選択します。次に、パッケージ ソースのリストに https://www.myget.org/F/applicationinsights-sdk-labs/ を追加します。
5d030f4d-6b05-46d0-867d-7eab394779e1

パッケージ ソースを設定し、[Include prerelease] チェック ボックスをオンにして Microsoft.ApplicationInsights.Wcf をインストールします。
9c7e8f19-0b14-4e0d-8078-d428b67b6641

インストルメンテーション キーの設定 Application Insights リソースのインストルメンテーション キーを ApplicationInsights.config ファイルに追加します。インストルメンテーション キーは、コードまたは web.config ファイルで設定することもできます。

謝辞

WCF アプリケーション向け Application Insights SDK をマイクロソフトやコミュニティと共有してくれた Tomas Restrepo に感謝します。

ご協力のお願い

問題や機能のご要望などがありましたら、WCF テレメトリ向け Application Insights SDK のリポジトリ (英語) までお寄せください。
WCF 用 SDK と汎用 Web SDK を比較して、ご意見をお聞かせください。Application Insights チームは、優れた開発者向けツールの提供に取り組んでいます。皆様からのフィードバックや新機能のご提案 (英語) をお待ちしております。