Поделиться через


Настройка 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 Contributor в рабочей области 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
  • Запрос
  • Инициализация сессии
  • VertiPaqSEQuery
  • Уведомление

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

Собственность Существующее свойство Azure Analysis Services Описание
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 для получения подробной информации о возможных категориях событий.
Режим набора данных Режим семантической модели. Импорт, DirectQuery или Комбинированный.
ДлительностьMs Продолжительность_с Время (в миллисекундах), затраченное операцией.
Пользователь User_s Пользователь, связанный с запущенной операцией. Используется, когда требуется имитация идентичности конечного пользователя на сервере.
ВыполняющийПользователь ЭффективноеИмяПользователя_s Пользователь, выполняющий операцию.
OperationDetailName EventSubclass_s Дополнительные сведения о событии трассировки служб Analysis Services, связанном с записью журнала. Дополнительные сведения о возможных значениях см. в свойстве Subclass на странице документации по событиям трассировки, например Command Begin.
XmlaObjectPath ObjectPath_s Путь к объекту. Разделенный запятыми список родителей, начиная с родителя объекта.
PowerBIWorkspaceName Имя рабочей области Power BI, содержащей артефакт.
StatusCode Ошибка_s Код состояния операции. Он охватывает успех и неудачу.
ProgressCounter ProgressTotal_s Счетчик прогресса.
XmlaProperties RequestProperties_s Свойства запроса XMLA.
XmlaSessionId SPID_s Идентификатор сеанса службы Analysis Services.
Уровень Тяжесть_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
}

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

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

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

Следующая коллекция примеров запросов может оказаться полезной при использовании 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.