2017-05-10 1 views
0

우리는 사용자 자체에 대해서뿐만 아니라 사용자 그룹에 대해서도 페이지 뷰, 예외 등을 얻기 위해 쿼리를 실행하려고합니다. 이것은 우리가 미래의 개발에 우선 순위를 두는 데 도움이 될 것입니다.응용 프로그램 통찰력을 이용한 사용자 그룹 추적

제 질문은 사용자 그룹을 추가하거나 더 나은 태그를 사용자에게 추가하여 쿼리 할 수 ​​있는지 여부입니다.

모든 사용자 지정 호출을 만들어서이 작업을 수행 할 수 있지만 기본 방법이 있습니까? 그렇지 않은 경우 이러한 매개 변수를 사용자 지정 호출에 추가하는 가장 좋은 방법은 무엇입니까? 현재 javscript 함수 인 appInsights.setAuthenticatedUserContext()를 사용하여 사용자 정보를 전달하고 있습니다.

답변

0

사용자가 보낸 모든/모든 이벤트에 사용자 정의 속성을 사용하여 사용자 그룹을 추가 할 수 있습니다.

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

telemetryClient.TrackEvent("the event", 
    new Dictionary<string,string> { {"UserGroup", theUserGroup } }); 

당신은 당신이 원하는 방식으로 작업하는, 당신은 다음 telelmetry 이니셜 라이저를 사용할 수있는 일단 :

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

을 만들하기 위해 초기화를 만들 해당 맞춤 속성을 에 설정하십시오. 모두 원격 측정 전송 됨 응용 프로그램에서 위와 같이 명시 적으로 작성한 호출에서 보내는 대신 응용 프로그램에서 호출 할 수 있습니다.

편집 추가 : 또한, 사용자 정의 크기를 사용하여이 정보를 설정 한 경우, 당신은 지금 2017 //에서 발표 된 새로운 사용 도구 필터에서 사용할 구축 할 수 있습니다 : 당신 때문에 https://docs.microsoft.com/en-us/azure/application-insights/app-insights-usage-segmentation

0

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

관련 문제