我们希望运行查询以获取网页浏览量,例外情况等,不仅针对用户本身,还针对用户群。这将有助于我们确定未来发展的优先顺序。
所以我的问题是,是否可以向用户添加用户组甚至更好的某种标签,我们可以用来查询。
我知道我们可以通过创建所有自定义调用来实现此目的,但是有默认方式吗?如果没有,那么将这些参数添加到自定义调用的最佳方法是什么?目前我正在使用javscript函数appInsights.setAuthenticatedUserContext()来传递用户信息
答案 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初始化器:
并创建一个初始化程序,用于在应用程序发送的所有遥测中创建和设置这些自定义属性,而不是仅在您上面明确写入的调用中发送它。
编辑以添加:此外,如果您使用自定义维度设置此信息,您现在可以在// 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.cs
或WebApiConfig.cs
:
protected void Application_Start()
{
TelemetryConfiguration.Active.TelemetryInitializers
.Add(new UserGroupTelemetryIntitializer());
}
您可以阅读有关遥测初始化器here的更多信息。