Настройка Azure Log Analytics для Power BI

Power BI интегрируется с Azure Log Analytics, чтобы администраторы и владельцы рабочих областей Premium могли настроить подключение Log Analytics к подписке Power BI. В этой статье описывается, как работает интеграция Log Analytics и Power BI и как настроить ее для вашей среды.

Существует два элемента для получения Azure Log Analytics, работающего для Power BI:

  • Настройте подписку Azure в портал Azure.
  • Включите Log Analytics для Power BI на портале администрирования Power BI.

В следующих разделах описаны действия, описанные в обоих случаях.

Снимок экрана: вкладка

Необходимые компоненты

Прежде чем настроить интеграцию Log Analytics из Power BI, необходимо создать рабочую область Log Analytics в портал Azure. Кроме того, необходимо предоставить разрешение в Azure для служба Power BI записи журналов. Точные требования:

  • Доступ участника к подписке Azure.
  • Зарегистрируйте поставщика ресурсов Microsoft.insights в подписке Azure, где будут собираться данные журнала Power BI.
  • Пользователь, который настроит интеграцию Log Analytics в Power BI, должен находиться в роли участника Log Analytics для рабочей области Log Analytics. См. часто задаваемые вопросы о обходных решениях, если роль владельца не может быть предоставлена.

Включение поставщика ресурсов Microsoft.insights

Для Log Analytics требуется поставщик ресурсов Microsoft.insights, включенный на уровне подписки Azure. Ниже описано, как выполнить процедуру.

  1. Войдите в портал Azure, выберите подписку, которую вы хотите использовать с Log Analytics, и которая содержит рабочие области Log Analytics. В разделе "Параметры" выберите поставщики ресурсов, как показано на следующем рисунке.

    Снимок экрана: параметры меню параметров, выбраны поставщики ресурсов.

  2. Найдите microsoft.insights в разделе "Поставщики ресурсов". Выберите Зарегистрировать.

    Снимок экрана: поставщики ресурсов на главной панели с помощью Microsoft.insights зарегистрированы.

Настройка разрешений

  1. Убедитесь, что пользователь, настроив интеграцию Log Analytics, имеет роль участника Log Analytics рабочей области Log Analytics. При выборе элемента управления доступом (IAM) для подписки в портал Azure и выбора назначений ролей на панели текущего пользователя должна отображаться одна запись: участник Log Analytics для пользователя, который настраивает Log Analytics:

    Снимок экрана: панель управления доступом с выделенной ролью.

После выполнения этих действий будет завершена часть конфигурации Azure Log Analytics. В следующем разделе показано, как продолжить и завершить настройку на портале администрирования Power BI.

Разрешение ведения журнала на уровне рабочей области на портале администрирования

Администратор Power BI должен выполнить следующий шаг, чтобы включить Azure Log Analytics для рабочих областей Power BI Premium. Этот параметр позволяет администраторам рабочей области Power BI Premium отправлять журналы рабочих областей в Azure Log Analytics при выполнении предварительных требований.

  1. На портале администрирования Power BI перейдите к параметрам >аудита и использования клиента и разверните подключения Azure Log Analytics для администраторов рабочей области. Чтобы разрешить администраторам рабочей области включить Log Analytics, установите ползунок в положение "Включено " и укажите необходимые группы безопасности в разделе "Применить", как показано на следующем рисунке.

    Снимок экрана: параметры клиента на портале администрирования. Подключения Azure log analytics для администраторов рабочих областей развернуты и включены.

Настройка ведения журнала в рабочей области Premium

  1. В рабочей области Premium администраторы рабочих областей могут включить Log Analytics. Для этого перейдите в раздел "Параметры ", как показано на следующем рисунке.

    Снимок экрана: область параметров в рабочей области

  2. В области параметров выберите подключения Azure, а затем разверните Log Analytics, как показано на следующем рисунке.

    Снимок экрана: вкладка

  3. Выберите подписку Azure, группу ресурсов и рабочую область Log Analytics, настроенную в предыдущем разделе. Затем нажмите кнопку Сохранить. После успешного завершения развернутый раздел Log Analytics уровня клиента должен выглядеть следующим образом.

    Снимок экрана: вкладка

Отключение Azure Log Analytics

Вы можете отключиться от Azure Log Analytics, чтобы прекратить отправку журналов в Azure. Чтобы отключиться, в параметрах рабочей области Power BI перейдите к параметрам Log Analytics . Выберите "Отключиться от Azure". Затем нажмите кнопку "Сохранить ", чтобы отключиться.

Снимок экрана: предупреждение об отключении на панели параметров.

Примечание.

При отключении рабочей области Power BI от Azure Log Analytics журналы не удаляются. Данные остаются и следуют политикам хранения и хранения, заданным там.

Сценарии использования

Существует множество способов, которые Azure Log Analytics и Power BI могут помочь решить реальные проблемы для вашей организации. Рассмотрим следующий пример.

  • Определите периоды высокой или необычной активности подсистемы Analysis Services по емкости, рабочей области, отчету или пользователю.
  • Анализ производительности запросов и тенденций, включая внешние операции DirectQuery.
  • Анализ длительности обновления семантической модели, перекрытия и шагов обработки.
  • Анализ пользовательских операций, отправленных с помощью конечной точки XMLA класса Premium.

Отправьте нам отзыв в Сообщество Power BI о том, как вы используете ведение журнала и как это помогло вашей организации.

Состояния ошибок и способы их устранения

В следующей таблице представлена коллекция распространенных ошибок, событий или конфигураций, которые активировали их, и предлагаемые разрешения.

Условие триггера Тип Сообщение
У вас нет разрешения на запись в рабочую область 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
  • Команда
  • Deadlock
  • DirectQuery
  • Обнаружить
  • Ошибка
  • ProgressReport
  • Query
  • Session Initialize
  • VertiPaqSEQuery
  • Notification

В следующей таблице описана схема.

Свойство Существующее свойство Служб Azure Analysis Services Description
TimeGenerated Метка времени создания журнала (в формате UTC).
OperationName EventClass_s Событие трассировки служб Analysis Services, связанное с записью журнала. Дополнительные сведения о возможных событиях для каждой категории см. на странице документации по трассировки AS.
CorrelationId Идентификатор для коррелированных событий. Может использоваться для обнаружения коррелированных событий между несколькими таблицами.
PowerBIWorkspaceId Уникальный идентификатор рабочей области, в которой выполняется артефакт.
PremiumCapacityId Уникальный идентификатор емкости Premium, на которой размещен артефакт, на котором работает артефакт.
ApplicationContext ApplicationContext_s Контейнер свойств уникальных идентификаторов, предоставляющий сведения о приложении, выполняющего запрос. например, идентификатор отчета.
ApplicationName ApplicationName_s Содержит имя клиентского приложения, создавшего соединение с сервером. Этот столбец заполняется значениями, передаваемыми приложением, а не отображаемым именем программы.
ArtifactId Уникальный идентификатор ведения журнала ресурсов.
ArtifactKind Тип журнала артефактов операции, например семантической модели.
CpuTimeMs CPUTime_s Объем времени ЦП (в миллисекундах), использованного событием.
ArtifactName DatabaseName_s Имя артефакта Power BI для ведения журнала этой операции.
LogAnalyticsCategory Уникальный Категория событий трассировки служб Analysis Services, связанная с записью журнала. Дополнительные сведения о возможных категориях событий см. на странице документации по трассировки AS.
DatasetMode Режим семантической модели. Импорт, DirectQuery или Составной элемент.
Длительность Duration_s Время (в миллисекундах), затраченное операцией.
Пользователь User_s Пользователь, связанный с запущенной операцией. Используется при олицетворении удостоверения конечного пользователя на сервере.
ВыполнениеUser EffectiveUsername_s Пользователь, выполняя операцию.
OperationDetailName EventSubclass_s Дополнительные сведения о событии трассировки служб Analysis Services, связанном с записью журнала. Дополнительные сведения о возможных значениях см. в свойстве Subclass на странице документации по событиям трассировки, например Command Begin.
XmlaObjectPath ObjectPath_s Путь к объекту. Разделенный запятыми список родителей, начиная с родителя объекта.
PowerBIWorkspaceName Имя рабочей области Power BI, содержащей артефакт.
StatusCode Error_s Код состояния операции. Он охватывает успех и неудачу.
ProgressCounter ProgressTotal_s Счетчик хода выполнения.
XmlaProperties RequestProperties_s Свойства запроса XMLA.
XmlaSessionId SPID_s Идентификатор сеанса Служб Analysis Services.
Уровень Severity_s Содержит уровень серьезности операции, зарегистрированной в журнале. Успешное выполнение, информационное, предупреждение или ошибка.
Identity Сведения о пользователях и утверждениях.
Состояние Состояние операции.
EventText TextData_s Содержит подробные сведения, связанные с операцией, например DAX Query.
CustomerTenantId Идентификатор клиента Power BI клиента.
XmlaRequestId RootActivityId_g Уникальный идентификатор запроса.
ReplicaId Идентификатор реплики, позволяющий определить реплику при включении масштабируемого масштабирования запросов (QSO ). Реплика чтения и записи всегда имеет ReplicaId='AAA" и реплики, доступные только для чтения, имеют реплику реплики, начиная с AAB. Для семантических моделей, отличных от QSO, идентификатор реплики всегда имеет значение AAA.

Событие ExecutionMetrics

Для каждого запроса обнаружения, команды и запроса событие с именем ExecutionMetrics создается в конце запроса. Это событие содержит метрики выполнения для запроса, что может помочь вам в диагностике и устранении неполадок более эффективно. Трассировка ExecutionMetrics коррелирует с ближайшим [Обнаружение|Команда |Запрос]Завершить событие.

Следующий запрос 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

Статистика представлена как текст JSON в свойстве EventText , см. в следующих примерах.

{
    "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
}

В следующей таблице описаны все возможные свойства. Не все свойства создаются в каждом событии, так как содержимое будет зависеть от запроса и семантической модели.

Свойство Description
timeStart Метка времени (UTC) при запуске запроса.
timeEnd Метка времени (UTC) о завершении запроса.
durationMs Общая длительность выполнения.
datasourceConnectionThrottleTimeMs Общее время регулирования после достижения ограничения подключения к источнику данных. Дополнительные сведения о максимальных одновременных подключениях см. здесь.
externalQueryExecutionTimeMs Общее время, затраченное на выполнение всех внешних запросов источника данных во время запроса.
directQueryConnectionTimeMs Общее время, затраченное на создание нового подключения DirectQuery во время запроса
directQueryIterationTimeMs Общее время, затраченное на итерацию результатов, возвращаемых запросами DirectQuery.
directQueryTotalTimeMs Общее время, затраченное на выполнение и чтение всех запросов DirectQuery во время запроса.
executionDelayMs Общее время, затраченное на ожидание доступности потоков пула потоков подсистемы Analysis Services.
totalCpuTimeMs Общее время ЦП запроса.
vertipaqJobCpuTimeMs Общее время ЦП, затраченное подсистемой Vertipaq.
mEngineCpuTimeMs Общее время ЦП, затраченное подсистемой PowerQuery.
queryProcessingCpuTimeMs Общее время ЦП, затраченное задачами в потоке пула потоков запросов служб Analysis Services.
approximatePeakMemoryConsumptionKB Приблизительное общее общее потребление памяти во время запроса.
mEnginePeakMemoryKB Приблизительный размер фиксации пиковой памяти (в килобайтах) во всех контейнерах mashup ядра PowerQuery.
directQueryTimeoutMs Время ожидания, связанное с запросами DirectQuery.
externalQueryTimeoutMs Время ожидания, связанное с запросами к внешним источникам данных.
tabularConnectionTimeoutMs Время ожидания, связанное с подключениями к внешним табличным источникам данных (e.g. SQL).
refreshParallelism Эффективный MaxParallelism, используемый в запросе.
vertipaqTotalRows Общее количество строк, обрабатываемых подсистемой Vertipaq во время операции обновления.
queryResultRows Общее количество строк, возвращаемых в результате запроса DAX.
directQueryTotalRows Общее количество строк, считываемых из различных запросов DirectQuery.
directQueryRequestCount Общее количество запросов подсистемы хранилища DirectQuery, выполняемых подсистемой DAX.
errorCount Общее количество ошибок для текущего запроса.
qsoReplicaVersion Версия реплики для семантических моделей с поддержкой QSO, представленная в формате FILETIME .
Предполагаемоеusage Предполагаемое использование: по умолчанию (0); Запланированное или обновление API (1); Обновление по запросу (2); Плитка панели мониторинга или обновление кэша запросов (3)
commandType Тип команды Служб Analysis Services, запрошенной клиентом (например, пакетная служба, инструкция, резервное копирование,...)
discoverType Тип обнаружения, запрошенного клиентом. См. раздел EventSubclass для списка типов обнаружения.
queryDialect Тип клиента Диалекта использовался для запроса сервера: Неизвестно (-1); Многомерные выражения (0); DMX (1); SQL (2); DAX (3); JSON (4)
capacityThrottlingMs Общее время задержки запроса из-за регулирования емкости. Дополнительные сведения о регулировании см. здесь.
  • Все длительности и время ЦП представлены в миллисекундах.
  • Могут возникнуть дополнительные свойства, не описанные в приведенной выше таблице, и их следует рассматривать как незадокументированные и подлежащие изменению.

Примеры запросов KQL Log Analytics

Следующая коллекция примеров запросов может оказаться полезной при использовании Azure Log Analytics с Power BI. Они могут выполняться непосредственно в портал Azure или через 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

Изучите и получите аналитические сведения о данных Azure Log Analytics Power BI с помощью шаблона отчета Power BI с открытым исходным кодом на GitHub.

В следующих статьях вы узнаете больше об Power BI и интеграции с Azure Log Analytics.