Monitorar solicitações de consulta no Azure AI Search

Este artigo explica como medir o desempenho e o volume da consulta usando métricas e 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, QPS (carga de consulta) e limitação. Dados históricos que alimentam essas métricas podem ser acessados no portal por 30 dias. Para uma retenção mais longa ou para gerar relatórios sobre dados operacionais e cadeias de consulta, você deve adicionar uma configuração de diagnóstico que especifique uma opção de armazenamento para persistir as operações e as métricas registradas. Recomendamos o workspace do Log Analytics como destino para as operações registradas. As consultas e a exploração de dados do Kusto têm como destino um workspace 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 standard). O serviço gratuito é compartilhado por vários assinantes, o que introduz certa volatilidade com o deslocamento de cargas.

  • Use uma única réplica e partição, se possível, para criar um ambiente independente 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 reduzir 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 podem 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 oferecem um ambiente mais estável para testes.

Dica

Com o código adicional do lado do cliente e o Application Insights, você também pode capturar dados de clickthrough para obter informações mais aprofundadas sobre o que atrai o interesse dos usuários do seu aplicativo. Para saber mais, confira 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 um valor médio, de contagem, mínimo ou máximo de consultas executadas em uma janela de um minuto. Os intervalos de um minuto (TimeGrain = "PT1M") para métricas são fixos no sistema.

É comum que as consultas sejam executadas em milissegundos, portanto, somente as consultas que são medidas em segundos aparecem nas métricas.

Tipo de agregação Descrição
Média O número médio de segundos em um minuto durante o qual a execução da consulta ocorreu.
Contagem O número de métricas emitidas para o log dentro do intervalo de um minuto.
Máximo O número mais alto de consultas de pesquisa por segundo registradas durante um minuto.
Mínimo O número mais baixo de consultas de pesquisa por segundo registradas durante um minuto.
Somar A soma de todas as consultas executadas dentro do minuto.

Por exemplo, dentro de um minuto, é possível ver um padrão como este: um segundo com uma carga muito alta, que é o valor máximo para SearchQueriesPerSecond, seguido de 58 segundos de carga mediana, e, por fim, um segundo com apenas uma consulta, que será o valor mínimo.

Outro exemplo: se um nó emite 100 métricas, em que o valor de cada métrica é 40, "Count" é 100, "Sum" é 4000, "Average" é 40 e "Max" é 40.

Desempenho de consulta

O desempenho de consulta em todo o serviço é medido como a 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.
Contagem 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 no exemplo, executando 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 de execução total foi de 2 segundos.

Latency aggregations

Consultas limitadas

As consultas limitadas referem-se a consultas descartadas em vez de processadas. Na maioria dos casos, a limitação é uma parte normal da execução do serviço. Isso 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 em memória, CPU e E/S de disco são calculadas por meio de um período de tempo. Se essa porcentagem exceder um limite, todas as solicitações para o í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, o Gerenciador de Pesquisas), a consulta será descartada silenciosamente e você precisará selecionar Pesquisar novamente.

Para confirmar as consultas limitadas, use a métrica de Consultas de pesquisa limitada. Você pode explorar as métricas no portal ou criar uma métrica de alerta, conforme descrito neste artigo. Para as 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 descartadas dentro do intervalo.
Contagem O número de métricas emitidas para o log dentro do intervalo de um minuto.
Máximo Porcentagem de consultas descartadas dentro do intervalo.
Mínimo Porcentagem de consultas descartadas dentro do intervalo.
Total Porcentagem de consultas descartadas dentro do intervalo.

Para Porcentagem de consultas de pesquisa limitadas, os valores mínimo, máximo, médio e total são o mesmo: a porcentagem de consultas de pesquisa que foram limitadas, a partir do no 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 ao log). Outras agregações, que aparecem na parte superior ou ao passar o mouse sobre a métrica, incluem o média, o máximo e o total. Neste exemplo, nenhuma solicitação foi descartada.

Throttled aggregations

Explorar as 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), Percentual de consultas de pesquisa limitadas) sobre os 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 Metrics Explorer no menu Monitoramento para que você possa aplicar camadas, ampliar e visualizar dados para explorar tendências ou anomalias. Saiba mais sobre o Metrics Explorer concluindo este Tutorial sobre como criar um gráfico de métricas.

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

  2. Em Métrica, escolha uma na lista suspensa e examine a lista de agregações disponíveis para um tipo preferencial. 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 diferentes agregações.

  6. Amplie uma área de interesse no gráfico de linhas. Coloque o ponteiro do mouse no início da área, selecione e mantenha pressionado 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 consulta inseridas por usuários

Quando você habilita o registro log de recursos, o sistema captura solicitações de consulta na tabela AzureDiagnostics. Como pré-requisito, você já deve ter especificado um destino para as operações registradas, seja um workspace do Log Analytics 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 seguinte expressão para pesquisar Query.Search operações, retornando um conjunto de resultados tabulares que consiste no nome da operação, na cadeia 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, 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 de colunas em Query_s para pesquisar por uma sintaxe ou cadeia de caracteres específica. Por exemplo, você poderia filtrar é igual a?api-version=2023-11-01&search=*&%24filter=HotelName.

    Logged query strings

Embora essa técnica funcione para a investigação ad hoc, a criação de um relatório permite que você consolide e apresente as cadeias de caracteres de consulta em um layout mais adequado à análise.

Identificar consultas de execução longa

Adicione a coluna de duração para obter os números de todas as consultas, não apenas aquelas que são selecionadas 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 consulta básica a seguir para retornar consultas, classificadas por duração em milissegundos. As consultas de execução mais longa estão na parte superior.

    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 disparar uma ação corretiva definida com antecedência. Você pode criar alertas relacionados à execução de consultas, mas também pode criá-los para a integridade dos recursos, alterações na 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ê poderá procurar soluções que reduzam a carga ou aumentem a capacidade. Por exemplo, se as consultas limitadas aumentarem durante a indexação, você poderá adiar isso até a atividade de consulta diminua.

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

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

  2. Em Condição, selecione Adicionar.

  3. Configure sinal lógico. Para tipo de sinal, escolha Métricas e, em seguida, selecione o sinal.

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

  5. Em seguida, role para baixo até a 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. Essa é a resposta a ser invocada quando o limite é atingido. Pode ser uma notificação por push ou uma resposta automatizada.

  7. Por fim, especifique os detalhes do alerta. Nomeie e descreva o alerta, atribua um valor de severidade e especifique se deseja criar a regra em um estado habilitado ou desabilitado.

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

Próximas etapas

Se você ainda não tiver feito isso, examine os conceitos básicos do monitoramento do serviço de pesquisa para saber mais sobre a gama completa de recursos de supervisão.