Power BI 用に Azure Log Analytics を構成する

Power BI と Azure Log Analytics を統合すると、管理者と Premium ワークスペース所有者は、各自の Power BI サブスクリプションに Log Analytics 接続を構成できるようになります。 この記事では、Log Analytics と Power BI の間の統合が動作するしくみ、および環境に合わせてそれを構成する方法について説明します。

Power BI で Azure Log Analytics を動作させるための要素には、次の 2 つがあります。

  • Azure portal で Azure サブスクリプションを構成します。
  • Power BI 管理ポータルで Power BI の Log Analytics を有効にします。

以下のセクションでは、両方を行うステップを順番に説明します。

Screenshot of the Azure connections tab open in the settings pane.

前提条件

Power BI からの Log Analytics の統合を構成する前に、Azure portal で Log Analytics ワークスペースを作成する必要があります。 また、Power BI サービスがログを書き込むためのアクセス許可を Azure で付与する必要があります。 正確な要件は次のとおりです。

  • Azure サブスクリプションへの共同作成者アクセス。
  • Power BI ログ データを収集する Azure サブスクリプションで、"microsoft insights" リソース プロバイダーを登録します。
  • Power BI で Log Analytics 統合を設定するユーザーは、Log Analytics ワークスペースの Log Analytics 共同作成者ロールに属している必要があります。 所有者ロールを付与できない場合の回避策については、FAQ を参照してください。

"microsoft.insights" リソース プロバイダーを有効にする

Log Analytics を使用するには、Azure サブスクリプション レベルで "microsoft.insights" リソース プロバイダーが有効になっている必要があります。 次の手順に従ってそのプロセスを実行します。

  1. Azure portal にサインインして、Log Analytics で使用し、Log Analytics ワークスペースを格納するサブスクリプションを選択します。 次の図で示すように、 [設定] セクションで [リソース プロバイダー] を選択します。

    Screenshot of the settings menu options, resource providers is selected.

  2. [リソース プロバイダー][microsoft.insights] を探します。 次に、 [登録] を選択します。

    Screenshot of resource providers in the main pane with Microsoft.insights is registered.

アクセス許可を設定する

  1. Log Analytics 統合を構成するユーザーが Log Analytics ワークスペースの Log Analytics 共同作成者ロールを持っていることを確認します。 Azure portal のサブスクリプションで [アクセス制御 (IAM)] を選び、パネル上部の選択項目から [ロールの割り当て] を選んだ場合、現在のユーザーにはエントリが 1 つ表示されるはずです。Log Analytics を構成するユーザーの "Log Analytics 共同作成者" です。

    Screenshot of the Access control pane with role highlighted.

これらのステップを完了すると、Azure Log Analytics の構成の部分は完了です。 次のセクションでは、引き続き Power BI 管理ポータルで構成を完了する方法について説明します。

管理ポータルからワークスペース レベルのログを許可する

Power BI 管理者は、次の手順を完了して、Power BI Premium ワークスペース用に Azure Log Analytics を有効にする必要があります。 この設定により、前提条件が満たされていれば、Power BI Premium ワークスペース管理者は、Azure Log Analytics にワークスペース ログを送信できるようになります。

  1. Power BI 管理ポータル[テナント設定] > [監査と使用状況の設定] の順に移動し、[ワークスペース管理者の Azure Log Analytics 接続] を展開します。 ワークスペース管理者が Log Analytics を有効にするには、スライダーを [有効] に設定し、必要なセキュリティ グループを [適用先] で指定します。次の画像をご覧ください。

    Screenshot of tenant settings in the Admin portal. Azure log analytics connections for workspace administrators is expanded and enabled.

Premium ワークスペースでログを構成する

  1. Premium ワークスペースでは、ワークスペース管理者は Log Analytics を有効にすることができます。 そのためには、次の画像に示すように [設定] に移動します。

    Screenshot of the settings pane in a Premium workspace.

  2. [設定] ペインで [Azure 接続] を選択してから、次の画像に示すように [Log Analytics] を展開します。

    Screenshot of the Azure connections tab open in the settings pane, Log Analytics is expanded.

  3. Azure サブスクリプション、リソース グループ、前のセクションで構成した Log Analytics ワークスペースを選択します。 [保存] を選択します。 正常に完了すると、展開されたテナントレベルの [Log Analytics] セクションは次の画像のようになります。

    Screenshot of the Azure connections tab open in the settings pane showing sample information.

Azure Log Analytics を切断する

Azure Log Analytics から切断して、Azure へのログの送信を停止することができます。 切断するには、Power BI ワークスペースの [設定]Log Analytics の設定に移動します。 [Azure から切断する] を選択します。 次に、[保存] を選択して切断します。

Screenshot of the disconnect warning on the settings pane.

Note

Azure Log Analytics から Power BI ワークスペースを切断しても、ログは削除されません。 データは残っており、そこで設定したストレージと保持のポリシーに従います。

使用シナリオ

Azure Log Analytics と Power BI には、組織で実際に起きる課題を解決するためのさまざまな方法があります。 以下、具体例に沿って説明します。

  • 容量、ワークスペース、レポート、またはユーザー別に、Analysis Services エンジンのアクティビティが高い、または異常な期間を特定します。
  • 外部の DirectQuery 操作など、クエリのパフォーマンスと傾向を分析します。
  • セマンティック モデルの更新期間、重複、処理のステップを分析します。
  • Premium XMLA エンドポイントを使用して送信されたカスタム操作を分析します。

ログの使用方法と、それが組織にどのように役立ったかについて、Power BI コミュニティでフィードバックをお送りください。

エラーの状態と解決策

次の表では、一般的なエラー、それらをトリガーしたイベントまたは構成、推奨される解決策をまとめて示します。

トリガーの条件 Type メッセージ
Log Analytics ワークスペースに書き込むためのアクセス許可がない エラー - 続行できません この Log Analytics ワークスペースを Power BI に接続するには、そのワークスペースに対する書き込みアクセス許可が必要です。 お客様の組織で Azure サブスクリプションを管理している担当者に連絡して、この問題を解決してください。
Log Analytics ワークスペースのアカウントに書き込むためのアクセス許可がない エラー - 続行できません この Log Analytics ワークスペースを Power BI に接続するには、そのワークスペースに対する書き込みアクセス許可が必要です。
どの 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
  • Notification

次の表では、スキーマについて説明します。

プロパティ Azure Analysis Services の既存のプロパティ 説明
TimeGenerated ログが生成された時刻のタイムスタンプ (UTC)。
OperationName EventClass_s ログ レコードに関連付けられている操作。
CorrelationId 相関性があるイベントの ID。 複数のテーブル間で相関性のあるイベントを特定する際に使用できます。
PowerBIWorkspaceId 操作されている成果物が含まれるワークスペースの一意識別子。
PremiumCapacityId 操作されている成果物をホストしている Premium 容量の一意識別子。
ApplicationContext ApplicationContext_s 要求を実行しているアプリケーションに関する詳細を提供する一意識別子のプロパティ バッグ。 たとえば、レポート ID です。
ApplicationName ApplicationName_s サーバーに対する接続を確立したクライアント アプリケーションの名前を表します。 この列には、プログラムの表示名ではなく、アプリケーションによって渡された値が格納されます。
ArtifactId データをログに記録しているリソースの一意識別子。
ArtifactKind 操作をログに記録している成果物の種類 (セマンティック モデルなど)
CpuTimeMs CPUTime_s イベントに使用された CPU 時間 (ミリ秒単位)。
ArtifactName DatabaseName_s この操作をログに記録している Power BI 成果物の名前。
LogAnalyticsCategory 一意 イベントのカテゴリ (Audit、Security、Request など)。
DatasetMode セマンティック モデルのモード。 Import、DirectQuery、または Composite。
DurationMs Duration_s 操作にかかった時間 (ミリ秒単位)。
User User_s 実行中の操作に関連付けられているユーザー。 サーバーでエンド ユーザー ID の権限を借用する必要がある場合に使用されます。
ExecutingUser EffectiveUsername_s 操作を実行しているユーザー。
OperationDetailName EventSubclass_s 操作に関する詳細な情報。
XmlaObjectPath ObjectPath_s オブジェクトのパス。 そのオブジェクトの親から始まり、各親がコンマで区切られた一覧です。
PowerBIWorkspaceName 成果物が含まれる Power BI ワークスペースの名前。
StatusCode Error_s 操作の状態コード。 成功と失敗が示されます。
ProgressCounter ProgressTotal_s 進行状況カウンター。
XmlaProperties RequestProperties_s XMLA 要求のプロパティ。
XmlaSessionId SPID_s Analysis Services のセッション識別子。
Level Severity_s ログに記録されている操作の重大度レベルが含まれます。 Success、Informational、Warning、または Error。
ID ユーザーと要求に関する情報。
状態 操作の状態。
EventText TextData_s 操作に関連付けられている詳細な情報が含まれます (DAX クエリなど)。
CustomerTenantId 顧客の Power BI テナントの識別子。
XmlaRequestId RootActivityId_g 要求の一意識別子。
ReplicaId クエリ スケール アウト (QSO) が有効な場合に、レプリカを識別できるレプリカ ID。 読み取り/書き込みレプリカの ReplicaId は常に "AAA" であり、読み取り専用レプリカの ReplicaId は "AAB" 以降です。 QSO 非対応のセマンティック モデルの場合、ReplicaId は常に "AAA" です

Log Analytics KQL クエリの例

次の一連のサンプル クエリは、Power BI で Azure Log Analytics を使用するときに役に立つ場合があります。 これらを Azure portal で直接実行するか、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 レポートのテンプレート

GitHub のオープンソースの Power BI レポート テンプレートを使って、Azure Log Analytics Power BI データを探索し、分析情報を取得します。

次の記事は、Power BI の概要、および Azure Log Analytics の統合について、さらに詳しく学習するときに役に立ちます。