コスト削減を実現する Web アプリケーション向け Application Insights SDK 2.0 を発表

執筆者: Beckylin Orooji (Program Manager, Application Insights)

このポストは、3 月 17 日に投稿された Save money with Application Insights’ web SDK 2.0 の翻訳です。

 

マイクロソフトが最初の安定版の Application Insights SDK をリリースしてからまだ 1 年も経っていませんが、その間にも多くのことを行いました。バグ修正や新機能の導入のほか、いただいた多くのご意見をもとにお客様のニーズに対する理解を深めました。そしてこのたび、新バージョンの Application Insights SDK である .NET Web アプリケーション向け Application Insights SDK 2.0 をリリースする運びとなりました。

大きな変更点

.NET Web アプリケーション向け Application Insights SDK 2.0 では、いくつも大きな変更が行われました。最も大きなものは、各デバイスのサポートが Application Insights SDK から HockeyApp SDK (4 月 15 日リリース予定) に移行される点です。それまでの間、各デバイスのサポートが必要な場合は、今回のバージョンにアップグレードすることは控えてください。今回の移行理由について詳しくは、Thomas Dohmke によるこちらのブログ記事をご覧ください。

もう 1 つの大きな変更点は、インターフェイス IContextInitializer が削除されたことです。このコンテキスト初期化子という概念は非常にわかりにくく、誤りが起きやすかったため、こんなブログ記事 (英語) を公開していました。今回のメジャー バージョンのリリースに伴い、この概念を SDK から取り除くことにしました。その他の小さな変更点については、コア SDK (英語)Web サーバー SDK (英語) の NuGet パッケージのリリース ノートをご覧ください。

予測しやすい料金設定

アダプティブ サンプリング

新しい SDK では、Web アプリケーション向け Application Insights の NuGet パッケージ (英語) をインストールすると、アダプティブ サンプリングが既定で有効になります。アダプティブ サンプリングでは、アプリケーション データの分析の統計的な正確性を保ちながら、収集/保存するテレメトリを減らすことができます。

サンプリングが行われる場合、同じ構成でさまざまな環境に対応することが可能です。たとえば開発環境とテスト環境ではほとんどの場合、すべてのテレメトリ データが表示されます。これに対して負荷の高い運用環境では、収集するデータの量が自動的に制限されます。

要求の除外

フィルター処理 (英語) がネイティブでサポートされているため、収集するデータの量を減らすことができます。特定の URL からの要求や、ロボットからの要求 (Web SDK によって「人工トラフィック」としてマークされているすべての要求) をフィルターで除外したり、カスタムのハートビート イベントをフィルターで除外したりすることが可能です。フィルター処理を行うことで、判断がしやすくなります。

不要な情報の削減

いくつかのフィルター処理を既定で有効にしました。具体的には、静的コンテンツのテレメトリが収集されないようにしました。このため、SDK で生成される不要な情報が最初から減ることになります。

Application Insights は、監視関連の多様なニーズに対応可能な複雑なソリューションです。幅広いプラットフォームからテレメトリを収集し、さらに問題の検出、トリアージ、診断を行うことが可能です。プロアクティブな検出によって、思いもよらなかった問題や分析機能に気付くことができるはずです。

こうしたすべての機能を利用するには、アプリケーションからかなりの量のデータを収集する必要があります。収集されたデータの量に大きな意味があるのです。データがどれだけ効率的に収集されたかにかかわらず、データ収集には制限やコストが必ず存在します。Application Insights では柔軟性の高い料金モデルが採用されており、送信および分析するデータ量に応じてお支払いいただくことになります。

マイクロソフトのお客様の中には、独自のデータ分析を行うお客様がたくさんいらっしゃいます。また、「基本的な検出/トリアージ/診断のシナリオでは料金を予測できるようにすべきで、しきい値によって上限を設けるべきではない」と言うお客様もいらっしゃいます。

そこで .NET Web アプリケーション向け Application Insights SDK 2.0 では、APM シナリオにおける予測可能な料金を実現するための最初の取り組みを行いました。これによりテレメトリ データのフィルター処理がはるかに簡単になり、フィルターもあらかじめ定義されるようになりました。中でも今回最大の機能強化は、アプリケーションにおける要求の負荷が高い場合でも統計的に正しいデータを得ることができる、アダプティブ サンプリング機能です。

テレメトリの関連付け

テレメトリの関連付けは、多くの診断シナリオで重要となります。Application Insights では、ユーザーごと、セッションごとの関連付けが可能であり、特定の要求に関連付けられたテレメトリが表示されます。たとえば、アプリケーションの特定のページで発生したすべての例外を確認することが可能です。

マイクロソフトでは関連付け機能を強化する取り組みを続けており、.NET Web アプリケーション向け Application Insights SDK 2.0 でも多くの機能強化を行いました。

自動生成された RequestTelemetry の公開

テレメトリを現在の要求と関連付ける必要がある場合、新しい API メソッドの呼び出しを使用して、現在の要求に関連付けられた RequestTelemetry オブジェクトを利用できるようになりました。たとえば、ログ ファイルのトレースを Application Insights の要求テレメトリに関連付ける場合は、次のようなコードを記述できます。

 var requestTelemetry = HttpContext.Current.GetRequestTelemetry(); 

Trace.WriteError(“Error processing request with Application Insights ID: ” + requestTelemetry.Id); 

操作の階層構造の定義

Application Insights の OperationAPI により、操作の範囲を定義できるようになりました。ある操作の範囲に該当するすべての呼び出しは、何らかの操作 ID と操作名を持つことになります。たとえば次のコードは、トレースと bing.com に対する依存関係の呼び出しに関連付けられた要求テレメトリ オブジェクトを生成します。

 using (var op = this.telemetryClient.StartOperation<RequestTelemetry>("request"))  

{  

    this.telemetryClient.TrackTrace("trace1");  

 

    HttpClient client = new HttpClient();  

    client.GetStringAsync("https://bing.com");  

 

    this.telemetryClient.TrackTrace("trace2"); 

 }

Ajax の呼び出しとバックエンド アクティビティの関連付け

Ajax の呼び出しとそれに対応するサーバーの要求を関連付けることで、Ajax の呼び出しに時間がかかっている原因を正確に把握することができます。アプリケーションのパフォーマンスを調査する際にユーザーが直面している問題を出発点とすることで、顧客への影響をより重視したプロセスが実現します。この機能を利用すると、Ajax の呼び出しを詳細かつ明確に把握し、具体的にどのような問題にユーザーが直面しているのかを把握できます。

f10db147-2d32-4db9-9c83-e4d88d8ec7a1

今後の展望

マイクロソフトではすべての皆様に、新しいバージョンの SDK を使い始めていただくことをお勧めします。パフォーマンスや構成の自由度が増し、多くの優れた機能が用意されています。

次期マイナー リリースである SDK 2.X でも、データに基づく分析機能を維持しながら APM シナリオのコストの予測可能性を高めることができるように、引き続き取り組んでまいります。具体的には、お客様にとって最も重要なテレメトリを把握するための高度なアルゴリズムの実装、メトリックの正確さの向上、アプリケーションのテレメトリ データに対する管理機能の強化を予定しています。

マイクロソフトには、プロセス内、そしてコンポーネント間のテレメトリ関連付けに関するアイデアがまだまだたくさんあります。この分野には引き続き重点的にリソースを投入していく予定です。

今後も Application Insights に多くの新機能を導入していく予定ですので、どうぞご期待ください。皆様からのご意見、ご感想 (英語) もお待ちしています!