Configurar o Log Analytics para o Power BI
O Power BI está se integrando ao Azure Log Analytics para permitir que administradores e proprietários de workspace Premium configurem, nas respectivas assinaturas do Power BI, uma conexão do Log Analytics. Este artigo descreve como funciona a integração entre o Log Analytics e o Power BI e como configurar o Log Analytics para o seu ambiente.
Há dois elementos para fazer com que o Azure Log Analytics funcione para o Power BI:
- Navegue até sua assinatura no portal do Azure.
- Habilite o Log Analytics para o Power BI no portal de Administração do Power BI.
As seções a seguir conduzem você pelas etapas de cada um deles, respectivamente.
Pré-requisitos
Para configurar a integração do Log Analytics com o Power BI, crie um workspace do Log Analytics no portal do Azure. Você também precisa dar permissão no Azure para o serviço do Power BI gravar logs. Os requisitos exatos são:
- Acesso de colaborador à assinatura do Azure.
- Registrar o provedor de recursos 'microsoft.insights' na assinatura do Azure em que você coleta os dados de log do Power BI.
- O usuário que configura a integração do Log Analytics no Power BI deve estar na função Log Analytics Contributor para o Log Analytics Workspace. Confira as perguntas frequentes para obter soluções alternativas se a função de Proprietário não puder ser atribuída.
Habilite o provedor de recursos 'microsoft.insights'
O Log Analytics requer que o provedor de recursos 'microsoft.insights' esteja habilitado no nível da assinatura do Azure. As etapas a seguir conduzirão você pelo processo.
Entre no portal do Azure, selecione a assinatura que você deseja usar com o Log Analytics e que contém os seus workspaces do Log Analytics. Na seção Configurações, selecione Provedores de recursos, conforme mostrado na imagem a seguir.
Pesquise microsoft.insights em Provedores de recursos. Em seguida, selecione Registrar.
Definir permissões
Verifique se o usuário que está configurando a integração do Log Analytics tem a função Colaborador do Log Analytics do workspace do Log Analytics. Ao selecionar Controle de acesso (IAM) para a assinatura no portal do Azure e, em seguida, seleciona Atribuições de função nas seleções principais no painel, o usuário atual precisa ver pelo uma entrada: Colaborador do Log Analytics para o usuário que configura o Log Analytics:
Depois de concluir essas etapas, a parte de configuração do Azure Log Analytics está concluída. A próxima seção mostra como prosseguir e concluir a configuração no Portal de administração do Power BI.
Permitir registro em log no nível do workspace no Portal de administração
Um administrador do Power BI precisa concluir a etapa a seguir para habilitar o Azure Log Analytics para workspaces do Power BI Premium. Isso permite que administradores de workspace do Power BI Premium enviem os respectivos logs de workspace para o Azure Log Analytics quando os pré-requisitos tiverem sido atendidos.
No portal de Administração do Power BI, navegue até as Configurações de locatário > Configurações de auditoria e uso e expanda as Conexões do Azure Log Analytics para administradores de workspace. Para permitir que os administradores do workspace habilitem o Log Analytics, configure o controle deslizante como Habilitado e especifique os grupos de segurança necessários em Aplicar a, conforme mostrado na imagem a seguir.
Configurar o registro em log em um workspace Premium
No workspace Premium, os administradores do workspace podem habilitar o Log Analytics. Para fazer isso, vá até Configurações, conforme mostrado na imagem a seguir.
No painel Configurações, selecione Conexões do Azure e, em seguida, expanda Log Analytics, conforme mostrado na imagem a seguir.
Selecione a assinatura do Azure, o grupo de recursos e, por fim, o workspace do Log Analytics configurado na seção anterior. Depois escolha Salvar. Quando concluída com êxito, a seção expandida Log Analytics no nível do locatário é semelhante à imagem a seguir.
Desconectar o Azure Log Analytics
Você pode se desconectar do Azure Log Analytics para interromper o envio de logs para o Azure. Para desconectar, nas Configurações de Workspace do Power BI, vá até as configurações do Log Analytics. Selecione Desconectar do Azure. Em seguida, escolha Salvar para desconectar.
Observação
Quando você desconecta um workspace do Power BI do Azure Log Analytics, os logs não são excluídos. Os dados permanecem e seguem as políticas de armazenamento e retenção que você definiu lá.
Cenários de uso
Há muitas maneiras pelas quais o Azure Log Analytics e Power BI podem ajudar a resolver desafios do mundo real para sua organização. Considere o seguinte:
- Identificação de períodos de atividade alta ou incomum do mecanismo do Analysis Services por capacidade, workspace, relatório ou usuário.
- Análise do desempenho e das tendências de consulta, incluindo operações externas do DirectQuery.
- Análise de sobreposições, etapas de processamento e duração da atualização do modelo semântico.
- Análise de operações personalizadas enviadas usando o ponto de extremidade XMLA Premium.
Envie-nos comentários na Comunidade do Power BI sobre como você está usando o registro em log e como ele ajudou sua organização.
Condições de erro e resoluções
A tabela a seguir fornece uma coleção de erros comuns, os eventos ou configurações que os dispararam e as resoluções sugeridas.
Condição gatilho | Tipo | Mensagem |
---|---|---|
Você não tem permissão para gravar no workspace do Log Analytics | Erro – não é possível continuar | Você precisa de permissões de gravação nesse workspace do Log Analytics para conectá-lo ao Power BI. Para corrigir esse problema, entre em contato com a pessoa em sua organização responsável por gerenciar as assinaturas do Azure. |
Você não tem permissão para gravar na conta do workspace do Log Analytics | Erro – não é possível continuar | Você precisa de permissões de gravação nesse workspace do Log Analytics para conectá-lo ao Power BI. |
Você não tem acesso a nenhuma assinatura do Azure | Erro – não é possível continuar | Você não tem acesso a nenhuma assinatura do Azure. Peça à pessoa que gerencia as assinaturas do Azure em sua organização para conceder a você acesso de colaborador ou superior. |
Você não tem acesso a nenhum workspace do Azure Log Analytics dentro dessa assinatura | Erro – não é possível continuar | Você não tem acesso a nenhum workspace do Azure Log Analytics. Peça à pessoa que gerencia assinaturas do Azure em sua organização para atribuir a você a função colaborador ou proprietário do Log Analytics. |
Log Analytics no nível do workspace desabilitado ao tentar se conectar | Informações | Peça que o seu administrador de locatários conceda permissão aos administradores de workspace para que eles conectem aos workspaces do Log Analytics. |
Log Analytics no nível do workspace desabilitado ao tentar se desconectar | Informações | O administrador de locatários revogou a permissão para que os administradores do workspace se conectem aos próprios workspaces do Azure Log Analytics. Se você se desconectar, não poderá se conectar a outro. |
Eventos e esquema
Depois de habilitar o Azure Log Analytics, ele começa a registrar as categorias de evento a seguir. Para obter mais informações sobre esses eventos, confira Eventos de Rastreamento do Analysis Services.
- AggregateTableRewriteQuery
- Comando
- Deadlock
- DirectQuery
- Descobrir
- Erro do
- ProgressReport
- Consulta
- Inicialização de sessão
- VertiPaqSEQuery
- Notificação
A tabela a seguir descreve os exemplos do esquema.
Propriedade | Propriedade existente do Azure Analysis Services | Descrição |
---|---|---|
TimeGenerated | O carimbo de data/hora (UTC) de quando o log foi gerado. | |
OperationName | EventClass_s | O evento de rastreamento do Analysis Services associado ao registro de log. Consulte a página de documentação do evento de rastreamento de AS para obter mais detalhes sobre possíveis eventos em cada categoria. |
CorrelationId | A ID de eventos correlacionados. Pode ser usada para identificar os eventos correlacionados entre várias tabelas. | |
ID do PowerbiWorkspace | Identificador exclusivo do workspace que contém o artefato em que a operação está sendo realizada. | |
PremiumCapacityId | Identificador exclusivo da capacidade Premium que hospeda o artefato que está sendo operado. | |
ApplicationContext | ApplicationContext_s | O pacote de propriedades de identificadores exclusivos fornecendo detalhes sobre o aplicativo que está executando a solicitação. Por exemplo, a ID do relatório. |
ApplicationName | ApplicationName_s | Contém o nome do aplicativo cliente que criou a conexão com o servidor. Essa coluna é populada com os valores passados pelo aplicativo e não com o nome exibido do programa. |
ArtifactId | Identificador exclusivo do recurso que registra os dados em log. | |
ArtifactKind | Tipo de artefato que registra a operação em log, por exemplo, modelo semântico. | |
CpuTimeMs | CPUTime_s | Tempo da CPU (em milissegundos) usado pelo evento. |
ArtifactName | DatabaseName_s | O nome do artefato do Power BI que registra essa operação em log. |
LogAnalyticsCategory | Exclusivo | A categoria de eventos de rastreamento do Analysis Services associado ao registro de log. Consulte a página de documentação do evento de rastreamento de AS para obter mais detalhes sobre possíveis eventos em cada categoria. |
DatasetMode | O modo do modelo semântico. Importação, DirectQuery ou Composto. | |
DurationMs | Duration_s | Quantidade de tempo (em milissegundos) tomada pela operação. |
Usuário | User_s | O usuário associado à operação em execução. Usado quando uma identidade de usuário final precisar ser representada no servidor. |
ExecutingUser | EffectiveUsername_s | O usuário que está executando a operação. |
OperationDetailName | EventSubclass_s | Mais detalhes sobre o evento de rastreamento do Analysis Services associado ao registro de log. Consulte a propriedade “Subclasse” da página de documentação do evento de rastreamento para obter mais detalhes sobre valores possíveis, por exemplo, Command Begin. |
XmlaObjectPath | ObjectPath_s | Caminho do objeto. Uma lista de pais separados por vírgulas, começando com o pai do objeto. |
PowerBIWorkspaceName | Nome do workspace do Power BI que contém o artefato. | |
StatusCode | Error_s | O código de status da operação. Ele aborda o êxito e a falha. |
ProgressCounter | ProgressTotal_s | Contador de progresso. |
XmlaProperties | RequestProperties_s | Propriedades da solicitação XMLA. |
XmlaSessionId | SPID_s | Identificador de sessão do Analysis Services. |
Level | Severity_s | Contém o nível de severidade da operação que está sendo registrada. Êxito, Informacional, Aviso ou Erro. |
Identidade | Informações sobre o usuário e as declarações. | |
Status | Status da operação. | |
EventText | TextData_s | Contém informações detalhadas associadas à operação, por exemplo, Consulta DAX. |
CustomerTenantId | Identificador de locatário do Power BI do cliente. | |
XmlaRequestId | RootActivityId_g | Identificador exclusivo da solicitação. |
ReplicaId | Identificador de réplica que permitirá identificar a réplica quando o Query Scale Out (QSO) estiver habilitado. As réplica de leitura sempre têm ReplicaId="AAA" e as réplicas somente leitura têm ReplicaId iniciando de "AAB" em diante. Para modelos semânticos não habilitados para QSO, a ReplicaId é sempre "AAA" |
Evento ExecutionMetrics
Para cada solicitação Discover, Command e Query, um evento chamado ExecutionMetrics é produzido no final da solicitação. Esse evento contém métricas de execução para a solicitação, que podem ajudá-lo a diagnosticar e solucionar problemas de forma mais eficaz. O rastreio ExecutionMetrics está correlacionado com o evento [Discover|Command|Query]End mais próximo.
A consulta KQL a seguir recupera os eventos ExecutionMetrics para todas as operações de atualização de um modelo semântico no último dia:
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
A consulta KQL a seguir recupera eventos que foram limitados no último dia por workspace, item e usuário:
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
As estatísticas são apresentadas como um texto JSON na propriedade EventText, veja os exemplos a seguir.
{
"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
}
A tabela a seguir descreve todas as propriedades possíveis. Nem todas as propriedades são emitidas em cada evento, pois o conteúdo dependerá da solicitação e do modelo semântico.
Propriedade | Descrição |
---|---|
timeStart | O carimbo de data/hora (UTC) de quando a solicitação foi iniciada. |
timeEnd | O carimbo de data/hora (UTC) de quando a solicitação terminou. |
durationMs | Duração total da execução. |
datasourceConnectionThrottleTimeMs | Tempo total de aceleração após atingir o limite de conexão da fonte de dados. Saiba mais sobre o máximo de conexão simultânea aqui. |
externalQueryExecutionTimeMs | Tempo total gasto na execução de todas as consultas de fontes de dados externas durante a solicitação. |
directQueryConnectionTimeMs | Tempo total gasto na criação de uma nova conexão DirectQuery durante a solicitação |
directQueryIterationTimeMs | Tempo total gasto na iteração dos resultados retornados pelas consultas do DirectQuery. |
directQueryTotalTimeMs | Tempo total gasto na execução e leitura de todas as consultas DirectQuery durante a solicitação. |
executionDelayMs | Tempo total gasto aguardando a disponibilidade de threads do pool de threads do mecanismo do Analysis Services. |
totalCpuTimeMs | Tempo total de CPU da solicitação. |
vertipaqJobCpuTimeMs | Tempo total de CPU gasto pelo mecanismo Vertipaq. |
mEngineCpuTimeMs | Tempo total de CPU gasto pelo mecanismo PowerQuery. |
queryProcessingCpuTimeMs | Tempo total de CPU gasto por tarefas no thread do pool de threads de consulta do Analysis Services. |
approximatePeakMemoryConsumptionKB | Pico aproximado de consumo total de memória durante a solicitação. |
mEnginePeakMemoryKB | Tamanho aproximado de confirmação de memória máxima (em quilobytes) em todos os contêineres de mashup do mecanismo PowerQuery. |
directQueryTimeoutMs | Tempo limite associado a consultas DirectQuery. |
externalQueryTimeoutMs | Tempo limite associado a consultas a fontes de dados externas. |
tabularConnectionTimeoutMs | Tempo limite associado a conexões de fontes de dados tabulares externas (por exemplo, SQL). |
refreshParallelism | MaxParallelism efetivo usado na solicitação. |
vertipaqTotalRows | Número total de linhas processadas pelo mecanismo Vertipaq durante uma operação de atualização. |
queryResultRows | Número total de linhas retornadas como resultado da consulta DAX. |
directQueryTotalRows | Número total de linhas lidas nas diversas consultas do DirectQuery. |
directQueryRequestCount | Número total de consultas do mecanismo de armazenamento DirectQuery executadas pelo mecanismo DAX. |
errorCount | Número total de erros da solicitação atual. |
qsoReplicaVersion | Versão réplica para modelos semânticos habilitados para QSO, representados no formato FILETIME. |
intendedUsage | Uso pretendido: Padrão (0); Atualização agendada ou de API (1); Atualização sob demanda (2); Bloco do painel/atualização do cache de consulta (3) |
commandType | Tipo de comando do Analysis Services solicitado pelo cliente (por exemplo, lote, instrução, backup...) |
discoverType | Tipo de Discover solicitado pelo cliente. Consulte EventSubclass para obter uma lista de tipos de descoberta. |
queryDialect | Tipo de cliente Dialect usado para consultar o servidor: Desconhecido (-1); MDX (0); DMX (1); SQL(2); DAX(3); JSON (4) |
capacityThrottlingMs | Tempo total em que a solicitação atrasou devido à limitação de capacidade. Saiba mais sobre limitação aqui. |
- Todas as durações e tempos de CPU são apresentados em milissegundos.
- Propriedades adicionais além daquelas descritas na tabela acima podem ser encontradas e devem ser consideradas como não documentadas e sujeitas a alterações.
Consultas KQL de exemplo do Log Analytics
A coleção de consultas de exemplo a seguir pode ser útil ao usar o Azure Log Analytics com o Power BI. Elas podem ser executadas diretamente no portal do Azure ou por meio de APIs para consultar os dados mais recentes, normalmente com cerca de cinco a dez minutos.
// 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
Exemplo de Modelo de Relatório do Power BI
Explore e obtenha insights sobre os dados do Power BI do Azure Log Analytics usando um Modelo de Relatório do Power BI de código aberto no GitHub.
Conteúdo relacionado
Os artigos a seguir podem ajudar você a saber mais sobre o Power BI e a integração dele com o Azure Log Analytics.