ゲートウェイ パフォーマンスの監視 (パブリック プレビュー)
パフォーマンスを監視するために、ゲートウェイ管理者は従来、Windows パフォーマンス モニター ツールを使用してパフォーマンス カウンターを手動で監視する必要があります。 結果を視覚化するための追加のクエリ ログと ゲートウェイ パフォーマンス PBI テンプレート ファイル が提供されるようになりました。 この機能では、ゲートウェイの使用状況に関する新しいインサイトを提供します。 これを使用して、実行速度の遅いクエリのトラブルシューティングを行うことができます。
注
この機能は現在、標準モードのオンプレミス データ ゲートウェイでのみ使用できます。 個人用モードではご利用いただけません。
注
ゲートウェイ診断では、帯域幅や待ち時間など、(仮想) マシンとそのネットワークに直接関連する診断はキャプチャされません。 ただし、これらの診断はゲートウェイのパフォーマンスに影響する可能性があります。 リソース監視ツールを使用して、マシンを監視できます。
パフォーマンス ログ
この機能は現在既定で有効になっています。
注
- 現在のところ、Premium 容量からゲートウェイへのクエリは、このログで見落とされることがあります。 この問題の修正に積極的に取り組んでいます。
- 現在のところ、Power BI 改ページ対応レポート クエリは、このツールを使用してログに記録されません。
パフォーマンス ログの構成
構成ファイル C:\Program Files\On-premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config
には、必要に応じて更新できる他の値があります。
- ReportFilePath: 4 つのログ ファイルが保存されるパスを決定します。 既定では、このパスは \Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Report または \Windows\ServiceProfiles\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Report のいずれかです。 パスは OS のバージョンによって異なります。 PBIEgwService 以外のゲートウェイのサービス アカウントを使用する場合は、パスのこの部分をサービス アカウント名に置き換えます。
- ReportFileCount: 保持する各種類のログ ファイルの数を決定します。 既定値は 10 です。
- ReportFileSizeInBytes: 維持するファイル サイズを決定します。 既定値は 104,857,600 です。
- QueryExecutionAggregationTimeInMinutes: クエリ実行情報が集約される分数を決定します。 既定値は 5 です。
- SystemCounterAggregationTimeInMinutes: システム カウンターが集計される分数を決定します。 既定値は 5 です。
構成ファイルに変更を加えたら、ゲートウェイを再起動してこれらの構成値を有効にします。 レポート ファイルは、ReportFilePath に指定した場所に生成されます。
注
フォルダーにファイルが表示されるようになるまで、構成ファイルの QueryExecutionAggregationTimeInMinutes で設定した時間に加えて、最大で 10 分かかる場合があります。
パフォーマンス ログについて
この機能をオンにすると、4 つの新しいログファイルが作成されます。
- クエリ実行レポート
- クエリ開始レポート
- クエリ実行集計レポート
- システム カウンター集計レポート
クエリ実行レポートには、詳細なクエリ実行情報が含まれています。 次の属性がキャプチャされます。
属性 | 説明 |
---|---|
GatewayObjectId | ゲートウェイ用の一意の識別子です。 |
RequestId | ゲートウェイ要求の一意識別子です。 複数のクエリで同じになる場合があります。 |
DataSource | データ ソースの種類とデータ ソースの両方が含まれます。 |
QueryTrackingId | クエリの一意の識別子です。 ただし、クエリが失敗して再試行された場合は、繰り返される可能性があります。 |
QueryExecutionEndTimeUTC | クエリの実行が完了した時刻。 |
QueryExecutionDuration (ミリ秒) | クエリ実行時間。 |
QueryType | クエリの種類。 たとえば、渡されたクエリは Power BI 更新または DirectQuery かもしれません。 または、Power Apps や Power Automate からのクエリかもしれません。 |
DataProcessingEndTimeUTC | スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティが完了した時刻。 |
DataProcessingDuration (ミリ秒) | スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティ時間。 |
成功 | クエリの成功または失敗を示します。 |
ErrorMessage | クエリが失敗した場合は、エラー メッセージを示します。 |
SpoolingDiskWritingDuration (ミリ秒) | ゲートウェイがすべてのデータをディスクに書き込む時間を示します。 |
SpoolingDiskReadingDuration (ミリ秒) | ゲートウェイがすべてのデータをディスクに読み取る時間を示します。 |
SpoolingTotalDataSize (バイト) | ディスクへの書き込み/ディスクからの読み取りを行うデータのサイズ (圧縮)。 |
DataReadingAndSerializationDuration (ミリ秒) | ゲートウェイでデータソースからデータを読み取り、パケットにシリアル化するのにかかる時間を示します。 |
DiskRead (バイト/秒) | ゲートウェイで 1 秒あたりに読み取るバイト数を示します。 DiskRead(バイト/秒) = SpoolingTotalDataSize / SpoolingDiskReadingDuration |
DiskWrite (バイト/秒) | ゲートウェイで 1 秒あたりに書き取るバイト数を示します。 DiskWrite(バイト/秒) = SpoolingTotalDataSize / SpoolingDiskWritingDuration |
クエリ開始レポートには、クエリとクエリ開始時刻が含まれています。 次の属性がキャプチャされます。
属性 | 説明 |
---|---|
GatewayObjectId | ゲートウェイ用の一意の識別子です。 |
RequestId | ゲートウェイ要求の一意識別子です。 複数のクエリで同じになる場合があります。 |
DataSource | データ ソースの種類とデータ ソースの両方が含まれます。 |
QueryTrackingId | クエリの一意の識別子です。 ただし、クエリが失敗して再試行された場合は、繰り返される可能性があります。 |
QueryExecutionStartTimeUTC | クエリの実行が開始された時刻。 |
QueryType | クエリの種類。 たとえば、渡されたクエリは Power BI 更新または DirectQuery かもしれません。 または、Power Apps や Power Automate からのクエリかもしれません。 |
QueryText | base64 でエンコードされた完全なクエリ。 |
EvaluationContext | 成果物に応じて追加のトレース ID と共に、 artifactId (セマンティック モデルの datasetid 、 dataflowsId など) が含まれます。 このフィールドは、Fabric、Power Platform、Azure Analysis Services、および Azure Logic Apps の特定のコネクタでサポートされているワークロードに対してのみ設定されます。 これらのワークロードには、セマンティック モデル、データフロー Gen2、Power Platform データフローが含まれます。 Mashup クエリ、HTTP、および File Azure コネクタ用の Azure Logic Apps ワークロードも含まれます。 この値には、使用されるワークロードに応じて異なるトレース ID が含まれています。 Power BI および Fabric データフロー Gen1 と Power BI のページ分割されたレポートはサポートされていません。 |
クエリ実行集計レポートには、GatewayObjectId、DataSource。Success、および QueryType で時間間隔に集計されたクエリ情報が含まれています。 既定値は 5 分となっていますが、変更可能です。 次の属性がキャプチャされます。
属性 | 説明 |
---|---|
GatewayObjectId | ゲートウェイ用の一意の識別子です。 |
AggregationStartTimeUTC | クエリ属性が集計された時間枠の開始時間。 |
AggregationEndTimeUTC | クエリ属性が集計された時間枠の終了時間。 |
DataSource | データ ソースの種類とデータ ソースの両方が含まれます。 |
成功 | クエリの成功または失敗を示します。 |
AverageQueryExecutionDuration (ミリ秒) | 集約時間ウィンドウのためのクエリ実行の平均時間。 |
MaxQueryExecutionDuration (ミリ秒) | 集約時間ウィンドウのためのクエリ実行の最大時間。 |
MinQueryExecutionDuration (ミリ秒) | 集約時間ウィンドウのためのクエリ実行の最小時間。 |
QueryType | クエリの種類。 たとえば、渡されたクエリは Power BI 更新または DirectQuery かもしれません。 または、Power Apps や Power Automate からのクエリかもしれません。 |
AverageDataProcessingDuration (ミリ秒) | スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティの平均時間。 |
MaxDataProcessingDuration (ミリ秒) | スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティの最大時間。 |
MinDataProcessingDuration (ミリ秒) | スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティの最小時間。 |
数える | クエリの数 |
システム カウンター集計レポートには、時間間隔に集計されたシステム カウンター値が含まれます。 既定値は 5 分となっていますが、変更可能です。 次の属性がキャプチャされます。
属性 | 説明 |
---|---|
GatewayObjectId | ゲートウェイ用の一意の識別子です。 |
AggregationStartTimeUTC | 集計されたシステム カウンターの時間枠の開始時間。 |
AggregationEndTimeUTC | 集計されたシステム カウンター時間枠の終了時間。 |
CounterName | システム カウンターはそれぞれ、ゲートウェイ ノードをホストしている 1 台のサーバーに適用され、次のものが含まれます。 • SystemCPUPercent: サーバーで使用されている CPUのうち、使用可能な CPU の合計に対する割合。 • SystemMEMUsedPercent: サーバーで使用されているメモリのうち、使用可能なメモリの合計に対する割合。 • GatewayCPUPercent: 各コアのゲートウェイ プロセスによって使用される CPU の割合の合計。 サーバーで使用されている CPU の割合を取得するには、GatewayCPUPercent をコア数で除算します。 • GatewayMEMKb: ゲートウェイ プロセスで使用されているメモリの合計 (キロバイト単位)。 |
Max (最大値) | 集約時間ウィンドウのシステム カウンターの最大値。 |
分 | 集約時間ウィンドウのシステム カウンターの最小値。 |
平均 | 集約時間ウィンドウのシステム カウンターの平均値。 |
ゲートウェイのパフォーマンスを視覚化する
これで、ログ ファイルにあるデータを視覚化できます。
Gateway Performance PBI テンプレートをダウンロードし、Power BI Desktop を使用して開きます。
開いたダイアログで、フォルダー パスが ReportFilePath の値と一致することを確認します。
[読み込み] を選択すると、テンプレート ファイルによってログ ファイルからのデータの読み込みが開始されます。 すべてのビジュアルは、レポートのデータを使用して入力されます。
必要に応じて、このファイルを PBIX として保存し、自動更新用にサービスへ公開します。 詳細については、「Power BI Desktop からのセマンティック モデルとレポートの発行」を参照してください。
このテンプレート ファイルは、ニーズに合わせてカスタマイズすることもできます。 Power BI テンプレートの詳細については、この「Microsoft Power BI ブログ投稿」を参照してください。
スプール記憶域の監視
既定では、ゲートウェイのスプール記憶域は C:\Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Spooler にあります。 十分な空きディスク領域があることを確認するには、この場所を監視してください。 詳細については、 ゲートウェイ・スプール・データを参照してください。
実行速度の遅いクエリ
実行時間の長いクエリでは、データ ソースに追加の変更を加えたり、クエリ自体をさらに最適化したりする必要があります。 この変更は、Power BI の更新や、Power BI DirectQuery、Power Apps、Azure Logic Apps などの直接データベース クエリに対して行うことができます。
既定では、ゲートウェイで基本的なログ記録が実行されます。 パフォーマンスの低いクエリを調査している場合は、パフォーマンス監視機能の使用に加えて、 追加のログ記録 を一時的に有効にして、マッシュアップ エンジン ログ、クエリ文字列、詳細レベルのトレースなど、より多くのログ情報を収集できます。 これらのログは、通常のゲートウェイ ログと同じ場所に書き込まれます。 追加のログ記録を有効にするには、 オンプレミス データ ゲートウェイ アプリ で [診断>追加ログ記録]を選択します。
この設定を有効にすると、ゲートウェイの使用状況に基づいてログ サイズが大幅に増加する可能性があります。 ログの確認が完了したら、追加のログ記録を無効にすることをお勧めします。 通常のゲートウェイの使用中にこの設定を有効のままにすることは推奨されません。
データをストリーミングしてパフォーマンスを最適化する
既定では、オンプレミスのデータ ゲートウェイは、データをセマンティック モデルに返す前にデータをスプールし、データのロードおよび更新操作中のパフォーマンスの低下を引き起こす可能性があります。 既定の動作はオーバーライドできます。
C:\Program Files\On-Premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config ファイルで、StreamBeforeRequestCompletes 設定を True に設定し、保存します。
<setting name="StreamBeforeRequestCompletes" serializeAs="String"> <value>True</value> </setting>
オンプレミスのデータ ゲートウェイ >サービス設定では、ゲートウェイを再起動します。
注
StreamBeforeRequestCompletes を有効にすると、低速のデータ ソースを使用する場合や、ネットワーク接続が不安定または制限されている場合に、クエリの信頼性の問題が発生する可能性があります。
ウイルス対策スキャンから特定のフォルダーを除外してパフォーマンスを最適化すると、
潜在的なパフォーマンスへの影響を回避するために、オンプレミス データ ゲートウェイがインストールされているサーバーでファイル レベルのウイルス対策ソフトウェアを使用する場合、特定のフォルダーをウイルス対策スキャンから除外できます。 これらのフォルダーが除外されていない場合は、パフォーマンスへの影響やその他の予期しない動作が発生する可能性があります。これらのフォルダーは多数の書き込み操作を受け取り、オンプレミス データ ゲートウェイの中核となるデータ パイプラインであるためです。
オンプレミス データ ゲートウェイ サーバーで、ウイルス対策スキャンから除外する必要がある可能性があるフォルダー
注
次のプレース ホルダーの Drive は、オンプレミス データ ゲートウェイがインストールされているドライブの文字を表します。 通常、ドライバー文字は C です。次のプレースホルダー ServiceAccount は、オンプレミス データ ゲートウェイを実行しているサービス アカウントを表します。 既定のアカウントは PBIEgwService です。
- ログ ディレクトリ: Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\オンプレミス データ ゲートウェイ
- スプール ストレージ ディレクトリ: Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\オンプレミス データ ゲートウェイ\Spooler