监视 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 查询。 运行这些查询的最简单方法是在“监视”部分下选择 “日志 ”。 日志 将打开 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
创建有关常见搜索解决方案问题的通知的警报
警报可让你主动管理搜索服务。 下面是一些常用的警报,应考虑创建:
- 使用指标信号搜索延迟,可以指定延迟以秒为单位触发警报
- 使用指标信号限制搜索百分比,可以指定百分比
- 使用活动日志信号删除搜索服务,如果删除搜索服务,则会收到通知
- 使用活动日志信号停止搜索服务,如果搜索服务已停止,则当搜索服务纵向扩展或缩减或需要重启时,将会收到通知