Настройка 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. Ниже описано, как выполнить процедуру.
Войдите в портал Azure, выберите подписку, которую вы хотите использовать с Log Analytics, и которая содержит рабочие области Log Analytics. В разделе "Параметры" выберите поставщики ресурсов, как показано на следующем рисунке.
Найдите microsoft.insights в разделе "Поставщики ресурсов". Выберите Зарегистрировать.
Настройка разрешений
Убедитесь, что пользователь, настроив интеграцию 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 при выполнении предварительных требований.
На портале администрирования Power BI перейдите к параметрам >аудита и использования клиента и разверните подключения Azure Log Analytics для администраторов рабочей области. Чтобы разрешить администраторам рабочей области включить Log Analytics, установите ползунок в положение "Включено " и укажите необходимые группы безопасности в разделе "Применить", как показано на следующем рисунке.
Настройка ведения журнала в рабочей области Premium
В рабочей области Premium администраторы рабочих областей могут включить Log Analytics. Для этого перейдите в раздел "Параметры ", как показано на следующем рисунке.
В области параметров выберите подключения Azure, а затем разверните Log Analytics, как показано на следующем рисунке.
Выберите подписку 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.
- Использование Azure Log Analytics в Power BI
- Azure Log Analytics в Power BI: вопросы и ответы
- What is Power BI Premium? (Что собой представляет Power BI Premium)
- Рабочие области в Power BI