Azure AI 検索の診断ログを構成する
リソース レベルの診断ログには、Azure AI 検索リソースで発生する操作に関する分析情報が提供されます。 一方、アクティビティ ログは、管理プレーンと呼ばれる、サブスクリプション内の各 Azure リソースに対して外部から実行された操作についての洞察を提供します。 アクティビティ ログは自動的に、また多くの場合に有効になります
この記事では、リソース レベルの診断ログを有効にする方法と、Azure AI 検索リソースに対するシステムとユーザーの操作に関する情報を検索する方法について説明します。
前提条件
- 同じサブスクリプションの Azure Log Analytics ワークスペース。
診断ログを有効にする
診断ログは、Azure Monitor を通じて使用可能になります。 アクティビティ ログや組み込みメトリックなどの一部のログは事前構成なしで自動的に報告されますが、サービス内の操作とデータ アクセスに関するリソース レベルのログでは、診断設定を作成し、ストレージ オプションを指定する必要があります。
Azure portal にサインインし、検索サービスに移動します。
[監視]>[診断設定] で、[診断設定を追加する] を選択します。
"my-search-service-all-logs" や "my-search-service-audit-logs" など、サービスとログのレベルを識別する名前を指定します。
[ログ] で、カテゴリを選択します。
- 監査ログにはデータまたはサービスの設定に対するユーザーまたはアプリの操作がキャプチャされますが、ユーザーまたはグループの ID は含まれません。
- 操作ログには検索サービスでの操作に関する情報がキャプチャされます。
- allLogs は、すべてを収集します。
詳細ログは保存にコストがかかり、管理と保存が複雑になる場合があります。 allLogs から始めて、範囲を絞ったログで情報の要件を満たせる場合は、それに切り替えることができます。 これらのカテゴリの詳細については、「Azure Monitor の診断設定」を参照してください。
宛先については、データに対して Kusto クエリを実行できるように、[Log Analytics ワークスペースへの送信] をお勧めします。 使用可能なワークスペースが存在する必要があります
設定を保存します。
より包括的なデータ収集戦略が必要な場合は、次の手順を繰り返します。
作成する各診断設定には、独自のデータ シンクが必要です。 Azure portal を使用してログを確認する場合、既定では最初の診断設定が使用されます。 視覚化をサポートするために、特定のワークスペースに移動できます。
Note
キーベースの認証を使用している場合、 Azure AI 検索で検索サービス上のコンテンツへの個々のユーザー アクセスを監視することはできません。 このレベルの監視が必要な場合は、それをクライアント アプリケーションに実装する必要があります。
Log Analytics ログを表示する
リソースに対するログ分析データを調査するには、次の手順に従います。
[監視] で [ログ] を選択します。 クエリ ハブが既定で開きます。 使用可能なクエリを試すか、ハブを閉じて KQL モードでクエリ ウィンドウを開き、Kusto 照会言語 (KQL) で記述されたクエリを実行できます。
クエリ ウィンドウでは、ログに対して Kusto クエリを実行できます。
サンプル クエリ
ログ データを調査するために使用できるいくつかの基本的な Kusto クエリを次に示します。
指定した期間の Azure AI 検索サービスのすべての診断ログを表示するには、次のクエリを実行します。
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.SEARCH"
最新の 10 件のログを表示するには、次のクエリを実行します。
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.SEARCH"
| take 10
リソースで操作をグループ化するには、次のクエリを実行します。
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.SEARCH" |
summarize count() by Resource
操作を実行するためにかかる平均時間を見つけるには、次のクエリを実行します。
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.SEARCH"
| summarize avg(DurationMs)
by OperationName
次のクエリを実行すると、時間の経過に伴う操作の量が OperationName ごとに分割され、カウントが 10 秒ごとにビン分割されて表示されます。
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.SEARCH"
| summarize count()
by bin(TimeGenerated, 10s), OperationName
| render areachart kind=unstacked