Azure 应用程序见解删除了一些自定义事件

Azure application insights drops some custom events

我有一个 Web 应用程序,想使用以下代码跟踪 AppInsights 中的用户登录:

    [HttpPost]
    public async Task<ActionResult> Login(AccountViewModel model, string returnUrl)
    {
        var success = await _userManager.CheckPasswordAsync(model);

        _telemetryClient.TrackEvent("Login",
            new Dictionary<string, string>
            {
                { "UserName", model.UserName },
                { "UsingPin", model.UsingPin.ToString()},
                { "ReturnUrl", returnUrl},
                { "LastUsedUrl", model.LastUsedUrl },
                { "Success", success.ToString() }
            });

         return View(model);
    }

代码有效,我在分析门户中获得了事件...但只有一部分事件!在数据库端的会话 table 中,我有大约 1000 个唯一用户登录,但 AI 报告大约有 100...

我已经检查过的内容:

  1. _telemetryClient 是通过 Unity 配置的单例 (<lifetime type="singleton" />)
  2. Azure 门户中没有配置配额
  3. 我有超过 1000 个 POST 请求登录方法,这看起来恰到好处(我的意思是每个请求都到达这个确切的服务器,returns 200 状态等)

所以看起来 Azure 只是删除了一些自定义事件...或者由于某种原因它们没有发送到 azure。是否缺少任何配置部分?

据我所知,如果您的应用程序发送大量数据并且您使用的是 ASP.NET 版本 2.0.0-beta3 或更高版本的 Application Insights SDK,则自适应采样功能可能会运行并发送只有你遥测的一部分。

所以我想这就是您在 AI 中只看到 100 条记录的原因。

如果你想把所有的记录都发送给AI,我建议你可以关闭自适应采样。更多关于如何禁用自适应采样的详细信息,您可以参考article

注意:不推荐这样做。设计采样以便正确传输相关遥测数据,以用于诊断目的。