Condividi tramite


Configurare Azure Log Analytics per Power BI

Power BI si integra con Log Analytics di Azure per consentire agli amministratori e ai proprietari dell'area di lavoro Premium di configurare una connessione Log Analytics alla sottoscrizione di Power BI. Questo articolo descrive come funziona l'integrazione tra Log Analytics e Power BI e come configurarla per l'ambiente.

Sono disponibili due elementi per ottenere l'uso di Log Analytics di Azure per Power BI:

  • Configurare la sottoscrizione di Azure nel portale di Azure.
  • Abilitare Log Analytics per Power BI nel portale di amministrazione di Power BI.

Le sezioni seguenti illustrano i passaggi per eseguire entrambe le operazioni.

Screenshot della scheda Connessioni di Azure aperta nel riquadro delle impostazioni.

Prerequisiti

Prima di configurare l'integrazione di Log Analytics da Power BI, è necessario creare un'area di lavoro Log Analytics nel portale di Azure. È anche necessario concedere l'autorizzazione in Azure per il servizio Power BI per scrivere i log. I requisiti esatti sono:

  • Accesso collaboratore alla sottoscrizione di Azure.
  • Registrare il provider di risorse "microsoft.insights" nella sottoscrizione di Azure in cui verranno raccolti i dati di log di Power BI.
  • L'utente che configura l'integrazione di Log Analytics in Power BI deve avere il ruolo Collaboratore Log Analytics per l'area di lavoro Log Analytics. Vedere Domande frequenti per le soluzioni alternative se non è possibile specificare il ruolo Proprietario.

Abilitare il provider di risorse "microsoft.insights"

Per Log Analytics è necessario abilitare il provider di risorse "microsoft.insights" a livello di sottoscrizione di Azure. I passaggi seguenti illustrano il processo.

  1. Accedere al portale di Azure e selezionare la sottoscrizione da usare con Log Analytics e che contiene le aree di lavoro Log Analytics. Nella sezione Impostazioni selezionare Provider di risorse come illustrato nell'immagine seguente.

    Screenshot delle opzioni di menu delle impostazioni. Sono selezionati i provider di risorse.

  2. Cercare microsoft.insights in Provider di risorse. Selezionare quindi Register (Registra).

    Screenshot dei provider di risorse nel riquadro principale con Microsoft.insights registrato.

Impostare le autorizzazioni

  1. Assicurarsi che l'utente che configura l'integrazione di Log Analytics abbia il ruolo Collaboratore Log Analytics dell'area di lavoro Log Analytics. Quando si seleziona Controllo di accesso (IAM) per la sottoscrizione nel portale di Azure e quindi Assegnazioni di ruolo dalle selezioni principali nel pannello, l'utente corrente visualizzerà una voce: Collaboratore Log Analytics per l'utente che configura Log Analytics:

    Screenshot del riquadro Controllo di accesso con il ruolo evidenziato.

Dopo aver completato questi passaggi, la parte di configurazione di Log Analytics di Azure è stata completata. La sezione successiva illustra come continuare e completare la configurazione nel portale di amministrazione di Power BI.

Consenti registrazione a livello di area di lavoro dal portale di amministrazione

Un amministratore di Power BI deve completare il passaggio seguente per abilitare Log Analytics di Azure per le aree di lavoro di Power BI Premium. Questa impostazione consente agli amministratori dell'area di lavoro di Power BI Premium di inviare i log dell'area di lavoro a Log Analytics di Azure quando sono stati soddisfatti i prerequisiti.

  1. Nel portale di amministrazione di Power BI passare a Impostazioni tenant > Impostazioni di controllo e utilizzo ed espandere Connessioni Log Analytics per gli amministratori dell'area di lavoro. Per consentire agli amministratori dell'area di lavoro di abilitare Log Analytics, impostare il dispositivo di scorrimento su Abilitato e specificare i gruppi di sicurezza necessari in Applica a, come illustrato nell'immagine seguente.

    Screenshot delle impostazioni del tenant nel portale di amministrazione. Le connessioni di Log Analytics di Azure per gli amministratori dell'area di lavoro sono espanse e abilitate.

Configurare la registrazione in un'area di lavoro Premium

  1. Nell'area di lavoro Premium gli amministratori dell'area di lavoro possono abilitare Log Analytics. A tale scopo, passare a Impostazioni come illustrato nell'immagine seguente.

    Screenshot del riquadro delle impostazioni in un'area di lavoro Premium.

  2. Nel riquadro Impostazioni selezionare Connessioni di Azure, quindi espandere Log Analytics come illustrato nell'immagine seguente.

    Screenshot della scheda Connessioni di Azure aperta nel riquadro delle impostazioni. Log Analytics è espanso.

  3. Selezionare la sottoscrizione di Azure, il gruppo di risorse e quindi l'area di lavoro Log Analytics configurata nella sezione precedente. Scegli quindi Salva. Al termine, la sezione Log Analytics a livello di tenant espansa dovrebbe essere simile all'immagine seguente.

    Screenshot della scheda Connessioni di Azure aperta nel riquadro delle impostazioni che mostra le informazioni di esempio.

Disconnettere Azure Log Analytics

È possibile disconnettersi da Log Analytics di Azure per interrompere l'invio dei log ad Azure. Per disconnettersi, nella Impostazioni dell'area di lavoro di Power BI passare alle impostazioni di Log Analytics. Selezionare Disconnetti da Azure. Scegliere quindi Salva per disconnettersi.

Screenshot dell'avviso di disconnessione nel riquadro delle impostazioni.

Nota

Quando si disconnette un'area di lavoro di Power BI da Log Analytics di Azure, i log non vengono eliminati. I dati rimangono e seguono i criteri di archiviazione e conservazione impostati.

Scenari di utilizzo

Esistono molti modi in cui Log Analytics di Azure e Power BI possono aiutare a risolvere le sfide reali per l'organizzazione. Considerare quanto segue:

  • Identificare i periodi di attività del motore di Analysis Services elevati o insoliti in base alla capacità, all'area di lavoro, al report o all'utente.
  • Analizzare le prestazioni e le tendenze delle query, incluse le operazioni DirectQuery esterne.
  • Analizzare la durata dell'aggiornamento del modello semantico, le sovrapposizioni e i passaggi di elaborazione.
  • Analizzare le operazioni personalizzate inviate usando l'endpoint XMLA Premium.

Inviare commenti e suggerimenti nella Community di Power BI per informazioni su come si usa la registrazione e su come ha aiutato l'organizzazione.

Condizioni e risoluzioni degli errori

La tabella seguente fornisce una raccolta di errori comuni, gli eventi o le configurazioni che li hanno attivati e le risoluzioni suggerite.

Condizione di attivazione Type Messaggio
Non si dispone dell'autorizzazione per la scrittura nell'area di lavoro Log Analytics Errore, impossibile procedere Sono necessarie autorizzazioni di scrittura per questa area di lavoro Log Analytics per connetterla a Power BI. Contattare la persona dell'organizzazione che gestisce le sottoscrizioni di Azure per risolvere il problema.
Non si dispone dell'autorizzazione per la scrittura nell'account dell'area di lavoro Log Analytics Errore, impossibile procedere Sono necessarie autorizzazioni di scrittura per questa area di lavoro Log Analytics per connetterla a Power BI.
Non si ha accesso ad alcuna sottoscrizione di Azure Errore, impossibile procedere Non si ha accesso ad alcuna sottoscrizione di Azure. Chiedere all'amministratore delle sottoscrizioni di Azure nell'organizzazione di concedere l'accesso di collaboratore o un ruolo più elevato.
Non si ha accesso ad alcuna area di lavoro Log Analytics di Azure all'interno di tale sottoscrizione Errore, impossibile procedere Non si ha accesso a un'area di lavoro Log Analytics di Azure. Chiedere all'amministratore delle sottoscrizioni di Azure nell'organizzazione di essere aggiunti al ruolo Collaboratore o Proprietario in Log Analytics.
Log Analytics a livello di area di lavoro disabilitato durante il tentativo di connessione Informazioni Chiedere all'amministratore tenant di concedere agli amministratori dell'area di lavoro l'autorizzazione a connettere le aree di lavoro Log Analytics.
Log Analytics a livello di area di lavoro disabilitato durante il tentativo di disconnessione Informazioni L'amministratore del tenant ha revocato agli amministratori dell'area di lavoro l'autorizzazione a connettere le aree di lavoro Azure Log Analytics personali. Se ci si disconnette da una, non è possibile connettersi a un'altra.

Eventi e schema

Dopo aver abilitato Log Analytics di Azure, inizia a registrare le categorie di eventi seguenti. Per altre informazioni su questi eventi, vedere Eventi traccia di Analysis Services.

  • AggregateTableRewriteQuery
  • Comando
  • Deadlock
  • DirectQuery
  • Rilevazione
  • Error
  • ProgressReport
  • Query
  • Inizializzazione sessione
  • VertiPaqSEQuery
  • Notifica

Nella tabella seguente viene descritto lo schema.

Proprietà Proprietà di Azure Analysis Services esistente Descrizione
TimeGenerated Il timestamp (UTC) relativo alla data e all'ora in cui è stato generato il log.
OperationName EventClass_s Evento di traccia di Analysis Services associato al record di log. Per ulteriori dettagli sui possibili eventi per ogni categoria, vedere la pagina della documentazione degli eventi di traccia del sistema autonomo.
CorrelationId L'ID degli eventi correlati. Può essere usato per identificare eventi correlati tra più tabelle.
PowerBIWorkspaceId Identificatore univoco dell'area di lavoro contenente l'artefatto su cui si sta operando.
PremiumCapacityId Identificatore univoco della capacità Premium su cui è in esecuzione l'artefatto.
ApplicationContext ApplicationContext_s Contenitore delle proprietà di identificatori univoci che forniscono informazioni dettagliate sull'applicazione che esegue la richiesta. ad esempio, ID report.
ApplicationName ApplicationName_s Contiene il nome dell'applicazione client in cui è stata creata la connessione al server. Questa colonna viene popolata con i valori passati dall'applicazione e non con il nome visualizzato del programma.
ArtifactId Identificatore univoco della risorsa che registra i dati.
ArtifactKind Tipo di artefatto che registra l'operazione, ad esempio il modello semantico.
CpuTimeMs CPUTime_s Tempo della CPU in millisecondi utilizzato dall'evento.
ArtifactName DatabaseName_s Nome dell'artefatto di Power BI che registra questa operazione.
LogAnalyticsCategory Unica La categoria di eventi di traccia di Analysis Services associata al record di log. Per ulteriori informazioni sulle possibili categorie di eventi, vedere la pagina della documentazione relativa agli eventi di traccia del sistema autonomo.
DatasetMode Modalità del modello semantico. Importazione, DirectQuery o Composito.
DurationMs Duration_s Quantità di tempo (in millisecondi) richiesta dall'operazione.
Utente User_s Utente associato all'operazione in esecuzione. Usato quando un'identità dell'utente finale deve essere rappresentata nel server.
ExecutingUser EffectiveUsername_s L'utente che esegue l'operazione.
OperationDetailName EventSubclass_s Ulteriori dettagli sull'evento di traccia di Analysis Services associato al record di log. Per ulteriori dettagli sui possibili valori, ad esempio Command Begin, vedere la proprietà "Sottoclasse" della pagina della documentazione dell'evento di traccia.
XmlaObjectPath ObjectPath_s Percorso dell'oggetto. Elenco delimitato da virgole di elementi padre, a partire dall'elemento padre dell'oggetto.
PowerBIWorkspaceName Nome dell'area di lavoro di Power BI contenente l'artefatto.
StatusCode Error_s Codice di stato dell'operazione. Copre l'esito positivo e negativo.
ProgressCounter ProgressTotal_s Contatore progresso.
XmlaProperties RequestProperties_s Proprietà della richiesta XMLA.
XmlaSessionId SPID_s Identificatore di sessione di Analysis Services.
Livello Severity_s Contiene il livello di gravità dell'operazione da registrare. Operazione riuscita, Informativo, Avviso o Errore.
Identità Informazioni sull'utente e sulle attestazioni.
Stato Stato dell'operazione.
EventText TextData_s Contiene informazioni dettagliate associate all'operazione, ad esempio query DAX.
CustomerTenantId Identificatore del tenant di Power BI del cliente.
XmlaRequestId RootActivityId_g Identificatore univoco della richiesta.
ReplicaId Identificatore di replica che consente di identificare la replica quando QSO (Query Scale Out) è abilitato. La replica in lettura/scrittura ha sempre ReplicaId="AAA" e le repliche di sola lettura hanno ReplicaId a partire da "AAB". Per i modelli semantici non abilitati per QSO, ReplicaId è sempre "AAA"

Evento ExecutionMetrics

Per ogni richiesta di Discover, Command e Query, viene generato un evento denominato ExecutionMetrics alla fine della richiesta. Questo evento contiene le metriche di esecuzione per la richiesta, che consentono di diagnosticare e risolvere i problemi in modo più efficace. La traccia ExecutionMetrics è correlata all'evento [Discover|Command|Query]End più vicino.

La query KQL seguente recupera gli eventi ExecutionMetrics per tutte le operazioni di aggiornamento di un modello semantico nell'ultimo giorno:

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

La query KQL seguente recupera gli eventi limitati nell'ultimo giorno dall'area di lavoro, dall'elemento e dall'utente:

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

Le statistiche vengono presentate come testo JSON nella proprietà EventText, vedere gli esempi seguenti.

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

Nella tabella seguente vengono descritte tutte le proprietà possibili. Non tutte le proprietà vengono generate in ogni evento, perché il contenuto dipenderà dalla richiesta e dal modello semantico.

Proprietà Descrizione
timeStart Timestamp (UTC) di quando la richiesta è avviata.
timeEnd Timestamp (UTC) di quando la richiesta è terminata.
durationMs Durata totale dell'esecuzione.
datasourceConnectionThrottleTimeMs Tempo totale di limitazione dopo aver raggiunto il limite di connessione dell'origine dati. Altre informazioni sulle connessioni simultanee massime sono disponibili qui.
externalQueryExecutionTimeMs Tempo totale impiegato per l'esecuzione di tutte le query di origini dati esterne durante la richiesta.
directQueryConnectionTimeMs Tempo totale impiegato per la creazione di una nuova connessione DirectQuery durante la richiesta
directQueryIterationTimeMs Tempo totale impiegato per l'iterazione dei risultati restituiti dalle query DirectQuery.
directQueryTotalTimeMs Tempo totale impiegato per l'esecuzione e la lettura di tutte le query DirectQuery durante la richiesta.
executionDelayMs Tempo totale impiegato in attesa della disponibilità dei thread del pool del motore di Analysis Services.
totalCpuTimeMs Tempo totale CPU della richiesta.
vertipaqJobCpuTimeMs Tempo totale CPU impiegato dal motore Vertipaq.
mEngineCpuTimeMs Tempo totale CPU impiegato dal motore PowerQuery.
queryProcessingCpuTimeMs Tempo totale della CPU impiegato dalle attività nel thread del pool di thread di query di Analysis Services.
approximatePeakMemoryConsumptionKB Picco approssimativo del consumo totale di memoria durante la richiesta.
mEnginePeakMemoryKB Dimensioni approssimative del commit della memoria di picco (in kilobyte) in tutti i contenitori mashup del motore PowerQuery.
directQueryTimeoutMs Timeout associato alle query DirectQuery.
externalQueryTimeoutMs Timeout associato alle query a origini dati esterne.
tabularConnectionTimeoutMs Timeout associato a connessioni origine dati tabulari esterne (ad es. SQL).
refreshParallelism MaxParallelism effettivo usato nella richiesta.
vertipaqTotalRows Numero totale di righe elaborate dal motore Vertipaq durante un'operazione di aggiornamento.
queryResultRows Numero totale di righe restituite in seguito alla query DAX.
directQueryTotalRows Numero totale di righe lette dalle varie query DirectQuery.
directQueryRequestCount Numero totale di query del motore di archiviazione DirectQuery eseguite dal motore DAX.
errorCount Numero totale di errori per la richiesta corrente.
qsoReplicaVersion Versione della replica per i modelli semantici abilitati per QSO, rappresentati nel formato FILETIME.
intendedUsage Utilizzo previsto: Predefinito (0); Aggiornamento pianificato o API (1); Aggiornamento su richiesta (2); Riquadro dashboard/Aggiornamento cache query (3)
commandType Tipo di comando di Analysis Services richiesto dal client (ad esempio Batch, Istruzione, Backup,...)
discoverType Tipo di individuazione richiesto dal client. Per un elenco dei tipi di individuazione, vedere EventSubclass.
queryDialect Tipo di client Dialect usato per eseguire query sul server: Sconosciuto (-1); MDX (0); DMX (1); SQL (2); DAX (3); JSON (4)
capacityThrottlingMs Tempo totale di posticipo della richiesta a causa della limitazione della capacità. Altre informazioni sulla limitazione sono disponibili qui.
  • Tutte le durate e i tempi di CPU vengono presentati in millisecondi.
  • È possibile che vengano rilevate proprietà aggiuntive oltre a quelle descritte nella tabella precedente, da considerare come non documentate e soggette a modifiche.

Esempio di query KQL di Log Analytics

La raccolta di query di esempio seguente può essere utile quando si usa Log Analytics di Azure con Power BI. Possono essere eseguiti direttamente nel portale di Azure o tramite API per eseguire query sui dati più recenti, in genere circa 5-10 minuti.

// 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

Modello di report di Power BI di esempio

Esplorare e ottenere informazioni dettagliate sui dati Power BI di Log Analytics di Azure usando un modello di report di Power BI open source in GitHub.

Gli articoli seguenti consentono di ottenere altre informazioni su Power BI e sulla relativa integrazione con Log Analytics di Azure.