2016-10-25 10 views
0

私は現在、例外とトレースを記録するためのAppの洞察を使用しています。 私のプロジェクトはAsp.net MVCベースで、私は3つのレイヤーを持っています。 1つはフロントエンド(斜めのMVC)で、残りの2つはWeb APIサービスレイヤです。 私はすべての3つのレイヤーでデフォルトの遠隔測定ログを有効にしており、すべての操作を記録しています。私の問題は、3つのレイヤーすべてで操作を関連付けることができないことです。どうすればこれを実現できますか?私は、Telemetry Initializerでカスタムプロパティ(セッションのユーザID)を設定することをお勧めしますが、ステートレスであるため、Web APIレイヤにその情報はありません。異なるレイヤーにわたるアプリケーションインサイトのテレメトリーのトレース

あなたは、あなたのMVC層で操作ごとに内部識別子(例えば、GUID)を生成(テレメトリ初期化子を使用して)カスタムパラメータとして追加し、その同じを渡すことができます:私は考えることができ

答えて

1

一つの解決策IDを、各API呼び出しのWeb APIレイヤーに追加します。これらのWeb APIレイヤーが送信するテレメトリイベントごとに、上記と同じ方法でカスタムパラメータとして識別子を追加します。

これにより、内部IDに基づいてイベントを関連付けることができます。

+0

こちらの記事では、このブログ記事の中の素晴らしい例をご覧いただけます:https://dzimchuk.net/post/event-correlation-in-application-insights –

+0

ありがとうございます。このソリューションは機能しますが、手動でイベントを追跡する必要があります。正しい?あなたが自分の手で問題を取りたいなら、これは素晴らしいリンクです。 –

+0

いいえ、手動でイベントを追跡する必要はありません。テレメトリーイニシャライザを使用すると、SDKが送信するすべてのイベントに内部識別子を追加できます(自動的に送信する場合でも)。 [このブログの記事](http://apmtips.com/blog/2014/12/01/telemetry-initializers/)は、Telemetry Initializers –

1

既に言及した選択肢の他に、ParentOperationIdおよびOperationIdコンテキストフィールドを使用してこれをAIに組み込んだのはすでにpartial supportです。しかし、Http呼び出しを使ってフィールドを自動的に伝播することはできません。

発信HTTPコールを発信するときに必要なヘッダーを追加し、正しいものを使用し、もう一方の側に必要なテレメトリーイニシャライザがある場合は、コードを改善する必要があります。

関連する問題