17

ユーザーとセッションの追跡を理解したいので、アプリケーションの洞察が Cookie でどのように機能するのか疑問に思っているので、調査してきました...

ここでは、理論について簡単に紹介します。

  1. Application Insights SDK は、Application Insights ユーザー追跡 Cookie (Application Insights JS スニペットによって設定) を持たない要求を受け取るたびに、この Cookie を設定し、新しいセッションを開始します。( apmtipsから)

2.

UserTelemetryInitializerは、すべてのテレメトリ項目のユーザーコンテキストのIdプロパティとAcquisitionDateプロパティを、ユーザーのブラウザーで実行されている Application Insights JavaScript インストルメンテーション コードによって生成されたai_user Cookie から抽出された値で更新します。

SessionTelemetryInitializerは、すべてのテレメトリ項目のセッションコンテキストのIdプロパティを、ユーザーのブラウザーで実行されている ApplicationInsights JavaScript インストルメンテーション コードによって生成されたai_session Cookie から抽出された値で更新します。( Azure ドキュメント (ApplicationInsights.config を使用した Application Insights SKD の構成)から)

したがって、 ai_sessionai_userの2 つの Cookie があります。

そして、ここに私の質問があります:

  1. それらはいつ初期化されますか?
  2. それは何をしているのですか?
  3. それらの使用をやめるにはどうすればよいですか?
  4. それらを保持したい場合、どうすれば有効期限を変更できますか?

それらを削除しようとして、MVC と Web Api を含む Web Api の既定のテンプレートを使用して、ASP.NET Web アプリケーションを使用してプロジェクトを作成しました。

調査を行ったところ、これらを無効にするこのアプローチが見つかりましたが、WebSessionTrackingTelemetryModule はありません。だから私は「UserTelemetryInitializer」と「SessionTelemetryInitializer」をコメントアウトしました。これが私が持っているものです:

<TelemetryInitializers>

  <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SyntheticTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
  <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ClientIpHeaderTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
  <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserAgentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
  <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationNameTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
  <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationIdTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />

<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />-->
<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SessionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />-->

 <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.AzureRoleEnvironmentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
 <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DomainNameRoleInstanceTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
 <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
 <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DeviceTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />


</TelemetryInitializers>

と :

<TelemetryModules>

<Add Type="Microsoft.ApplicationInsights.Extensibility.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.DependencyCollector" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ExceptionTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />

</TelemetryModules>

しかし、それは違いはありません。モジュールをコメントのままにするかどうかに関係なく、Cookie はまだ生成されています。

Cookie を削除しようとして、スタートアップで行った手順にコメントし、プロジェクトからすべての .js ファイルを除外しましたが、リクエストのたびに Cookie が表示され続けます。

したがって、現時点では、「Application Insights Javascript」がどこで行われるのか理解できません。私が見逃しているのはバックエンドの何かだと思います。私が間違っている?

最後に、私のコメントした Startup.cs は次のようになります。

[assembly: OwinStartupAttribute(typeof(Try001.Startup))]
namespace Try001
{
    public partial class Startup
    {
         public void Configuration(IAppBuilder app)
         {   
            //ConfigureAuth(app);
         }
    }
  }

そして、私の Global.asax.cs は次のようになります。

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        //AreaRegistration.RegisterAllAreas();
        //FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        //BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

RegisterRoutes はデフォルトのルーティングを行っているだけです。そのため、機能させるために非常に基本的なことだけを行うことを目指しましたが、どこを掘り下げるべきかについての手がかりがありません。

誰かが私を啓発できますか?

ここまで読んでくれてありがとう。

4

1 に答える 1

21

Cookie の初期化ロジックは、Application Insights JavaScript SDK で発生します。ページのソースを見ると、//az416426.vo.msecnd.net/scripts/a/ai.0.js からの JS に気付くでしょう。GitHub の JavaScript SDK のソース コードを読んだり、貢献したりすることもできます: https://github.com/Microsoft/ApplicationInsights-JS

質問への回答:

それらはいつ初期化され、何をしているのでしょうか?
テレメトリ アイテムを送信しようとするときに JavaScript SDK によって初期化され、Cookie が存在しないかどうかがチェックされ、作成されます。詳細については、 https://github.com/Microsoft/ApplicationInsights-JS/blob/master/JavaScript/JavaScriptSDK/Context/User.tsを参照してください。セッション Cookie にも同様のロジックがあります。

それらの使用をやめるにはどうすればよいですか? JavaScript SDK の最新バージョンでは、 config オブジェクト
を使用して、ユーザー情報とセッション バッファ (AI へのリクエストのレート制限に使用) の両方の Cookie とローカル ストレージを制御できるようになりました。

...snippet...
}({
    instrumentationKey: "<your key>",
    isCookieUseDisabled: true,
    isStorageUseDisabled: true,
    enableSessionStorageBuffer: true
});

それらを保持したい場合、どうすれば有効期限を変更できますか? 制御できる設定は 2 つあります。

  • セッション更新時間 - セッションがアクティビティなしでリセットされるまでの経過時間 (デフォルトは 30 分)
  • セッションの有効期限 - アクティビティがあってもセッションがリセットされるまでの時間 (デフォルトは 24 時間)。

それらを変更するには、インストルメンテーション キーが設定されている場所の横にあるこのスニペットの次の値を設定します。

      ..snippet..
 }({
        instrumentationKey: "<your key>",
        sessionRenewalMs:<your custom value in ms>,
        sessionExpirationMs:<your custom value in ms>

    });
于 2015-07-08T13:37:18.493 に答える