Partager via


Configurer Azure Log Analytics pour Power BI

Power BI s’intègre à Azure Log Analytics (LA) pour permettre aux administrateurs et aux propriétaires d’espaces de travail Premium de configurer une connexion Log Analytics à leur abonnement Power BI. Cet article décrit le fonctionnement de l’intégration entre Log Analytics et Power BI ainsi que la façon de le configurer pour votre environnement.

Deux actions doivent être effectuées pour qu’Azure Log Analytics fonctionne pour Power BI :

  • Configurer votre abonnement Azure dans le portail Azure.
  • Activer Log Analytics pour Power BI dans le portail d’administration Power BI.

Les sections suivantes vont vous guider dans les étapes pour effectuer ces deux actions.

Capture d’écran de l’onglet Connexions Azure ouvert dans le volet Paramètres.

Prérequis

Avant de pouvoir configurer l’intégration de Log Analytics à partir de Power BI, vous devez créer un espace de travail Log Analytics dans le portail Azure. Au sein d’Azure, vous devez également autoriser le service Power BI à écrire dans les journaux. Les impératifs exacts sont les suivants :

  • Accès contributeur à l’abonnement Azure.
  • Inscrivez le fournisseur de ressources « microsoft.insights » dans l’abonnement Azure où vous allez collecter les données des journaux Power BI.
  • L’utilisateur qui configure l’intégration de Log Analytics dans Power BI doit avoir le rôle Contributeur Logs Analytics pour l’espace de travail Log Analytics. Consultez les Questions fréquentes (FAQ) pour obtenir des solutions de contournement si le rôle Propriétaire ne peut pas être attribué.

Activer le fournisseur de ressources « microsoft.insights »

Log Analytics nécessite l’activation du fournisseur de ressources « microsoft.insights » au niveau de l’abonnement Azure. Les étapes suivantes vont vous guider tout au long du processus.

  1. Connectez-vous au portail Azure, sélectionnez l’abonnement que vous voulez utiliser avec Log Analytics et qui contient vos espaces de travail Log Analytics. Dans la section Paramètres, sélectionnez Fournisseurs de ressources, comme indiqué dans l’image suivante.

    Capture d’écran des options de menu des paramètres, Fournisseurs de ressources étant sélectionné.

  2. Recherchez microsoft.insights sous Fournisseurs de ressources. Sélectionnez ensuite Inscription.

    Capture d’écran des fournisseurs de ressources dans le volet principal, avec Microsoft.insights inscrit.

Définir des autorisations

  1. Vérifiez que l’utilisateur qui configure l’intégration de Log Analytics dispose du rôle Contributeur Log Analytics de l’espace de travail Log Analytics. Lorsque vous sélectionnez Contrôle d’accès (IAM) pour l’abonnement dans le Portail Azure, puis que vous sélectionnez Attributions de rôles dans les premières sélections du panneau, l’utilisateur actuel doit voir une entrée : Contributeur Logs Analytics pour l’utilisateur qui configure Log Analytics :

    Capture d’écran du panneau Contrôle d’accès avec un rôle mis en évidence.

Une fois que vous avez effectué ces étapes, la partie Configuration d’Azure Log Analytics est terminée. La section suivante vous montre comment poursuivre et effectuer la configuration dans le portail d’administration Power BI.

Autoriser la journalisation au niveau de l’espace de travail à partir du portail d’administration

Un administrateur Power BI doit effectuer l’étape suivante afin d’activer Azure Log Analytics pour les espaces de travail Power BI Premium. Ce paramètre permet aux administrateurs d’espace de travail Power BI Premium d’envoyer leurs journaux d’espace de travail à Azure Log Analytics une fois les prérequis remplis.

  1. Dans le portail d’administration Power BI, accédez à Paramètres du locataire > Paramètres d’audit et d’utilisation et développez Connexions Azure Log Analytics pour les administrateurs d’espace de travail. Pour autoriser les administrateurs d’espace de travail à activer Log Analytics, basculez le curseur sur Activé et spécifiez les groupes de sécurité nécessaires sous Appliquer à, comme indiqué dans l’image suivante.

    Capture d’écran des paramètres du locataire dans le portail d’administration. Connexions Azure Log Analytics pour les administrateurs d’espace de travail est développé et activé.

Configurer la journalisation dans un espace de travail Premium

  1. Dans l’espace de travail Premium, les administrateurs d’espace de travail peuvent activer Log Analytics. Pour cela, accédez à Paramètres, comme indiqué dans l’image suivante.

    Capture d’écran du volet Paramètres dans un espace de travail Premium.

  2. Dans le volet Paramètres, sélectionnez Connexions Azure, puis développez Log Analytics, comme indiqué dans l’image suivante.

    Capture d’écran de l’onglet Connexions Azure ouvert dans le volet Paramètres. Log Analytics est développé.

  3. Sélectionnez l’abonnement Azure, le groupe de ressources, puis l’espace de travail Log Analytics configuré dans la section précédente. Puis choisissez Enregistrer. Une fois l’opération réussie, la section Log Analytics au niveau du locataire développée est similaire à l’image suivante.

    Capture d’écran de l’onglet Connexions Azure ouvert dans le volet Paramètres, montrant des exemples d’informations.

Se déconnecter d’Azure Log Analytics

Vous pouvez vous déconnecter d’Azure Log Analytics pour arrêter l’envoi de journaux à Azure. Pour vous déconnecter, dans Paramètres d’espace de travail Power BI, accédez aux paramètres Log Analytics. Sélectionnez Déconnecter d’Azure. Choisissez ensuite Enregistrer pour vous déconnecter.

Capture d’écran de l’avertissement de déconnexion dans le volet Paramètres.

Notes

Quand vous déconnectez un espace de travail Power BI d’Azure Log Analytics, les journaux ne sont pas supprimés. Vos données restent, et suivent les stratégies de stockage et de conservation que vous définissez ici.

Scénarios d’usage

Azure Log Analytics et Power BI peuvent vous aider à résoudre les problèmes réels de votre organisation de nombreuses façons. Tenez compte des éléments suivants :

  • Identifiez les périodes d’activité élevées ou inhabituelles du moteur Analysis Services par capacité, espace de travail, rapport ou utilisateur.
  • Analysez les tendances et les performances des requêtes, y compris les opérations DirectQuery externes.
  • Analysez la durée d’actualisation, les chevauchements et les étapes de traitement du modèle sémantique.
  • Analysez les opérations personnalisées envoyées en utilisant le point de terminaison XMLA Premium.

Faites-nous part de votre feedback dans la Communauté Power BI sur la façon dont vous utilisez la journalisation et sur l’aide qu’elle a apportée à votre organisation.

Conditions d’erreur et résolutions

Le tableau suivant fournit un ensemble d’erreurs courantes, les événements ou configurations qui les ont déclenchées ainsi que des suggestions de résolutions.

Condition de déclencheur Type Message
Vous n’avez pas l’autorisation d’écrire dans l’espace de travail Log Analytics Erreur - Impossible de continuer Vous devez disposer d’autorisations d’accès en écriture sur cet espace de travail Log Analytics pour pouvoir le connecter à Power BI. Contactez la personne de votre organisation qui gère les abonnements Azure pour résoudre ce problème.
Vous n’avez pas l’autorisation d’écrire dans le compte de l’espace de travail Log Analytics Erreur - Impossible de continuer Vous devez disposer d’autorisations d’accès en écriture sur cet espace de travail Log Analytics pour pouvoir le connecter à Power BI.
Vous n’avez accès à aucun abonnement Azure Erreur - Impossible de continuer Vous n’avez accès à aucun abonnement Azure. Demandez à la personne qui gère les abonnements Azure dans votre organisation de vous octroyer un accès de contributeur ou supérieur.
Vous n’avez accès à aucun espace de travail Azure Log Analytics dans cet abonnement Erreur - Impossible de continuer Vous n’avez accès à aucun espace de travail Azure Log Analytics. Demandez à la personne qui gère les abonnements Azure dans votre organisation de vous ajouter au rôle de propriétaire ou de contributeur Log Analytics.
Log Analytics au niveau de l’espace de travail est désactivé au moment de la tentative de connexion Information Demandez à votre administrateur de locataire d’octroyer aux administrateurs d’espace de travail l’autorisation de connecter des espaces de travail Log Analytics.
Log Analytics au niveau de l’espace de travail est désactivé au moment de la tentative de déconnexion Information Votre administrateur de locataire a révoqué l’autorisation permettant aux administrateurs d’espace de travail de connecter leurs propres espaces de travail Azure Log Analytics. Si vous vous déconnectez, vous ne pouvez pas vous connecter à un autre.

Événements et schéma

Une fois que vous avez activé Azure Log Analytics, il commence à journaliser les catégories d’événements suivantes. Pour plus d’informations sur ces événements, consultez Événements de trace d’Analysis Services.

  • AggregateTableRewriteQuery
  • Commande
  • Deadlock
  • DirectQuery
  • Découvrez
  • Error
  • ProgressReport
  • Requête
  • Initialisation de la session
  • VertiPaqSEQuery
  • Notification

Le tableau suivant décrit le schéma.

Propriété Propriété Azure Analysis Services existante Description
TimeGenerated Horodatage (UTC) de la génération du journal.
OperationName EventClass_s L’événement de trace Analysis Services associé à l’enregistrement de journal. Pour plus d’informations sur les événements possibles pour chaque catégorie, reportez-vous à la page de documentation des événements de trace AS.
CorrelationId ID des événements corrélés. Peut être utilisé pour identifier les événements corrélés entre plusieurs tables.
PowerBIWorkspaceId Identificateur unique de l’espace de travail qui contient l’artefact utilisé.
PremiumCapacityId Identificateur unique de la capacité Premium qui héberge l’artefact utilisé.
ApplicationContext ApplicationContext_s Conteneur des propriétés d’identificateurs uniques fournissant des détails sur l’application qui exécute la requête. par exemple ID de rapport.
ApplicationName ApplicationName_s Contient le nom de l'application cliente qui a créé la connexion au serveur. Cette colonne est remplie avec les valeurs passées par l'application plutôt que par le nom affiché du programme.
ArtifactId Identificateur unique de la ressource qui journalise les données.
ArtifactKind Type d’artefact qui journalise l’opération, par exemple modèle sémantique.
CpuTimeMs CPUTime_s Temps processeur (en millisecondes) utilisé par l'événement.
ArtifactName DatabaseName_s Nom de l’artefact Power BI qui journalise cette opération.
LogAnalyticsCategory Unique La catégorie d’événement de trace Analysis Services associée à l’enregistrement de journal. Pour plus d’informations sur les catégories d’événement possibles, reportez-vous à la page de documentation des événements de trace AS.
DatasetMode Mode du modèle sémantique. Import, DirectQuery ou Composite.
DurationMs Duration_s Durée (en millisecondes) de l’opération.
Utilisateur User_s L’utilisateur associé à l’opération en cours d’exécution. Propriété utilisée quand l’identité d’un utilisateur final doit être empruntée sur le serveur.
ExecutingUser EffectiveUsername_s L’utilisateur exécutant l’opération.
OperationDetailName EventSubclass_s Plus de détails sur l’événement de trace Analysis Services associé à l’enregistrement de journal. Pour plus d’informations sur les valeurs possibles, reportez-vous à la propriété « Sous-classe » de la page de documentation des événements de trace, par exemple Command Begin.
XmlaObjectPath ObjectPath_s Chemin d'accès de l'objet. Liste de parents séparés par une virgule, commençant par le parent de l'objet.
PowerBIWorkspaceName Nom de l’espace de travail Power BI qui contient l’artefact.
StatusCode Error_s Code d’état de l’opération. Il couvre les réussites et les échecs.
ProgressCounter ProgressTotal_s Compteur de progression.
XmlaProperties RequestProperties_s Propriétés de la requête XMLA.
XmlaSessionId SPID_s Identificateur de session Analysis Services.
Niveau Severity_s Contient le niveau de gravité de l’opération journalisée. Success (réussite), Informational (informations), Warning (avertissement) ou Error (erreur).
Identité Informations sur l’utilisateur et les revendications.
État État de l’opération.
EventText TextData_s Contient des informations détaillées associées à l’opération, par exemple Requête DAX.
CustomerTenantId Identificateur de locataire Power BI du client.
XmlaRequestId RootActivityId_g Identificateur unique de la requête.
ReplicaId Identificateur de réplica qui vous permet d’identifier le réplica lorsque Scale-out des requêtes (QSO) est activé. Un réplica en lecture-écriture a toujours ReplicaId='AAA' et des réplicas en lecture seule ont ReplicaId commençant par « AAB ». Pour les modèles sémantiques non compatibles QSO, le ReplicaId est toujours « AAA »

Événement ExecutionMetrics

Pour chaque requête Discover, Command et Query, un événement nommé ExecutionMetrics est généré à la fin de la requête. Cet événement contient des métriques d’exécution pour la requête, qui peuvent vous aider à diagnostiquer et à résoudre les problèmes plus efficacement. La trace ExecutionMetrics est corrélée avec le plus proche événement [Discover|Command|Query]End.

La requête KQL suivante récupère les événements ExecutionMetrics pour toutes les opérations d’actualisation d’un modèle sémantique effectuées au cours du dernier jour :

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 requête KQL suivante récupère les événements qui ont été limités au cours du dernier jour par espace de travail, élément et utilisateur :

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

Les statistiques sont présentées sous forme de texte JSON dans la propriété EventText. Voir les exemples suivants.

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

Le tableau suivant décrit toutes les propriétés possibles. Toutes les propriétés ne sont pas émises dans chaque événement, car le contenu dépend de la requête et du modèle sémantique.

Propriété Description
timeStart Horodatage (UTC) du démarrage de la requête.
timeEnd Horodatage (UTC) de la fin de la requête.
durationMs Durée totale de l’exécution.
datasourceConnectionThrottleTimeMs Durée totale de limitation après avoir atteint la limite de connexion de la source de données. Apprenez-en davantage sur le nombre maximal de connexions simultanées ici.
externalQueryExecutionTimeMs Temps total consacré à l’exécution de toutes les requêtes de source de données externes pendant la requête.
directQueryConnectionTimeMs Durée totale consacrée à la création d’une connexion DirectQuery pendant la requête.
directQueryIterationTimeMs Durée totale consacrée à l’itération des résultats retournés par les requêtes DirectQuery.
directQueryTotalTimeMs Durée totale consacrée à l’exécution et à la lecture de toutes les requêtes DirectQuery pendant la requête.
executionDelayMs Durée totale consacrée à attendre la disponibilité des threads du pool de threads du moteur Analysis Services.
totalCpuTimeMs Temps processeur total de la requête.
vertipaqJobCpuTimeMs Temps processeur total consommé par le moteur Vertipaq.
mEngineCpuTimeMs Temps processeur total consommé par le moteur PowerQuery.
queryProcessingCpuTimeMs Temps processeur total consommé par les tâches sur le thread du pool de threads de requêtes Analysis Services.
approximatePeakMemoryConsumptionKB Pic approximatif de consommation totale de mémoire pendant la requête.
mEnginePeakMemoryKB Taille approximative de validation de mémoire maximale (en kilo-octets) sur tous les conteneurs mashup du moteur PowerQuery.
directQueryTimeoutMs Délai d’expiration associé aux requêtes DirectQuery.
externalQueryTimeoutMs Délai d’expiration associé aux requêtes vers des sources de données externes.
tabularConnectionTimeoutMs Délai d’expiration associé aux connexions de source de données tabulaires externes (par exemple, SQL).
refreshParallelism MaxParallelism effectif utilisé dans la requête.
vertipaqTotalRows Nombre total de lignes traitées par le moteur Vertipaq pendant une opération d’actualisation.
queryResultRows Nombre total de lignes retournées à la suite de la requête DAX.
directQueryTotalRows Nombre total de lignes lues à partir des différentes requêtes DirectQuery.
directQueryRequestCount Nombre total de requêtes de moteur de stockage DirectQuery exécutées par le moteur DAX.
errorCount Nombre total d’erreurs pour la requête actuelle.
qsoReplicaVersion Version du réplica pour les modèles sémantiques compatibles QSO, représentée au format FILETIME.
intendedUsage Utilisation prévue : par défaut (0) ; actualisation planifiée ou d’API (1) ; actualisation à la demande (2) ; actualisation de vignette du tableau de bord/cache de requête (3)
commandType Type de commande Analysis Services demandée par le client (par exemple, Batch, Instruction, Sauvegarde, etc.)
discoverType Type de découverte demandé par le client. Pour obtenir la liste des types de découverte, consultez EventSubclass.
queryDialect Type de dialecte utilisé par le client pour interroger le serveur : inconnu (-1) ; MDX (0) ; DMX (1) ; SQL (2) ; DAX (3) ; JSON (4)
capacityThrottlingMs Durée totale du retard de la requête dû à la limitation de capacité. Apprenez-en davantage sur la limitation ici.
  • Toutes les durées et temps processeur sont présentés en millisecondes.
  • Des propriétés supplémentaires au-delà de celles décrites dans le tableau ci-dessus peuvent être rencontrées, et elles doivent être considérées comme non documentées et susceptibles de changer.

Exemples de requêtes KQL Log Analytics

La collection suivante d’exemples de requêtes peut être utile quand vous utilisez Azure Log Analytics avec Power BI. Elles peuvent être exécutées directement dans le portail Azure ou via des API pour interroger les données les plus récentes, généralement des 5 à 10 dernières minutes.

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

Exemple de modèle de rapport Power BI

Explorez et obtenez des insights sur les données Power BI Azure Log Analytics à l’aide d’un modèle de rapport Power BI open source sur GitHub.

Les articles suivants peuvent vous permettre d’en savoir plus sur Power BI et sur son intégration à Azure Log Analytics.