监视 Azure AI 搜索解决方案

已完成

Azure Monitor 可让你深入了解搜索服务的使用和执行程度。 还可以接收警报,主动通知问题。

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

在 Azure Monitor 中监视 Azure AI 搜索

创建 Azure AI 搜索服务时,无需执行任何其他设置,即可看到当前的搜索延迟、每秒查询数和受限制查询百分比。 可以在“概述”页的“监视”选项卡上查看此数据。

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 搜索解决方案。

针对 AzureDiagnostic 表的 Log Analytics Kusto 查询的屏幕截图。

通过上述查询,可查看最近作的列表及其发生的次数。

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

创建有关常见搜索解决方案问题的通知的警报

警报可让你主动管理搜索服务。 下面是一些常用的警报,应考虑创建:

可以为其创建警报的所有指标的屏幕截图。

  • 使用指标信号搜索延迟,可以指定延迟以秒为单位触发警报
  • 使用指标信号限制搜索百分比,可以指定百分比
  • 使用活动日志信号删除搜索服务,如果删除搜索服务,则会收到通知
  • 使用活动日志信号停止搜索服务,如果搜索服务已停止,则当搜索服务纵向扩展或缩减或需要重启时,将会收到通知