監視 Azure AI 搜尋服務解決方案
Azure 監視器可讓您深入解析搜尋服務的使用情況和表現。 您也可以收到警示以主動獲知問題。
在此,您將探索 Azure AI 搜尋服務可用的所有監視選項。 還會了解可建立哪些實用警示來管理搜尋解決方案。
在 Azure 監視器中監視 Azure AI 搜尋服務
建立 Azure AI 搜尋服務服務時,不需要任何其他設定,即可看到目前的搜尋延遲、每秒查詢數,以及節流查詢的百分比。 您可以在 [概觀] 頁面的 [監視] 索引標籤上檢視此資料。
您也可以在 [使用量] 索引標籤上查看搜尋解決方案使用的資源。
此基本資訊是監視的好起點,但還可以進一步多做一些設定。 如果您熟悉在 Azure 平台上支援其他資源,就會知道 Azure 監視器可用於所有 Azure 資源。
事實上,您已在最佳化效能單元中了解如何啟用 Azure 監視器。 請遵循那些步驟,讓 Azure 監視器使用 Log Analytics 中擷取的資料,以查看一組完整的診斷資料。
開始使用 Log Analytics 之後,您就可以存取這些記錄資料表中的效能和診斷資料:
- AzureActivity - 顯示已執行的工作,例如調整搜尋服務
- AzureDiagnostics - 所有查詢和編制索引作業
- AzureMetrics - 用於計量的資料,這些計量測量搜尋服務的健康情況和效能
使用計量從視覺上查看診斷資料
建立圖表很有助於檢視搜尋服務的表現。 在搜尋服務的 [監視] 區段下,選取 [計量]。
現在選擇新增以下任何擷取的計量:
- DocumentsProcessedCount
- SearchLatency
- SearchQueriesPerSecond
- SkillExecutionCount
- ThrottledSearchQueriesPercentage
例如,您可以對照節流查詢的百分比來繪製搜尋延遲,以了解節流是否影響對查詢的回應。
針對搜尋解決方案記錄撰寫 Kusto 查詢
Log Analytics 可讓您針對擷取的記錄資料撰寫任何 Kusto 查詢。 執行這些查詢最簡單的方式是在 [監視] 區段下選取 [記錄]。 記錄會開啟 Log Analytics,且任務視窗自動以您的 Azure AI 搜尋服務解決方案為範圍。
上述查詢可讓您查看最近的作業清單及其發生次數。
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
建立警示以獲知常見的搜尋解決方案問題
警示可讓您主動管理搜尋服務。 以下是您應該考慮建立的一些常用警示:
- 搜尋延遲 (使用計量訊號),您可以指定延遲多少秒會觸發警示
- 節流搜尋百分比 (使用計量訊號),您可以指定百分比
- 刪除搜尋服務 (使用活動記錄訊號),在刪除搜尋服務時通知您
- 停止搜尋服務 (使用活動記錄訊號),當搜尋服務擴增、縮減或需要重新啟動時,在搜尋服務停止後通知您