監視 Azure AI 搜尋服務解決方案

已完成

Azure 監視器可讓您深入解析搜尋服務的使用情況和表現。 您也可以收到警示以主動獲知問題。

在此,您將探索 Azure AI 搜尋服務可用的所有監視選項。 還會了解可建立哪些實用警示來管理搜尋解決方案。

在 Azure 監視器中監視 Azure AI 搜尋服務

建立 Azure AI 搜尋服務服務時,不需要任何其他設定,即可看到目前的搜尋延遲、每秒查詢數,以及節流查詢的百分比。 您可以在 [概觀] 頁面的 [監視] 索引標籤上檢視此資料。

A screenshot of the monitor tab in Azure AI Search.

您也可以在 [使用量] 索引標籤上查看搜尋解決方案使用的資源。

A screenshot of the usage tab on the overview page of Azure AI Search service.

此基本資訊是監視的好起點,但還可以進一步多做一些設定。 如果您熟悉在 Azure 平台上支援其他資源,就會知道 Azure 監視器可用於所有 Azure 資源。

事實上,您已在最佳化效能單元中了解如何啟用 Azure 監視器。 請遵循那些步驟,讓 Azure 監視器使用 Log Analytics 中擷取的資料,以查看一組完整的診斷資料。

開始使用 Log Analytics 之後,您就可以存取這些記錄資料表中的效能和診斷資料:

  • AzureActivity - 顯示已執行的工作,例如調整搜尋服務
  • AzureDiagnostics - 所有查詢和編制索引作業
  • AzureMetrics - 用於計量的資料,這些計量測量搜尋服務的健康情況和效能

使用計量從視覺上查看診斷資料

建立圖表很有助於檢視搜尋服務的表現。 在搜尋服務的 [監視] 區段下,選取 [計量]

A screenshot of the metrics page.

現在選擇新增以下任何擷取的計量:

  • DocumentsProcessedCount
  • SearchLatency
  • SearchQueriesPerSecond
  • SkillExecutionCount
  • ThrottledSearchQueriesPercentage

例如,您可以對照節流查詢的百分比來繪製搜尋延遲,以了解節流是否影響對查詢的回應。

針對搜尋解決方案記錄撰寫 Kusto 查詢

Log Analytics 可讓您針對擷取的記錄資料撰寫任何 Kusto 查詢。 執行這些查詢最簡單的方式是在 [監視] 區段下選取 [記錄]記錄會開啟 Log Analytics,且任務視窗自動以您的 Azure AI 搜尋服務解決方案為範圍。

A screenshot of a Log Analytics Kusto query against the AzureDiagnostic table.

上述查詢可讓您查看最近的作業清單及其發生次數。

AzureDiagnostics
| summarize count() by OperationName

以下實用的查詢有助於監視和診斷搜尋解決方案的問題:

查詢

Kusto


長時間執行的查詢

AzureDiagnostics
| project OperationName, resultSignature_d, DurationMs, Query_s, Documents_d, IndexName_s
| where OperationName == "Query.Search"
| sort by DurationMs

索引子狀態

AzureDiagnostics
| project OperationName, Description_s, Documents_d, ResultType, resultSignature_d
| where OperationName == "Indexers.Status"

HTTP 狀態碼

AzureDiagnostics
| where TimeGenerated > ago(7d)
| summarize count() by resultSignature_d
| render barchart

查詢速率

AzureDiagnostics
| where OperationName == "Query.Search" and TimeGenerated > ago(1d)
| extend MinuteOfDay = substring(TimeGenerated, 0, 16) 
| project MinuteOfDay, DurationMs, Documents_d, IndexName_s
| summarize QPM=count(), AvgDuractionMs=avg(DurationMs), AvgDocCountReturned=avg(Documents_d)  by MinuteOfDay
| order by MinuteOfDay desc 
| render timechart

平均查詢延遲

let intervalsize = 1m; 
let _startTime = datetime('2021-02-23 17:40');
let _endTime = datetime('2021-02-23 18:00');
AzureDiagnostics
| where TimeGenerated between(['_startTime']..['_endTime']) // Time range filtering
| summarize AverageQueryLatency = avgif(DurationMs, OperationName in ("Query.Search", "Query.Suggest", "Query.Lookup", "Query.Autocomplete"))
by bin(TimeGenerated, intervalsize)
| render timechart

每分鐘平均查詢 (QPM)

let intervalsize = 1m; 
let _startTime = datetime('2021-02-23 17:40');
let _endTime = datetime('2021-02-23 18:00');
AzureDiagnostics
| where TimeGenerated between(['_startTime'] .. ['_endTime']) // Time range filtering
| summarize QueriesPerMinute=bin(countif(OperationName in ("Query.Search", "Query.Suggest", "Query.Lookup", "Query.Autocomplete"))/(intervalsize/1m), 0.01)
by bin(TimeGenerated, intervalsize)
| render timechart

每分鐘編制索引作業 (OPM)

let intervalsize = 1m; 
let _startTime = datetime('2021-02-23 17:40');
let _endTime = datetime('2021-02-23 18:00');
AzureDiagnostics
| where TimeGenerated between(['_startTime'] .. ['_endTime']) // Time range filtering
| summarize IndexingOperationsPerSecond=bin(countif(OperationName == "Indexing.Index")/ (intervalsize/1m), 0.01)
by bin(TimeGenerated, intervalsize)
| render timechart

建立警示以獲知常見的搜尋解決方案問題

警示可讓您主動管理搜尋服務。 以下是您應該考慮建立的一些常用警示:

A screenshot of all the metric you can create alerts for.

  • 搜尋延遲 (使用計量訊號),您可以指定延遲多少秒會觸發警示
  • 節流搜尋百分比 (使用計量訊號),您可以指定百分比
  • 刪除搜尋服務 (使用活動記錄訊號),在刪除搜尋服務時通知您
  • 停止搜尋服務 (使用活動記錄訊號),當搜尋服務擴增、縮減或需要重新啟動時,在搜尋服務停止後通知您