Share via


Power BI용 Azure Log Analytics 구성

Power BI는 Azure Log Analytics와 통합되어 관리자 및 Premium 작업 영역 소유자가 Power BI 구독에 대한 Log Analytics 연결을 구성할 수 있도록 합니다. 이 문서에서는 Log Analytics와 Power BI 간의 통합이 작동하는 방식과 이러한 통합을 사용자 환경에 맞게 구성하는 방법을 설명합니다.

Azure Log Analytics가 Power BI에서 작동하도록 하는 두 가지 요소가 있습니다.

  • Azure Portal에서 Azure 구독을 구성합니다.
  • Power BI 관리 포털에서 Power BI용 Log Analytics를 사용하도록 설정합니다.

다음 섹션에서는 두 작업을 모두 수행하는 단계를 안내합니다.

설정 창에서 열린 Azure 연결 탭의 스크린샷.

필수 조건

Power BI에서 Log Analytics 통합을 구성하려면 먼저 Azure Portal에서 Log Analytics 작업 영역을 만들어야 합니다. 또한 Azure에서 Power BI 서비스가 로그를 쓸 수 있는 권한을 부여해야 합니다. 정확한 요구 사항은 다음과 같습니다.

  • Azure 구독에 대한 기여자 액세스.
  • Power BI 로그 데이터를 수집하는 'microsoft insights' 리소스 공급자를 Azure 구독에 등록합니다.
  • Power BI에서 Log Analytics 통합을 설정하는 사용자는 Log Analytics 작업 영역의 Log Analytics 기여자 역할에 속해야 합니다. 소유자 역할을 지정할 수 없는 경우 FAQ에서 해결 방법을 참조하세요.

'microsoft.insights' 리소스 공급자 사용

Log Analytics를 사용하려면 Azure 구독 수준에서 'microsoft insights' 리소스 공급자를 사용하도록 설정해야 합니다. 다음 단계에서 이 프로세스를 안내합니다.

  1. Azure Portal에 로그인하고 Log Analytics에서 사용하려고 하며 Log Analytics 작업 영역을 포함하는 구독을 선택합니다. 설정 섹션에서 다음 이미지와 같이 리소스 공급자를 선택합니다.

    설정 메뉴 옵션의 스크린샷, 리소스 공급자가 선택되어 있습니다.

  2. 리소스 공급자에서 microsoft.insights를 검색합니다. 그런 다음 등록을 선택합니다.

    Microsoft.insights가 등록된 기본 창의 리소스 공급자 스크린샷

권한 설정

  1. Log Analytics 통합을 구성하는 사용자에게 Log Analytics 작업 영역의 Log Analytics 기여자 역할이 있는지 확인합니다. Azure Portal에서 구독에 대해 액세스 제어(IAM)를 선택하고 패널의 맨 위에 있는 선택 옵션에서 역할 할당을 선택하는 경우, 현재 사용자에게는 Log Analytics를 구성하는 사용자에 대한 Log Analytics 기여자 항목이 하나 표시되어야 합니다.

    역할이 강조 표시된 액세스 제어 창의 스크린샷.

이러한 단계를 완료하면 Azure Log Analytics 구성 부분이 완료된 것입니다. 다음 섹션에서는 Power BI 관리 포털에서 구성을 계속하고 완료하는 방법을 보여 줍니다.

관리 포털에서 작업 영역 수준 로깅 허용

Power BI 관리자는 Power BI Premium 작업 영역에 대해 Azure Log Analytics를 사용하도록 설정하기 위해 다음 단계를 완료해야 합니다. 이 설정을 통해 Power BI Premium 작업 영역 관리자는 필수 구성 요소가 충족될 경우 Azure Log Analytics에 작업 영역 로그를 보낼 수 있습니다.

  1. Power BI 관리 포털에서 테넌트 설정 > 감사 및 사용 설정으로 이동하고 작업 영역 관리자를 위한 Azure Log Analytics 연결을 확장합니다. 작업 영역 관리자가 Log Analytics를 사용하도록 설정하도록 허용하려면 다음 이미지와 같이 슬라이더를 사용으로 설정하고 다음에 적용에서 필요한 보안 그룹을 지정합니다.

    관리 포털의 테넌트 설정 스크린샷 작업 영역 관리자를 위한 Azure 로그 분석 연결이 확장되고 사용하도록 설정됩니다.

Premium 작업 영역에서 로깅 구성

  1. Premium 작업 영역에서 작업 영역 관리자는 Log Analytics를 사용하도록 설정할 수 있습니다. 이렇게 하려면 다음 이미지와 같이 설정으로 이동합니다.

    프리미엄 작업 영역의 설정 창 스크린샷

  2. 설정 창에서 Azure 연결을 선택하고 다음 그림과 같이 Log Analytics를 확장합니다.

    설정 창에서 열려 있는 Azure 연결 탭의 스크린샷, Log Analytics가 확장됩니다.

  3. Azure 구독, 리소스 그룹을 선택한 다음, 이전 섹션에서 구성된 Log Analytics 작업 영역을 선택합니다. 그런 다음, 저장을 선택합니다. 성공적으로 완료되면 확장된 테넌트 수준 Log Analytics 섹션은 다음 이미지와 유사합니다.

    샘플 정보를 보여 주는 설정 창에서 열린 Azure 연결 탭의 스크린샷.

Azure Log Analytics 연결 끊기

Azure로의 로그 전송을 중지하도록 Azure Log Analytics와의 연결을 끊을 수 있습니다. 연결을 끊으려면 Power BI 작업 영역 설정에서 Log Analytics 설정으로 이동합니다. Azure에서 연결 끊기를 선택합니다. 그런 다음 저장을 선택하여 연결을 끊습니다.

설정 창의 연결 끊기 경고 스크린샷

참고 항목

Azure Log Analytics에서 Power BI 작업 영역의 연결을 끊어도 로그는 삭제되지 않습니다. 데이터는 그대로 유지되며 사용자가 설정한 스토리지 및 보존 정책을 따릅니다.

사용 시나리오

Azure Log Analytics 및 Power BI는 다양한 방식으로 조직의 실제 문제를 해결하는 데 도움이 되고 있습니다. 다음을 고려하십시오.

  • 용량, 작업 영역, 보고서 또는 사용자별로 높거나 비정상적인 Analysis Services 엔진 활동 기간을 식별합니다.
  • 외부 DirectQuery 작업을 포함하여 쿼리 성능 및 추세를 분석합니다.
  • 의미 체계 모델 새로 고침 기간, 겹침 및 처리 단계를 분석합니다.
  • Premium XMLA 엔드포인트를 사용하여 보낸 사용자 지정 작업을 분석합니다.

Power BI Community에서 로깅을 사용하는 방법 및 로깅이 조직에 어떤 방식으로 도움이 되는지에 대한 피드백을 보내주세요.

오류 조건 및 해결 방법

다음 표에서는 일반적인 오류, 오류를 트리거한 이벤트나 구성 및 권장 해결 방법 모음을 제공합니다.

트리거 조건 Type Message
Log Analytics 작업 영역에 쓸 수 있는 권한이 없습니다. 오류 - 계속할 수 없음 Power BI에 연결하려면 이 Log Analytics 작업 영역에 대해 쓰기 권한이 있어야 합니다. 이 문제를 해결하려면 Azure 구독을 관리하는 조직의 담당자에게 문의하세요.
Log Analytics 작업 영역 계정에 쓸 수 있는 권한이 없습니다. 오류 - 계속할 수 없음 Power BI에 연결하려면 이 Log Analytics 작업 영역에 대해 쓰기 권한이 있어야 합니다.
Azure 구독에 대한 액세스 권한이 없습니다. 오류 - 계속할 수 없음 Azure 구독에 대한 액세스 권한이 없습니다. 조직에서 Azure 구독을 관리하는 사용자에게 액세스 이상의 권한을 기여자에게 부여하도록 요청합니다.
해당 구독 내의 Azure Log Analytics 작업 영역에 액세스할 수 없습니다. 오류 - 계속할 수 없음 Azure Log Analytics 작업 영역에 대한 액세스 권한이 없습니다. 조직에서 Azure 구독을 관리하는 사용자에게 Log Analytics 소유자 또는 기여자 역할에 자신에게 추가하도록 요청합니다.
연결하려고 할 때 작업 영역 수준 Log Analytics가 사용하지 않도록 설정됨 정보 작업 영역 관리자에게 자체 Log Analytics 작업 영역을 연결할 수 있는 권한을 부여해 달라고 테넌트 관리자에게 요청합니다.
연결을 끊으려고 할 때 작업 영역 수준 Log Analytics가 사용하지 않도록 설정됨 정보 테넌트 관리자가 자신의 Azure Log Analytics 작업 영역을 연결하기 위한 작업 영역 관리자의 권한을 취소했습니다. 연결을 끊으면 다른 연결에 연결할 수 없습니다.

이벤트 및 스키마

Azure Log Analytics를 사용하도록 설정하면 다음 이벤트 범주를 기록하기 시작합니다. 이러한 이벤트에 대한 자세한 내용은 Analysis Services 추적 이벤트를 참조하세요.

  • AggregateTableRewriteQuery
  • 명령어
  • 교착 상태
  • DirectQuery
  • Discover
  • 오류
  • ProgressReport
  • 쿼리
  • 세션 초기화
  • VertiPaqSEQuery
  • 알림

다음 표에서는 스키마에 대해 설명합니다.

속성 기존 Azure Analysis Services 속성 설명
TimeGenerated 로그가 생성된 시간의 타임스탬프(UTC)입니다.
OperationName EventClass_s 로그 레코드와 연결된 작업입니다.
CorrelationId 상관 관계가 있는 이벤트의 ID입니다. 여러 테이블 간의 상관 관계가 지정된 이벤트를 식별하는 데 사용할 수 있습니다.
PowerBIWorkspaceId 작업 중인 아티팩트를 포함하는 작업 영역의 고유 식별자입니다.
PremiumCapacityId 작업 중인 아티팩트를 호스트하는 Premium 용량의 고유 식별자입니다.
ApplicationContext ApplicationContext_s 요청을 실행하는 애플리케이션에 대한 세부 정보를 제공하는 고유 식별자의 속성 모음입니다. 보고서 ID를 예로 들 수 있습니다.
ApplicationName ApplicationName_s 서버에 대한 연결을 만든 클라이언트 애플리케이션의 이름을 포함합니다. 이 열은 표시된 프로그램 이름이 아닌 애플리케이션에서 전달되는 값으로 채워집니다.
ArtifactId 데이터를 로깅하는 리소스의 고유 식별자입니다.
ArtifactKind 작업을 로깅하는 아티팩트 유형(예: 의미 체계 모델)입니다.
CpuTimeMs CPUTime_s 이벤트에 의해 사용된 CPU 시간(밀리초)입니다.
ArtifactName DatabaseName_s 이 작업을 로깅하는 Power BI 아티팩트의 이름입니다.
LogAnalyticsCategory 고유한 감사/보안/요청과 같은 이벤트의 범주입니다.
DatasetMode 의미 체계 모델의 모드입니다. 가져오기, DirectQuery 또는 복합 모드가 있습니다.
DurationMs Duration_s 이벤트에 소요된 시간(밀리초)입니다.
사용자 User_s 실행 중인 작업과 연결된 사용자입니다. 서버에서 최종 사용자 ID를 가장해야 할 때 사용합니다.
ExecutingUser EffectiveUsername_s 작업을 실행하는 사용자입니다.
OperationDetailName EventSubclass_s 작업에 대한 자세한 정보입니다.
XmlaObjectPath ObjectPath_s 개체 경로입니다. 개체의 부모로 시작되는 쉼표로 구분된 부모 목록입니다.
PowerBIWorkspaceName 아티팩트가 포함된 Power BI 작업 영역의 이름입니다.
StatusCode Error_s 작업의 상태 코드입니다. 성공 및 실패를 포함합니다.
ProgressCounter ProgressTotal_s 진행률 카운터입니다.
XmlaProperties RequestProperties_s XMLA 요청의 속성입니다.
XmlaSessionId SPID_s Analysis Services 세션 식별자입니다.
수준 Severity_s 로깅되는 작업의 심각도 수준을 포함합니다. 성공, 정보, 경고 또는 오류가 있습니다.
ID 사용자 및 클레임에 대한 정보입니다.
상태 작업의 상태입니다.
EventText TextData_s 작업과 관련된 자세한 정보(예: DAX 쿼리)를 포함합니다.
CustomerTenantId 고객의 Power BI 테넌트 식별자입니다.
XmlaRequestId RootActivityId_g 요청의 고유 식별자입니다.
ReplicaId QSO(쿼리 스케일 아웃)를 사용할 때 복제본을 식별할 수 있는 복제본 식별자입니다. 읽기-쓰기 복제본에는 항상 ReplicaId='AAA'가 있고 읽기 전용 복제본에는 'AAB'부터 시작하는 ReplicaId가 있습니다. QSO를 사용하지 않는 의미 체계 모델의 경우 ReplicaId는 항상 'AAA'입니다.

ExecutionMetrics 이벤트

모든 Discover, Command 및 Query 요청에 대해 ExecutionMetrics라는 이벤트는 요청이 끝날 때 생성됩니다. 이 이벤트에는 요청에 대한 실행 메트릭이 포함되어 있어 보다 효과적으로 진단하고 문제를 해결하는 데 도움이 될 수 있습니다. ExecutionMetrics 추적은 가장 가까운 [검색|명령|Query]End 이벤트입니다.

다음 KQL 쿼리는 마지막 날에 의미 체계 모델의 모든 새로 고침 작업에 대한 ExecutionMetrics 이벤트를 검색합니다.

let commands = PowerBIDatasetsWorkspace
    | where TimeGenerated > ago(1d)
    | where ArtifactId =~ "[Semantic Model Id]"
    | where OperationName in ("CommandEnd")
    | where EventText contains "<Refresh"
    | project TimeGenerated, ArtifactId, CommandOperationName = OperationName, XmlaRequestId, CorrelationId, CommandText = EventText;
let executionMetrics = PowerBIDatasetsWorkspace        
    | where OperationName == "ExecutionMetrics"
    | project TimeGenerated, XmlaRequestId, CorrelationId, EventText;
commands
| join kind=leftouter executionMetrics on XmlaRequestId

다음 KQL 쿼리는 작업 영역, 항목 및 사용자별로 마지막 날에 제한된 이벤트를 검색합니다.

let executionMetrics = PowerBIDatasetsWorkspace
    | where TimeGenerated > ago(1d)    
    | where OperationName == "ExecutionMetrics"    
    | extend eventTextJson = parse_json(EventText)      
    | extend capacityThrottlingMs=toint(eventTextJson.capacityThrottlingMs)
    | where capacityThrottlingMs > 0;
let commands = PowerBIDatasetsWorkspace    
    | where OperationName in ("CommandEnd", "QueryEnd", "DiscoverEnd")    
    | project
        TimeGenerated,
        ExecutingUser,
        ArtifactId,
        PowerBIWorkspaceId,
        CommandOperationName = OperationName,
        XmlaRequestId,
        CorrelationId,
        CommandText = EventText;
commands
| join kind=inner executionMetrics on XmlaRequestId
| project
    TimeGenerated,
    ArtifactId,
    PowerBIWorkspaceId,
    ExecutingUser,
    CommandOperationName,
    XmlaRequestId,
    EventText,
    CommandText,
    capacityThrottlingMs
| summarize countThrottling = count(), avgThrottlingDuration = avg(capacityThrottlingMs) by PowerBIWorkspaceId, ArtifactId, ExecutingUser, CommandOperationName

통계는 EventText 속성에 JSON 텍스트로 표시됩니다. 다음 예제를 참조하세요.

{
    "timeStart": "2024-03-20T12:39:59.681Z",
    "timeEnd": "2024-03-20T13:01:14.241Z",
    "durationMs": 1274559,    
    "vertipaqJobCpuTimeMs": 156,
    "mEngineCpuTimeMs": 9617484,
    "totalCpuTimeMs": 9618469,
    "executionDelayMs": 10,
    "approximatePeakMemConsumptionKB": 1683409,
    "mEnginePeakMemoryKB": 1676816,
    "tabularConnectionTimeoutMs": 18000000,    
    "refreshParallelism": 16,
    "vertipaqTotalRows": 114,
    "intendedUsage": 2
}

다음 표에서는 가능한 모든 속성을 설명합니다. 콘텐츠가 요청 및 의미 체계 모델에 따라 달라지기 때문에 모든 속성이 각 이벤트에서 내보내지는 것은 아닙니다.

속성 설명
timeStart 요청이 시작된 시점의 타임스탬프(UTC)입니다.
timeEnd 요청이 종료된 시점의 타임스탬프(UTC)입니다.
durationMs 총 실행 기간입니다.
datasource커넥트ionThrottleTimeMs 데이터 원본 연결 제한에 도달한 후의 총 제한 시간입니다. 여기에서 최대 동시 연결에 대해 자세히 알아봅니다.
directQuery커넥트ionTimeMs 요청 중에 새 DirectQuery 연결을 만드는 데 소요된 총 시간
directQueryIterationTimeMs DirectQuery 쿼리에서 반환된 결과를 반복하는 데 소요된 총 시간입니다.
directQueryTotalTimeMs 요청 중에 모든 DirectQuery 쿼리를 실행하고 읽는 데 소요된 총 시간입니다.
executionDelayMs Analysis Services 엔진 스레드 풀 스레드 가용성을 기다리는 데 소요된 총 시간입니다.
totalCpuTimeMs 요청의 총 CPU 시간입니다.
vertipaqJobCpuTimeMs Vertipaq 엔진에서 소요된 총 CPU 시간입니다.
mEngineCpuTimeMs PowerQuery 엔진에서 소요된 총 CPU 시간입니다.
queryProcessingCpuTimeMs Analysis Services 쿼리 스레드 풀 스레드의 태스크에서 소요된 총 CPU 시간입니다.
approximatePeakMemoryConsumptionKB 요청 중 대략적인 최대 총 메모리 사용량입니다.
mEnginePeakMemoryKB 모든 PowerQuery 엔진 매시업 컨테이너에서 대략적인 최대 메모리 커밋 크기(킬로바이트)입니다.
directQueryTimeoutMs DirectQuery 쿼리와 관련된 시간 제한입니다.
externalQueryTimeoutMs 외부 데이터 원본에 대한 쿼리와 관련된 시간 제한입니다.
tabular커넥트ionTimeoutMs 외부 테이블 형식 데이터 원본 연결(e.g. SQL)과 관련된 시간 제한입니다.
refreshParallelism 요청에 사용되는 유효한 MaxParallelism입니다.
vertipaqTotalRows 새로 고침 작업 중 Vertipaq 엔진에서 처리한 총 행 수입니다.
queryResultRows DAX 쿼리의 결과로 반환된 총 행 수입니다.
directQueryTotalRows 다양한 DirectQuery 쿼리에서 읽은 총 행 수입니다.
directQueryRequestCount DAX 엔진에서 실행한 총 DirectQuery 스토리지 엔진 쿼리 수입니다.
errorCount 현재 요청에 대한 총 오류 수입니다.
qsoReplicaVersion FILETIME 형식으로 표현되는 QSO 지원 의미 체계 모델의 복제본 버전입니다.
intendedUsage 의도한 사용: 기본값(0); 예약 또는 API 새로 고침(1); 주문형 새로 고침(2); 대시보드 타일/쿼리 캐시 새로 고침(3)
discoverType 클라이언트에서 요청한 검색 유형입니다. 검색 유형 목록은 EventSubclass를 참조하세요.
queryDialect 서버를 쿼리하는 데 사용된 언어 클라이언트 유형: 알 수 없음(-1); MDX(0); DMX(1); SQL(2); DAX(3); JSON (4)
capacityThrottlingMs 용량 제한으로 인해 요청이 지연된 총 시간입니다. 여기에서 제한에 대해 자세히 알아보세요.
  • 모든 기간 및 CPU 시간은 밀리초 단위로 표시됩니다.
  • 위의 표에 설명된 속성 이외의 추가 속성이 발생할 수 있으며 문서화되지 않은 것으로 간주되어 변경될 수 있습니다.

샘플 Log Analytics 쿼리

다음 샘플 쿼리 모음은 Power BI에서 Azure Log Analytics를 사용할 때 유용할 수 있습니다. Azure Portal에서 직접 실행하거나 API를 통해 실행하여 일반적으로 약 5~10분 전의 최신 데이터를 쿼리할 수 있습니다.

// log count per day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| summarize count() by format_datetime(TimeGenerated, 'yyyy-MM-dd')


// average query duration by day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'QueryEnd'
| summarize avg(DurationMs) by format_datetime(TimeGenerated, 'yyyy-MM-dd')


//query duration percentiles for a single day in 1 hour bins
PowerBIDatasetsWorkspace
| where TimeGenerated >= todatetime('2021-04-28') and TimeGenerated <= todatetime('2021-04-29')
| where OperationName == 'QueryEnd'
| summarize percentiles(DurationMs, 0.5, 0.9) by bin(TimeGenerated, 1h)


// refresh durations by workspace and semantic model for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'CommandEnd'
| where ExecutingUser contains 'Power BI Service'
| where EventText contains 'refresh'
| project PowerBIWorkspaceName, DatasetName = ArtifactName, DurationMs

// query count, distinctUsers, avgCPU, avgDuration by workspace for last 30d
PowerBIDatasetsWorkspace  
| where TimeGenerated > ago(30d)
| where OperationName == "QueryEnd" 
| summarize QueryCount=count()
    , Users = dcount(ExecutingUser)
    , AvgCPU = avg(CpuTimeMs)
    , AvgDuration = avg(DurationMs)
by PowerBIWorkspaceId

샘플 Power BI 보고서 템플릿

GitHub에서 오픈 소스 Power BI 보고서 템플릿을 사용하여 Azure Log Analytics Power BI 데이터에 대한 인사이트를 탐색하고 가져옵니다.

다음 문서는 Power BI에 관해 설명하고 Power BI와 Azure Log Analytics와의 통합에 대해 유용한 정보를 제공합니다.