Azure AI Search 솔루션 모니터링

완료됨

Azure Monitor는 검색 서비스가 얼마나 잘 사용되고 수행되는지에 대한 인사이트를 제공할 수 있습니다. 경고를 수신하여 문제를 사전에 알릴 수도 있습니다.

여기서는 Azure AI Search에 사용할 수 있는 모든 모니터링 옵션을 살펴보겠습니다. 그런 다음, 검색 솔루션을 관리하기 위해 만들 수 있는 유용한 경고에 대해 알아봅니다.

Azure Monitor에서 Azure AI Search 모니터링

Azure AI Search 서비스를 만들 때 다른 설정을 수행하지 않고도 현재 검색 대기 시간, 초당 쿼리 및 제한된 쿼리의 비율을 볼 수 있습니다. 이 데이터는 개요 페이지의 모니터링 탭에서 볼 수 있습니다.

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 쿼리를 작성할 수 있습니다. 이러한 쿼리를 실행하는 가장 쉬운 방법은 모니터링 섹션에서 로그를 선택하는 것입니다. 로그는 Azure AI Search 솔루션으로 자동으로 범위가 지정된 퀘스트 창이 있는 Log Analytics를 엽니다.

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.

  • 대기 시간 검색은 메트릭 신호를 사용하여 경고를 트리거하는 대기 시간(초)을 지정할 수 있습니다.
  • 제한된 검색 백분율은 메트릭 신호를 사용하여 백분율을 지정할 수 있습니다.
  • Search Service 삭제는 활동 로그 신호를 사용하여 검색 서비스가 삭제되면 알림을 받습니다.
  • Search Service 중지는 활동 로그 신호를 사용하여 검색 서비스가 스케일 업 또는 다운되었거나 다시 시작해야 하는 경우 검색 서비스가 중지되면 알림을 받습니다.