监视 Azure AI 搜索解决方案

已完成

Azure Monitor 可让你深入了解搜索服务的使用情况和性能。 你还可接收警报,以主动通知你问题。

在这里,你将了解可用于 Azure AI 搜索的所有监视选项。 然后,你将了解可用于管理搜索解决方案的有用警报。

在 Azure Monitor 中监视 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 Monitor 可用于所有 Azure 资源。

事实上,你已了解如何在优化性能单元中启用 Azure Monitor。 按照以下步骤使 Azure Monitor 可以使用在 Log Analytics 中捕获的数据查看完整的诊断数据集。

开始使用 Log Analytics 后,即可访问这些日志表中的性能和诊断数据:

  • AzureActivity - 显示已执行的任务,例如缩放搜索服务
  • AzureDiagnostics - 所有查询和索引操作
  • AzureMetrics - 用于度量搜索服务的运行状况和性能的指标数据

使用指标可直观地查看诊断数据

创建图表是查看搜索服务执行方式的强大方法。 在搜索服务的“监视”部分下,选择“指标”。

A screenshot of the metrics page.

现在,选择添加以下任何捕获的指标:

  • DocumentsProcessedCount
  • SearchLatency
  • SearchQueriesPerSecond
  • SkillExecutionCount
  • ThrottledSearchQueriesPercentage

例如,可以针对受限制查询百分比绘制搜索延迟,以查看对查询的响应是否受限制的影响。

针对搜索解决方案日志编写 Kusto 查询

Log Analytics 使你能够针对捕获的日志数据写入任何 Kusto 查询。 运行这些查询的最简单方法是在“监视”部分下选择“日志”。 Logs 会打开 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.

  • 使用指标信号的“搜索延迟”,你可以指定触发警报的延迟(以秒为单位)
  • 使用指标信号的“受限制的搜索百分比”,你可以指定百分比
  • 使用活动日志信号的“删除搜索服务”,搜索服务被删除时收到通知
  • 使用活动日志信号的“停止搜索服务”,在搜索服务停止(如果搜索服务纵向扩展或缩减或需要重启,则会发生这种情况)时收到通知