을 요청뿐만 아니라 사용자 그룹에 대한 페이지 뷰, 예외 등을 쿼리하려는 경우 반드시 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에 대한 자세한 내용을보실 수 있습니다.