Configurar o Azure Log Analytics para Power BI
O Power BI está se integrando ao Azure Log Analytics para permitir que administradores e proprietários de espaços de trabalho Premium configurem uma conexão do Log Analytics com sua assinatura do Power BI. Este artigo descreve como funciona a integração entre o Log Analytics e o Power BI e como configurá-la para o seu ambiente.
Há dois elementos para fazer com que o Azure Log Analytics funcione para o Power BI:
- Configure sua assinatura do Azure no portal do Azure.
- Habilite a Análise de log para o Power BI no portal de administração do Power BI.
As seções a seguir levam você pelas etapas para fazer as duas coisas.
Pré-requisitos
Antes de configurar a integração do Log Analytics a partir do Power BI, você precisa criar um Espaço de Trabalho do Log Analytics no portal do Azure. Você também deve 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.
- Registre o provedor de recursos 'microsoft.insights' na assinatura do Azure onde você coletará 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 de Colaborador do Log Analytics para o Espaço de Trabalho do Log Analytics. Consulte Perguntas frequentes para obter soluções alternativas se a função Proprietário não puder ser fornecida.
Habilite o provedor de recursos 'microsoft.insights'
O Log Analytics requer o provedor de recursos 'microsoft.insights' habilitado no nível de assinatura do Azure. Os passos seguintes guiá-lo através do processo.
Entre no portal do Azure, selecione a assinatura que você deseja usar com o Log Analytics e que contém seus espaços de trabalho 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 Registar.
Definir permissões
Verifique se o usuário que está configurando a integração do Log Analytics tem a função de Colaborador do Log Analytics no espaço de trabalho do Log Analytics. Quando você seleciona Controle de acesso (IAM) para a assinatura no portal do Azure e, em seguida, seleciona Atribuições de função nas seleções superiores do painel, o usuário atual deve ver 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 será concluída. A próxima seção mostra como continuar e concluir a configuração no portal de Administração do Power BI.
Permitir o registo no nível da área de trabalho a partir do Portal de Administração
Um administrador do Power BI deve concluir a etapa a seguir para habilitar o Azure Log Analytics para espaços de trabalho do Power BI Premium. Essa configuração permite que os administradores do espaço de trabalho Power BI Premium enviem seus logs de espaço de trabalho para o Azure Log Analytics quando os pré-requisitos forem atendidos.
No portal de Administração do Power BI, vá para Auditoria de Configurações > do Locatário e configurações de uso e expanda Conexões do Azure Log Analytics para administradores de espaço de trabalho. Para permitir que os administradores do espaço de trabalho habilitem o Log Analytics, defina 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 espaço de trabalho Premium
No espaço de trabalho Premium, os administradores do espaço de trabalho podem ativar o Log Analytics. Para fazer isso, vá para Configurações , conforme mostrado na imagem a seguir.
No painel Configurações, selecione Conexões do Azure e expanda Análise de Log, conforme mostrado na imagem a seguir.
Selecione a assinatura do Azure, o grupo de recursos e, em seguida, o espaço de trabalho do Log Analytics configurado na seção anterior. Em seguida, escolha Guardar. Quando concluída com êxito, a seção expandida Análise de Log no nível do locatário deve ser semelhante à imagem a seguir.
Desconectar o Azure Log Analytics
Você pode se desconectar do Azure Log Analytics para parar de enviar logs para o Azure. Para desconectar, nas Configurações do Espaço de Trabalho do Power BI, vá para as configurações do Log Analytics. Selecione Desconectar do Azure. Em seguida, escolha Salvar para desconectar.
Nota
Quando você desconecta um espaço de trabalho do Power BI do Azure Log Analytics, os logs não são excluídos. Seus dados permanecem e seguem as políticas de armazenamento e retenção definidas lá.
Cenários de utilização
Há muitas maneiras pelas quais o Azure Log Analytics e o Power BI podem ajudar a resolver desafios do mundo real para sua organização. Considere o seguinte:
- Identifique períodos de atividade alta ou incomum do mecanismo do Analysis Services por capacidade, espaço de trabalho, relatório ou usuário.
- Analise o desempenho e as tendências da consulta, incluindo operações externas do DirectQuery.
- Analise a duração da atualização do modelo semântico, as sobreposições e as etapas de processamento.
- Analise operações personalizadas enviadas usando o endpoint XMLA Premium.
Envie-nos comentários na Comunidade do Power BI sobre como está a utilizar o registo e como tem ajudado a 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 acionaram e resoluções sugeridas.
Condição do gatilho | Tipo | Mensagem |
---|---|---|
Você não tem permissão para gravar no espaço de trabalho do Log Analytics | Erro - não é possível continuar | Você precisa de permissões de gravação neste espaço de trabalho do Log Analytics para conectá-lo ao Power BI. Entre em contato com a pessoa em sua organização que gerencia assinaturas do Azure para corrigir esse problema. |
Você não tem permissão para gravar na conta do espaço de trabalho do Log Analytics | Erro - não é possível continuar | Você precisa de permissões de gravação neste espaço de trabalho 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 gere subscrições do Azure na sua organização para lhe conceder acesso de colaborador ou superior. |
Você não tem acesso a nenhum espaço de trabalho do Azure Log Analytics dentro dessa assinatura | Erro - não é possível continuar | Você não tem acesso a um espaço de trabalho do Azure Log Analytics. Peça à pessoa que gerencia assinaturas do Azure em sua organização para adicioná-lo à função de proprietário ou colaborador do Log Analytics. |
Análise de log no nível do espaço de trabalho desabilitada ao tentar se conectar | Informação | Peça ao administrador do locatário para conceder aos administradores do espaço de trabalho permissão para conectar espaços de trabalho do Log Analytics. |
Análise de log no nível do espaço de trabalho desabilitada ao tentar se desconectar | Informação | O administrador do locatário revogou a permissão para os administradores do espaço de trabalho conectarem seus próprios espaços de trabalho do Azure Log Analytics. Se você desconectar, não poderá se conectar a outro. |
Eventos e esquema
Depois de habilitar o Azure Log Analytics, ele começa a registrar as seguintes categorias de eventos. Para obter mais informações sobre esses eventos, consulte Eventos de rastreamento do Analysis Services.
- AggregateTableRewriteQuery
- Comando
- Impasse
- DirectQuery
- Detetar
- Erro
- Relatório intercalar
- Query
- Inicialização da sessão
- VertiPaqSEQuery
- Notificação
A tabela a seguir descreve o esquema.
Property | Propriedade existente do Azure Analysis Services | Description |
---|---|---|
TimeGenerated | O carimbo de data/hora (UTC) de quando o log foi gerado. | |
Nome da operação | EventClass_s | O evento de rastreamento do Analysis Services associado ao registro de log. Consulte a página de documentação do AS Trace Events para obter mais detalhes sobre possíveis eventos para cada categoria. |
CorrelationId | A ID para eventos correlacionados. Pode ser usado para identificar eventos correlacionados entre várias tabelas. | |
PowerBIWorkspaceId | Identificador exclusivo do espaço de trabalho que contém o artefato que está sendo operado. | |
PremiumCapacityId | Identificador único da capacidade Premium que hospeda o artefato que está sendo operado. | |
ApplicationContext | ApplicationContext_s | Pacote de propriedades de identificadores exclusivos fornecendo detalhes sobre o aplicativo que executa a solicitação. por exemplo, ID do relatório. |
ApplicationName | ApplicationName_s | Contém o nome do aplicativo cliente que criou a conexão com o servidor. Esta coluna é preenchida com os valores passados pelo aplicativo em vez do nome exibido do programa. |
ArtifactId | Identificador exclusivo do recurso que registra os dados. | |
ArtifactKind | Tipo de artefato registrando a operação, por exemplo, modelo semântico. | |
CpuTimeMs | CPUTime_s | Quantidade de tempo de CPU (em milissegundos) usada pelo evento. |
Nome do artefato | DatabaseName_s | O nome do artefato do Power BI que registra essa operação. |
LogAnalyticsCategoria | Exclusivo | A categoria de evento de rastreamento do Analysis Services associada ao registro de log. Consulte a página de documentação do AS Trace Events para obter mais detalhes sobre possíveis categorias de eventos. |
DatasetMode | O modo do modelo semântico. Importar, DirectQuery ou Composite. | |
DuraçãoMs | Duration_s | Quantidade de tempo (em milissegundos) tomada pela operação. |
Utilizador | User_s | O usuário associado à operação em execução. Usado quando uma identidade de usuário final deve ser representada no servidor. |
ExecutingUser | EffectiveUsername_s | O usuário que executa a operação. |
OperationDetailName | EventSubclass_s | Mais detalhes sobre o evento de rastreamento do Analysis Services associado ao registro de log. Consulte a propriedade 'Subclass' 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írgula, começando com o pai do objeto. |
PowerBIWorkspaceName | Nome do espaço de trabalho do Power BI que contém o artefato. | |
Código de status | Error_s | Código de status da operação. Abrange o sucesso e o fracasso. |
Contador de Progressos | ProgressTotal_s | Contador de progressos. |
XmlaProperties | RequestProperties_s | Propriedades da solicitação XMLA. |
XmlaSessionId | SPID_s | Identificador de sessão do Analysis Services. |
Nível | Severity_s | Contém o nível de gravidade da operação que está sendo registrada. Sucesso, Informativo, Aviso ou Erro. |
Identidade | Informações sobre usuários e reivindicações. | |
Status | Estado da operação. | |
EventText | TextData_s | Contém informações detalhadas associadas à operação, por exemplo, DAX Query. |
CustomerTenantId | Identificador de locatário do Power BI do cliente. | |
XmlaRequestId | RootActivityId_g | Identificador único do pedido. |
ReplicaId | Identificador de réplica que permitirá identificar a réplica quando o QSO (Query Scale out) estiver habilitado. A réplica de leitura-gravação sempre tem ReplicaId='AAA' e as réplicas somente leitura têm ReplicaId iniciando 'AAB' em diante. Para modelos semânticos não habilitados para QSO, o 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 rastreamento ExecutionMetrics está correlacionado com o [Discover| mais próximo Comando|Query]End evento.
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 espaço de trabalho, 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 , consulte 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.
Property | Description |
---|---|
timeStart | O carimbo de data/hora (UTC) de quando a solicitação foi iniciada. |
timeFim | 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 depois de atingir o limite de conexão da fonte de dados. Saiba mais sobre o máximo de conexões simultâneas aqui. |
externalQueryExecutionTimeMs | Tempo total gasto na execução de todas as consultas de fonte de dados externa 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 DirectQuery. |
directQueryTotalTimeMs | Tempo total gasto na execução e leitura de todas as consultas DirectQuery durante a solicitação. |
execuçãoDelayMs | Tempo total gasto aguardando a disponibilidade do thread do pool de threads do mecanismo do Analysis Services. |
totalCpuTimeMs | Tempo total de CPU da solicitação. |
vertipaqJobCpuTimeMs | Tempo total da CPU gasto pelo motor Vertipaq. |
mEngineCpuTimeMs | Tempo total de CPU gasto pelo mecanismo PowerQuery. |
queryProcessingCpuTimeMs | Tempo total da CPU gasto por tarefas no thread do pool de threads de consulta do Analysis Services. |
aproximaPeakMemoryConsumptionKB | Pico aproximado de consumo total de memória durante a solicitação. |
mEnginePeakMemoryKB | Tamanho aproximado de confirmação de pico de memória (em kilobytes) 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 fonte de dados tabulares externas (e.g. SQL). |
refreshParalelismo | MaxParallelism eficaz usado na solicitação. |
vertipaqTotalRows | Número total de linhas processadas pelo motor 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 das várias consultas DirectQuery. |
directQueryRequestCount | Número total de consultas do mecanismo de armazenamento DirectQuery executadas pelo mecanismo DAX. |
errorCount | Número total de erros para a solicitação atual. |
qsoReplicaVersion | Versão de réplica para modelos semânticos habilitados para QSO, representados no formato FILETIME . |
intendedUsage | Uso pretendido: Padrão (0); Atualização programada ou 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 dialeto usado para consultar o servidor: Desconhecido (-1); MDX (0); DMX (1); SQL (2); DAX (3); JSON (4) |
capacidadeThrottlingMs | Tempo total em que a solicitação foi atrasada devido à limitação de capacidade. Saiba mais sobre o estrangulamento aqui. |
- Todas as durações e tempos de CPU são apresentados em milissegundos.
- Propriedades adicionais além das descritas na tabela acima podem ser encontradas e devem ser consideradas como não documentadas e sujeitas a alterações.
Exemplos de consultas KQL do Log Analytics
A coleção de consultas de exemplo a seguir pode ser útil quando você usa o Azure Log Analytics com o Power BI. Eles podem ser executados diretamente no portal do Azure ou por meio de APIs para consultar os dados mais recentes, geralmente com cerca de 5 a 10 minutos de idade.
// 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
Modelo de relatório de exemplo do Power BI
Explore e obtenha informações 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údos relacionados
Os artigos a seguir podem ajudá-lo a saber mais sobre o Power BI e sobre sua integração com o Azure Log Analytics.