Monitorar solicitações de consulta no Azure AI Search

Este artigo explica como medir o desempenho e o volume da consulta usando métricas internas e registro em log de recursos. Ele também explica como obter as cadeias de caracteres de consulta inseridas pelos usuários do aplicativo.

O portal do Azure mostra métricas básicas sobre latência de consulta, carga de consulta (QPS) e limitação. Os dados históricos que alimentam essas métricas podem ser acessados no portal por 30 dias. Para retenção mais longa ou para relatar dados operacionais e cadeias de caracteres de consulta, você deve adicionar uma configuração de diagnóstico que especifique uma opção de armazenamento para operações e métricas registradas persistentes. Recomendamos o espaço de trabalho do Log Analytics como destino para operações registradas. As consultas Kusto e a exploração de dados destinam-se a um espaço de trabalho do Log Analytics.

As condições que maximizam a integridade da medição de dados incluem:

  • Use um serviço faturável (um serviço criado na camada Básica ou Padrão). O serviço gratuito é compartilhado por vários assinantes, o que introduz uma certa volatilidade à medida que as cargas mudam.

  • Use uma única réplica e partição, se possível, para criar um ambiente contido e isolado. Se você usar várias réplicas, as métricas de consulta serão calculadas em média em vários nós, o que pode diminuir a precisão dos resultados. Da mesma forma, várias partições significam que os dados são divididos, com o potencial de que algumas partições possam ter dados diferentes se a indexação também estiver em andamento. Quando você ajusta o desempenho da consulta, um único nó e partição oferece um ambiente mais estável para testes.

Gorjeta

Com código adicional do lado do cliente e Application Insights, você também pode capturar dados de clickthrough para obter uma visão mais profunda do que atrai o interesse dos usuários do seu aplicativo. Para obter mais informações, consulte Análise de tráfego de pesquisa.

Volume de consulta (QPS)

O volume é medido como Consultas de Pesquisa por Segundo (QPS), uma métrica interna que pode ser relatada como valores médios, de contagem, mínimos ou máximos de consultas executadas em uma janela de um minuto. Intervalos de um minuto (TimeGrain = "PT1M") para métricas são fixados dentro do sistema.

É comum que as consultas sejam executadas em milissegundos, portanto, apenas as consultas que medem como segundos aparecem nas métricas.

Tipo de agregação Description
Média O número médio de segundos dentro de um minuto durante o qual ocorreu a execução da consulta.
Count O número de métricas emitidas para o log dentro do intervalo de um minuto.
Máximo O maior número de consultas de pesquisa por segundo registado durante um minuto.
Mínimo O menor número de consultas de pesquisa por segundo registado durante um minuto.
Soma A soma de todas as consultas executadas dentro do minuto.

Por exemplo, dentro de um minuto, você pode ter um padrão como este: um segundo de carga alta que é o máximo para SearchQueriesPerSecond, seguido por 58 segundos de carga média e, finalmente, um segundo com apenas uma consulta, que é o mínimo.

Outro exemplo: se um nó emite 100 métricas, onde o valor de cada métrica é 40, então "Contagem" é 100, "Soma" é 4000, "Média" é 40 e "Max" é 40.

Desempenho de consultas

Em todo o serviço, o desempenho da consulta é medido como latência de pesquisa (quanto tempo uma consulta leva para ser concluída) e consultas limitadas que foram descartadas como resultado da contenção de recursos.

Latência de pesquisa

Tipo de agregação Latência
Média Duração média da consulta em milissegundos.
Count O número de métricas emitidas para o log dentro do intervalo de um minuto.
Máximo Consulta de execução mais longa no exemplo.
Mínimo Consulta de execução mais curta no exemplo.
Total Tempo total de execução de todas as consultas na amostra, executadas dentro do intervalo (um minuto).

Considere o seguinte exemplo de métricas de latência de pesquisa: 86 consultas foram amostradas, com uma duração média de 23,26 milissegundos. Um mínimo de 0 indica que algumas consultas foram descartadas. A consulta de execução mais longa levou 1000 milissegundos para ser concluída. O tempo total de execução foi de 2 segundos.

Latency aggregations

Consultas limitadas

Consultas limitadas referem-se a consultas que são descartadas em vez de processadas. Na maioria dos casos, a limitação é uma parte normal da execução do serviço. Não é necessariamente uma indicação de que há algo errado.

A limitação ocorre quando o número de solicitações em execução excede a capacidade. Você pode ver um aumento nas solicitações limitadas quando uma réplica é retirada da rotação ou durante a indexação. As solicitações de consulta e indexação são tratadas pelo mesmo conjunto de recursos.

O serviço determina se as solicitações devem ser descartadas com base no consumo de recursos. A porcentagem de recursos consumidos na memória, CPU e E/S do disco é calculada em média ao longo de um período de tempo. Se essa porcentagem exceder um limite, todas as solicitações ao índice serão limitadas até que o volume de solicitações seja reduzido.

Dependendo do seu cliente, uma solicitação limitada é indicada das seguintes maneiras:

  • Um serviço retorna um erro "You are sending too many requests. Please try again later."
  • Um serviço retorna um código de erro 503 indicando que o serviço está indisponível no momento.
  • Se você estiver usando o portal (por exemplo, Search Explorer), a consulta será descartada silenciosamente e você precisará selecionar Pesquisar novamente.

Para confirmar consultas limitadas, use a métrica Consultas de pesquisa limitadas. Você pode explorar métricas no portal ou criar uma métrica de alerta, conforme descrito neste artigo. Para consultas que foram descartadas dentro do intervalo de amostragem, use Total para obter a porcentagem de consultas que não foram executadas.

Tipo de agregação Limitação
Média Porcentagem de consultas caídas dentro do intervalo.
Count O número de métricas emitidas para o log dentro do intervalo de um minuto.
Máximo Porcentagem de consultas caídas dentro do intervalo.
Mínimo Porcentagem de consultas caídas dentro do intervalo.
Total Porcentagem de consultas caídas dentro do intervalo.

Para Porcentagem de Consultas de Pesquisa Limitada, mínimo, máximo, média e total, todos têm o mesmo valor: a porcentagem de consultas de pesquisa que foram limitadas, a partir do número total de consultas de pesquisa durante um minuto.

Na captura de tela a seguir, o primeiro número é a contagem (ou o número de métricas enviadas para o log). Outras agregações, que aparecem na parte superior ou ao passar o mouse sobre a métrica, incluem média, máxima e total. Nesta amostra, nenhuma solicitação foi descartada.

Throttled aggregations

Explore métricas no portal

Para uma visão rápida dos números atuais, a guia Monitoramento na página Visão geral do serviço mostra três métricas (latência de pesquisa, Consultas de pesquisa por segundo (por unidade de pesquisa), Porcentagem de consultas de pesquisa limitada) em intervalos fixos medidos em horas, dias e semanas, com a opção de alterar o tipo de agregação.

Para uma exploração mais profunda, abra o explorador de métricas no menu Monitoramento para que você possa colocar em camadas, ampliar e visualizar dados para explorar tendências ou anomalias. Saiba mais sobre o explorador de métricas concluindo este tutorial sobre como criar um gráfico de métricas.

  1. Na seção Monitoramento, selecione Métricas para abrir o explorador de métricas com o escopo definido para seu serviço de pesquisa.

  2. Em Métrica, escolha uma na lista suspensa e revise a lista de agregações disponíveis para um tipo preferido. A agregação define como os valores coletados são amostrados em cada intervalo de tempo.

    Metrics explorer for QPS metric

  3. No canto superior direito, defina o intervalo de tempo.

  4. Escolha uma visualização. O padrão é um gráfico de linhas.

  5. Coloque mais agregações em camadas escolhendo Adicionar métrica e selecionando agregações diferentes.

  6. Aumente o zoom em uma área de interesse no gráfico de linhas. Coloque o ponteiro do mouse no início da área, selecione e segure o botão esquerdo do mouse, arraste para o outro lado da área e solte o botão. O gráfico amplia esse intervalo de tempo.

Retornar cadeias de caracteres de consulta inseridas pelos usuários

Quando você habilita o log de recursos, o sistema captura solicitações de consulta na tabela AzureDiagnostics. Como pré-requisito, você já deve ter especificado um destino para operações registradas, um espaço de trabalho de análise de log ou outra opção de armazenamento.

  1. Na seção Monitoramento, selecione Logs para abrir uma janela de consulta vazia no Log Analytics.

  2. Execute a expressão a seguir para operações de pesquisa Query.Search , retornando um conjunto de resultados tabulares que consiste no nome da operação, na cadeia de caracteres de consulta, no índice consultado e no número de documentos encontrados. As duas últimas instruções excluem cadeias de caracteres de consulta que consistem em uma pesquisa vazia ou não especificada, em um índice de exemplo, o que reduz o ruído nos resultados.

       AzureDiagnostics
    | project OperationName, Query_s, IndexName_s, Documents_d
    | where OperationName == "Query.Search"
    | where Query_s != "?api-version=2023-07-01-preview&search=*"
    | where IndexName_s != "realestate-us-sample-index"
    
  3. Opcionalmente, defina um filtro Coluna em Query_s para pesquisar sobre uma sintaxe ou cadeia de caracteres específica. Por exemplo, você pode filtrar é igual a?api-version=2023-11-01&search=*&%24filter=HotelName.

    Logged query strings

Embora essa técnica funcione para investigação ad hoc, a criação de um relatório permite consolidar e apresentar as cadeias de caracteres de consulta em um layout mais propício à análise.

Identificar consultas de longa duração

Adicione a coluna de duração para obter os números de todas as consultas, não apenas daquelas que são escolhidas como uma métrica. A classificação desses dados mostra quais consultas levam mais tempo para serem concluídas.

  1. Na seção Monitoramento, selecione Logs para consultar informações de log.

  2. Execute a seguinte consulta básica para retornar consultas, ordenadas por duração em milissegundos. As consultas de execução mais longa estão no topo.

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

    Sort queries by duration

Criar um alerta de métrica

Um alerta de métrica estabelece um limite para enviar uma notificação ou acionar uma ação corretiva definida com antecedência. Você pode criar alertas relacionados à execução de consultas, mas também pode criá-los para integridade de recursos, alterações de configuração do serviço de pesquisa, execução de habilidades e processamento de documentos (indexação).

Todos os limites são definidos pelo usuário, portanto, você deve ter uma ideia de qual nível de atividade deve disparar o alerta.

Para o monitoramento de consultas, é comum criar um alerta de métrica para latência de pesquisa e consultas limitadas. Se você souber quando as consultas são descartadas, você pode procurar soluções que reduzam a carga ou aumentem a capacidade. Por exemplo, se as consultas limitadas aumentarem durante a indexação, você poderá adiá-las até que a atividade de consulta diminua.

Se você estiver ultrapassando os limites de uma configuração específica de partição de réplica, a configuração de alertas para limites de volume de consulta (QPS) também é útil.

  1. Em Monitoramento, selecione Alertas e, em seguida, selecione Criar regra de alerta.

  2. Em Condição, selecione Adicionar.

  3. Configure a lógica do sinal. Para o tipo de sinal, escolha métricas e, em seguida, selecione o sinal.

  4. Depois de selecionar o sinal, você pode usar um gráfico para visualizar dados históricos para uma decisão informada sobre como proceder com a configuração das condições.

  5. Em seguida, role para baixo até Lógica de alerta. Para prova de conceito, você pode especificar um valor artificialmente baixo para fins de teste.

  6. Em seguida, especifique ou crie um Grupo de Ações. Esta é a resposta a ser invocada quando o limite é atingido. Pode ser uma notificação por push ou uma resposta automatizada.

  7. Por último, especifique Detalhes do alerta. Nomeie e descreva o alerta, atribua um valor de gravidade e especifique se a regra deve ser criada em um estado habilitado ou desabilitado.

Se você especificou uma notificação por email, receberá um email de "Microsoft Azure" com uma linha de assunto de "Azure: Activated Severity: 3 <your rule name>".

Próximos passos

Se ainda não o fez, reveja os fundamentos da monitorização de serviços de pesquisa para saber mais sobre toda a gama de capacidades de supervisão.