Azure应用程序洞察会删除一些自定义事件

时间:2017-07-25 07:02:51

标签: c# azure azure-application-insights

我有一个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);
    }

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

我已经检查过:

  1. _telemetryClient是通过Unity(<lifetime type="singleton" />
  2. 配置的单例
  3. Azure门户中没有配置配额
  4. 我对Login方法有超过1000个POST请求,这看起来恰到好处(我的意思是每个请求来到这个确切的服务器,返回200状态等)。
  5. 所以看起来Azure只会删除一些自定义事件......或者由于某种原因它们不会发送到azure。是否有我缺少的配置部分?

1 个答案:

答案 0 :(得分:2)

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

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

如果您想将所有记录发送到AI,我建议您可以禁用自适应采样。有关如何禁用自适应采样的更多详细信息,请参阅此article

注意:不建议这样做。采样的目的是为了诊断目的,正确传输相关的遥测技术。