监视 Azure AI 搜索解决方案
Azure Monitor 可让你深入了解搜索服务的使用情况和性能。 你还可接收警报,以主动通知你问题。
在这里,你将了解可用于 Azure AI 搜索的所有监视选项。 然后,你将了解可用于管理搜索解决方案的有用警报。
在 Azure Monitor 中监视 Azure AI 搜索
创建 Azure AI 搜索服务时,无需执行任何其他设置,即可看到当前搜索延迟、每秒查询数和受限制查询百分比。 可以在“概述”页的“监视”选项卡上查看此数据。
还可以在“使用情况”选项卡上查看搜索解决方案正在使用的资源。
此基本信息是监视的良好起点,但你可进一步执行更多配置。 如果你熟悉如何在 Azure 平台上支持其他资源,你就会知道 Azure Monitor 可用于所有 Azure 资源。
事实上,你已了解如何在优化性能单元中启用 Azure Monitor。 按照以下步骤使 Azure Monitor 可以使用在 Log Analytics 中捕获的数据查看完整的诊断数据集。
开始使用 Log Analytics 后,即可访问这些日志表中的性能和诊断数据:
- AzureActivity - 显示已执行的任务,例如缩放搜索服务
- AzureDiagnostics - 所有查询和索引操作
- AzureMetrics - 用于度量搜索服务的运行状况和性能的指标数据
使用指标可直观地查看诊断数据
创建图表是查看搜索服务执行方式的强大方法。 在搜索服务的“监视”部分下,选择“指标”。
现在,选择添加以下任何捕获的指标:
- DocumentsProcessedCount
- SearchLatency
- SearchQueriesPerSecond
- SkillExecutionCount
- ThrottledSearchQueriesPercentage
例如,可以针对受限制查询百分比绘制搜索延迟,以查看对查询的响应是否受限制的影响。
针对搜索解决方案日志编写 Kusto 查询
Log Analytics 使你能够针对捕获的日志数据写入任何 Kusto 查询。 运行这些查询的最简单方法是在“监视”部分下选择“日志”。 Logs 会打开 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
创建警报以通知有关常见搜索解决方案问题
警报可让你主动管理搜索服务。 以下是应考虑创建的一些常用警报:
- 使用指标信号的“搜索延迟”,你可以指定触发警报的延迟(以秒为单位)
- 使用指标信号的“受限制的搜索百分比”,你可以指定百分比
- 使用活动日志信号的“删除搜索服务”,搜索服务被删除时收到通知
- 使用活动日志信号的“停止搜索服务”,在搜索服务停止(如果搜索服务纵向扩展或缩减或需要重启,则会发生这种情况)时收到通知