使用应用洞察进行用户组跟踪

时间:2017-05-10 07:08:01

标签: azure-application-insights user-tracking

我们希望运行查询以获取网页浏览量,例外情况等,不仅针对用户本身,还针对用户群。这将有助于我们确定未来发展的优先顺序。

所以我的问题是,是否可以向用户添加用户组甚至更好的某种标签,我们可以用来查询。

我知道我们可以通过创建所有自定义调用来实现此目的,但是有默认方式吗?如果没有,那么将这些参数添加到自定义调用的最佳方法是什么?目前我正在使用javscript函数appInsights.setAuthenticatedUserContext()来传递用户信息

2 个答案:

答案 0 :(得分:0)

您可以在发送的任何/所有事件中使用自定义属性添加用户组或标签。

https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-custom-events-metrics

var current = "img0";
function show_pic(this_one) {
    document.getElementById(current).style.display = "none";
    document.getElementById(this_one).style.display = "block";
    current = this_one;
}

一旦你按照你想要的方式工作,你就可以使用telelmetry初始化器:

https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-filtering-sampling#add-properties

并创建一个初始化程序,用于在应用程序发送的所有遥测中创建和设置这些自定义属性,而不是仅在您上面明确写入的调用中发送它。

编辑以添加:此外,如果您使用自定义维度设置此信息,您现在可以在// 2017年版本中宣布的新使用工具中的过滤器中使用它:{{3 }}

答案 1 :(得分:0)

由于您不仅要查询请求,还要查询针对用户组的网页浏览量,例外情况等,您绝对应该使用TelemetryInitializers。遥测初始化器允许您向所有遥测数据添加全局属性,这意味着它们将针对从您的应用发送的所有遥测事件执行。

以下示例显示如何添加TelemetryInitializer以为每个遥测事件添加UserGroup或任何其他属性。该示例假定可以从其声明列表中获得用户的组标识。然而,它也可以像角色一样简单。您还可以调整它并实现自己识别用户组的方式。在这里,我们根据用户的租户进行分组,该租户是从用户的Azure AD声明列表中获取的。完成此操作后,您应该能够查询以及使用每个属性中可用的UserGroup属性为您的请求,例外,综合浏览量等创建图表。

public class UserGroupTelemetryIntitializer : ITelemetryInitializer
{
    public void Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
    {
        var context = HttpContext.Current;

        if (context == null)
            return;

        if (context.User.Identity.IsAuthenticated)
        {
            // Retrieve the claim that helps identify the user's group. In this case
            // we retrieve the Tenant ID from the Azure Active Directory claims
            var user = (context.User as System.Security.Claims.ClaimsPrincipal);
            var userGroup = user.Claims.FirstOrDefault(
                x => x.Type == "http://schemas.microsoft.com/identity/claims/tenantid");

            // Add the Value of the claim as the UserGroup property for each telemetry
            if (userGroup != null)
                telemetry.Context.Properties["UserGroup"] = userGroup.Value;
        }
        else
            telemetry.Context.Properties["UserGroup"] = "None";
    }
}

请勿忘记使用ApplicationInsights.config加载遥测初始值设定项:

<ApplicationInsights>
  <TelemetryInitializers>
    <!-- Fully qualified type name, assembly name: -->
    <Add Type="MvcWebApp.Telemetry.UserGroupTelemetryIntitializer, MvcWebApp"/>
    ...
  </TelemetryInitializers>
</ApplicationInsights>

或者,您也可以使用代码代替加载初始值设定项。在global.asax.csWebApiConfig.cs

protected void Application_Start()
{
    TelemetryConfiguration.Active.TelemetryInitializers
        .Add(new UserGroupTelemetryIntitializer());
}

您可以阅读有关遥测初始化器here的更多信息。