をリクエストだけでなく、ページビュー、例外などをユーザーグループに対して照会したい場合は、間違いなくTelemetryInitializers
に行ってください。テレメトリーイニシャライザを使用すると、すべてのテレメトリデータにグローバルプロパティを追加できます。つまり、アプリから送信されたすべてのテレメトリイベントに対して実行されます。
以下の例は、すべてのテレメトリイベントに対してUserGroupまたはその他のプロパティを追加するためにTelemetryInitializer
を追加する方法を示しています。この例では、ユーザーのグループIDは、その所有者のリストから取得できると想定しています。しかし、それは役割のように簡単なこともあります。それを微調整し、ユーザーのグループを特定する独自の方法を実装することもできます。ここでは、ユーザのAzure広告クレームのリストから取得されたユーザのテナントに基づいてグループ化しています。これが完了すると、リクエスト、例外、ページビューなどのチャートをクエリするだけでなく、クエリを作成して、それぞれに利用可能な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についての詳細を読むことができます。