Azure AI 검색에서 쿼리 요청 모니터링

이 문서에서는 기본 제공 메트릭 및 리소스 로깅을 사용하여 쿼리 성능 및 볼륨을 측정하는 방법을 설명합니다. 또한 애플리케이션 사용자가 입력한 쿼리 문자열을 가져오는 방법도 설명합니다.

Azure Portal은 쿼리 대기 시간, 쿼리 로드(QPS) 및 제한에 대한 기본 메트릭을 보여 줍니다. 이러한 메트릭에 피드되는 기록 데이터는 포털에서 30일 동안 액세스할 수 있습니다. 보존 기간을 늘리거나 작동 데이터 및 쿼리 문자열을 보고하려면 로그된 작업 및 메트릭을 유지하기 위한 스토리지 옵션을 지정하는 진단 설정을 추가해야 합니다. 기록된 작업의 대상으로 Log Analytics 작업 영역을 권장합니다. Kusto 쿼리 및 데이터 탐색은 Log Analytics 작업 영역을 대상으로 합니다.

데이터 측정의 무결성을 최대화하는 조건은 다음과 같습니다.

  • 청구 가능 서비스(기본 또는 표준 계층에서 만든 서비스)를 사용합니다. 체험 서비스는 여러 구독자가 공유하므로 로드 이동 과정에서 특정 양의 변동성을 도입합니다.

  • 가능하면 단일 복제본 및 파티션을 사용하여 억제 및 격리된 환경을 만듭니다. 여러 복제본을 사용하는 경우 쿼리 메트릭은 여러 노드에 걸쳐 평균을 계산하여 결과의 자릿수를 낮출 수 있습니다. 마찬가지로 여러 파티션을 가지는 것은 데이터가 분할되는 것을 의미하며, 인덱싱이 함께 진행 중인 경우 일부 파티션에서는 다른 데이터를 가질 수 있습니다. 쿼리 성능을 조정할 때 단일 노드와 파티션은 테스트를 위한 보다 안정적인 환경을 제공합니다.

추가 클라이언트 사이드 코드와 Application Insights를 사용하여 사용자 클릭 데이터를 캡처함으로써 애플리케이션 사용자의 관심을 끄는 요소에 대한 심층적인 인사이트를 얻을 수도 있습니다. 자세한 내용은 트래픽 분석 검색을 참조하세요.

쿼리 볼륨(QPS)

볼륨은 1분간 실행되는 쿼리의 평균, 개수, 최솟값 또는 최댓값으로 보고할 수 있는 기본 제공 메트릭인 QPS(초당 검색 쿼리)로 측정됩니다. 메트릭의 1분 간격(TimeGrain = “PT1M”)은 시스템 내에서 수정됩니다.

SearchQueriesPerSecond 메트릭에 대해 자세히 알아보려면 초당 쿼리 수를 참조하세요.

쿼리 성능

서비스 전체의 쿼리 성능은 검색 대기 시간제한된 쿼리로 측정됩니다.

Search latency

쿼리 대기 시간은 쿼리가 완료되는 데 걸리는 시간을 나타냅니다. SearchLatency 메트릭에 대해 자세히 알아보려면 검색 대기 시간을 참조하세요.

검색 대기 시간 메트릭에 대한 다음 예제를 고려합니다. 86개 쿼리의 평균 기간이 23.26 밀리초로 샘플링되었습니다. 최솟값 0은 일부 쿼리가 드롭되었음을 나타냅니다. 가장 오래 실행되는 쿼리를 완료하는 데 1000 밀리초가 소요되었습니다. 총 실행 시간은 2초입니다.

대기 시간 집계

제한된 쿼리

제한된 쿼리는 처리되지 않고 드롭된 쿼리를 의미합니다. 대부분의 경우 제한이 발생하는 것은 서비스 실행의 일부로서 일반적인 경우입니다. 이런 현상이 반드시 문제가 있음을 나타내는 것은 아닙니다. ThrottledSearchQueriesPercentage 메트릭에 대해 자세히 알아보려면 제한된 쿼리 비율을 참조하세요.

다음 스크린샷에서 첫 번째 숫자는 로그로 전송되는 수 또는 메트릭 수입니다. 상단에, 또는 메트릭을 마우스로 가리킬 때 표시되는 다른 집계는 평균, 최댓값 및 합계를 포함합니다. 해당 샘플에서는 요청이 드롭되지 않았습니다.

제한된 집계

포털에서 메트릭 탐색

현재 수치를 빠르게 확인하기 위해 서비스 개요 페이지의 모니터링 탭에 집계 형식을 변경하는 옵션을 사용하여 시간, 일 및 주 단위로 측정되는 고정된 간격에 대한 다음의 세 가지 메트릭이 표시됩니다. 검색 대기 시간, 검색 쿼리 당 시간(초)(검색 단위 당), 제한된 검색 쿼리 백분율

보다 심층적으로 탐색하려면 데이터를 계층화하고 확대 및 시각화하여 추세 또는 변칙을 탐색할 수 있도록 모니터링 메뉴에서 메트릭 탐색기를 엽니다. 해당 메트릭 차트 만들기 자습서에서 메트릭 탐색기에 대한 자세한 정보를 알아보세요.

  1. 모니터링 섹션에서 메트릭을 선택하여 검색 서비스에 설정된 범위에서 메트릭 탐색기를 엽니다.

  2. 메트릭의 드롭다운 목록에서 하나를 선택하여 기본 형식에 사용 가능한 집계 목록을 검토합니다. 집계는 수집된 값이 각 시간 간격에 걸쳐 샘플링되는 방법을 정의합니다.

    QPS 메트릭에 대한 메트릭 탐색기

  3. 오른쪽 위 모서리에서 시간 간격을 설정합니다.

  4. 시각화를 선택합니다. 기본값은 꺾은선형 차트입니다.

  5. 메트릭 추가를 선택하고 다른 집계를 선택하여 더 많은 집계를 계층화합니다.

  6. 꺾은선형 차트에서 관심 영역을 확대합니다. 영역의 시작 부분에 마우스 포인터를 놓고 마우스 왼쪽 단추를 누른 채 영역의 반대쪽으로 끈 후 단추를 놓습니다. 차트는 해당 시간 범위를 확대합니다.

사용자가 입력한 쿼리 문자열 반환

리소스 로깅을 사용하도록 설정하면 시스템은 AzureDiagnostics 테이블에서 쿼리 요청을 캡처합니다. 필수 조건으로 로그 분석 작업 영역이나 다른 스토리지 옵션 중 하나인 로깅된 작업의 대상을 이미 지정해야 합니다.

  1. 모니터링 섹션에서 로그를 선택하여 Log Analytics에서 빈 쿼리 창을 엽니다.

  2. 다음 식을 실행하여 Query.Search 작업을 검색하고 작업 이름, 쿼리 문자열, 쿼리된 인덱스 및 찾은 문서 수로 구성된 테이블 형식 결과 집합을 반환합니다. 마지막 두 문은 샘플 인덱스에 대해 비어 있거나 지정되지 않은 검색으로 구성된 쿼리 문자열을 제외하고 결과의 노이즈를 잘라냅니다.

       AzureDiagnostics
    | project OperationName, Query_s, IndexName_s, Documents_d
    | where OperationName == "Query.Search"
    | where Query_s != "?api-version=2024-07-01&search=*"
    | where IndexName_s != "realestate-us-sample-index"
    
  3. 선택에 따라 특정 구문이나 문자열을 검색하도록 Query_s 열 필터를 설정합니다. 예를 들어 ?api-version=2024-07-01&search=*&%24filter=HotelName과 같음을 필터링할 수 있습니다.

    로그된 쿼리 문자열

해당 기법이 임시 조사를 수행하는 동안 보고서를 작성하여 분석에 보다 용이한 레이아웃으로 쿼리 문자열을 통합 및 표시할 수 있습니다.

장기 실행 쿼리 확인

기간 열을 추가하여 메트릭으로 픽업된 쿼리 뿐만 아니라 모든 쿼리에 대한 숫자를 가져옵니다. 해당 데이터를 정렬하면 완료하는 데 가장 오랜 시간이 소요되는 쿼리를 볼 수 있습니다.

  1. 모니터링 섹션에서 로그를 선택하여 로그 정보를 쿼리합니다.

  2. 다음의 기본 쿼리를 실행하여 기간(밀리초)별로 정렬된 쿼리를 반환합니다. 가장 오래 실행되는 쿼리는 상단에 있습니다.

    AzureDiagnostics
    | project OperationName, resultSignature_d, DurationMs, Query_s, Documents_d, IndexName_s
    | where OperationName == "Query.Search"
    | sort by DurationMs
    

    지속 시간별 쿼리 정렬

메트릭 경고 만들기

메트릭 경고는 알림을 보내거나 미리 정의한 정정 작업을 트리거하기 위한 임계값을 설정합니다. 쿼리 실행과 관련된 경고를 만들 수 있지만 리소스 상태, 쿼리 서비스 구성 변경, 기술 실행 및 문서 처리(인덱싱)에 대한 경고를 만들 수도 있습니다.

모든 임계값은 사용자가 정의하므로 경고를 트리거해야 하는 작업 수준에 대한 아이디어가 있어야 합니다.

쿼리 모니터링의 경우 검색 대기 시간 및 제한된 쿼리에 대한 메트릭 경고를 만드는 것이 일반적입니다. 쿼리가 드롭되는 시기를 알고 있으면 로드를 줄이거나 용량을 늘리는 해결책을 찾을 수 있습니다. 예를 들어 인덱싱 중에 제한된 쿼리가 증가하는 경우 쿼리 작업이 진정될 때까지 인덱싱 작업을 연기할 수 있습니다.

특정 복제본 파티션 구성의 제한을 푸시하는 경우 쿼리 QPS(볼륨 임계값)에 대한 경고를 설정하는 것도 유용합니다.

  1. 모니터링에서 경고를 선택한 다음 경고 규칙 만들기를 선택합니다.

  2. 조건에서 추가를 선택합니다.

  3. 신호 논리 구성 신호 형식에서 메트릭을 선택하고 신호를 선택합니다.

  4. 신호를 선택한 후에는 조건 설정을 진행하는 방법에 대한 의사 결정을 위해 차트를 사용하여 기록 데이터를 시각화할 수 있습니다.

  5. 다음으로, 아래로 스크롤하여 경고 논리로 이동합니다. 개념 증명의 경우 테스트 목적으로 인위적으로 낮은 값을 지정할 수 있습니다.

  6. 다음으로 작업 그룹을 지정하거나 만듭니다. 임계값이 충족될 때 호출할 응답입니다. 푸시 알림 또는 자동화된 응답이 될 수 있습니다.

  7. 마지막으로, 경고 세부 정보를 지정합니다. 경고를 명명 및 설명하고 심각도 값을 할당한 뒤, 규칙을 사용 상태로 할지 또는 사용 안 함 상태로 할지 여부를 지정합니다.

메일 알림을 지정한 경우 제목 줄이“Microsoft Azure”에서 "Azure: 활성화된 심각도: 3 <your rule name>"인 메일을 받게 됩니다.

다음 단계

검색 서비스 모니터링의 기본 사항을 아직 검토하지 않았다면 관련 내용을 검토하여 모든 감독 기능에 대해 자세히 알아보세요.