• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Criar um problema

Controle seus dados com NRQL

No primeiro tutorial NRQL, exploramos os fundamentos da construção de consulta. Abordamos a estrutura básica da consulta, definindo janelas de tempo e como selecionar um atributo específico a ser observado. Também aprendemos como começar a agregar e exibir dados usando gráficos e outras visualizações.

Neste tutorial, iremos um pouco mais fundo e exploraremos mais funções para criar agregações úteis. Aqui, você aprenderá como comparar os dados retornados com períodos anteriores e agrupar dados em janelas de tempo específicas. Você também encontrará ainda mais coisas para fazer com as funcionalidades SINCE e UNTIL e explorará o uso de curingas em filtros. Especificamente, você aprenderá como:

  • consulta de valor exclusivo usando uniques(attributeName)
  • Determine quantos valores exclusivos existem em um atributo usando uniqueCount(attributeName)
  • Recuperar earliest(attributeName) e latest(attributeName) dentro de um intervalo de tempo específico
  • Calcule porcentagens com base em um qualificador ou outro ponto de dados com percentile()
  • Execute matemática básica usando funções de atributo e agregação, ou uma combinação de ambas
  • Transforme nomes de atributos em algo personalizado e mais legível
  • Pesquise para incluir/excluir usando curingas com LIKE/NOT LIKE ou limite os resultados a IN uma lista ou NOT IN aquela lista
  • consulta em janelas de tempo mais avançadas usando datas, época e WITH TIMEZONE
  • Agrupe dados em janelas de tempo interessantes usando coorte baseada em tempo

Vamos começar!

Funções agregadas

Depois de concluir o primeiro tutorial de NRQL, você usou count(), average(), sum(), max() e min() para transformar seus dados de maneiras significativas. Mas e se você quiser encontrar e contabilizar valor exclusivo? Para encontrar o número de valor exclusivo registrado para um atributo em um intervalo de tempo especificado, você pode usar o uniqueCount() function. Você só precisa fornecer o atributo que queremos inspecionar como argumento. Por exemplo, aqui está uma consulta para exibir todas as chamadas públicas exclusivas da API:

SELECT uniqueCount(http.url)
FROM Public_APICall
SINCE 1 day ago

Para otimizar o desempenho da consulta, a função acima retorna resultados aproximados para consultas que fiscalizam mais de 256 valores exclusivos. Para retornar a lista real de valores exclusivos de um atributo em um intervalo de tempo especificado, podemos usar a função uniques() .

SELECT uniques(http.url)
FROM Public_APICall
SINCE 1 day ago

Se desejar fornecer um segundo parâmetro de limite para especificar um valor de limite diferente do padrão de 1.000. Você pode fazer isso usando uniques(attribute[,limit]), que modificará o limite para o que você quiser, até um máximo de 10.000.

Para recuperar o valor mais recente de um atributo em um intervalo de tempo especificado, use a função latest() . Neste exemplo de consulta, você pode localizar o tempo de resposta mais recente para uma chamada de API no último dia. Isso pode ajudá-lo a localizar o valor mais recente para uma transação ou serviço de relatório intermitente.

SELECT latest(duration)
FROM Public_APICall
WHERE awsAPI = 'sqs'
SINCE 1 day ago

Do outro lado do espectro, você poderia usar a função earliest() para conseguir o oposto. Ele retornará o valor mais antigo de um atributo registrado no intervalo de tempo especificado. Neste exemplo de consulta, você pode recuperar o primeiro tempo de resposta para uma chamada de API no último dia. Se os dados forem relatados de forma consistente, isso reportará o ponto de dados do primeiro evento nas últimas 24 horas.

SELECT earliest(duration)
FROM Public_APICall
WHERE awsAPI = 'sqs'
SINCE 1 day ago

Você pode descobrir que precisa de porcentagens em vez de contagens, somas ou médias. O uso da função percentage() permite calcular a porcentagem de um valor no conjunto de dados que corresponde a uma condição especificada. Esta função leva dois argumentos: o primeiro é uma função agregadora para o atributo desejado, como count(). A segunda é uma condição WHERE para especificar o subconjunto de dados que você gostaria de consultar.

Neste exemplo de consulta, você pode encontrar a porcentagem de chamadas de API no último dia que tiveram uma duração (ou tempo de resposta) superior a 100 milissegundos.

SELECT percentage(count(*), WHERE duration > 0.1)
FROM Public_APICall
SINCE 1 day ago

É muito comum visualizar dados de desempenho do aplicativo ou de experiência dos clientes usando percentis em vez de médias. Você pode usar a função percentile() para entender a experiência do enésimo percentil.

Por exemplo, digamos que você queira saber qual foi a pior experiência (maior duração) de 98% dos seus clientes no último dia. Você pode solicitar ao NRDB percentile(duration, 98) das últimas 24 horas.

SELECT percentile(duration,98)
FROM Public_APICall
SINCE 1 day ago

Como você pode ver, a agregação pode manipular dados de maneiras poderosas. Você pode usar uniqueCount() para contar as entradas exclusivas de um atributo específico. Mas você também pode usar isso para identificar uma contagem de máquinas exclusivas, reportar contêineres ou até mesmo quantos pontos de dados personalizados são enviados para o New Relic. E, se quiser saber quais os valores exclusivos disponíveis para consulta, pode sempre pedir uma lista através de uniques().

As funções latest()/earliest() têm valor especial ao lidar com dados esparsos ou ao investigar quando algo começou ou parou de ser relatado (supondo que a New Relic ainda armazene os dados). A função percentage() pode mostrar qual porcentagem de eventos correspondeu a um qualificador em comparação com o conjunto de resultados geral. Por último, você pode usar percentile() como um indicador-chave de desempenho, definindo uma meta para garantir que 90% de todas as transações do usuário final excedam a duração fornecida.

Na próxima etapa, você aprenderá como fazer matemática básica com NRQL.

Use operadores matemáticos

NRQL oferece suporte a operadores matemáticos básicos. Você pode realizar adição (+), subtração (-), multiplicação (*) e divisão (/) em valores numéricos de atributo e resultados de funções agregadoras.

Por exemplo, capturamos o tempo de resposta total (como duration) e o tempo de resposta do banco de dados (como databaseDuration) quando registramos um evento de transação. Mas e se você quiser descobrir o tempo médio gasto fora do processamento do banco de dados? Você poderia começar calculando esse valor para cada evento em seu conjunto de dados usando uma consulta como esta.

SELECT GigabytesIngestedBillable - GigabytesIngestedFree, metric
FROM NrMTDConsumption
WHERE productLine IS NOT NULL

Ótimo! Você acabou de fazer algumas contas básicas. Isso é útil para ajudá-lo a listar eventos individuais. Mas e se você quiser saber a duração média da transação sem o tempo do banco de dados? Convenientemente, você pode fazer a aritmética dentro da função:

SELECT average(GigabytesIngestedBillable - GigabytesIngestedFree)
FROM NrMTDConsumption
WHERE GigabytesIngestedBillable IS NOT NULL

Agora, e se você quisesse complicar ainda mais subtraindo, dividindo e multiplicando na mesma consulta para descobrir a duração sem o tempo do banco de dados, como uma porcentagem do tempo total? Bem, você pode adicionar a matemática:

SELECT average(GigabytesIngestedBillable - GigabytesIngestedFree) / unitPrice * 100
FROM NrMTDConsumption
WHERE GigabytesIngestedBillable IS NOT NULL

O New Relic relata os horários como parte do seu evento, para que você possa usá-los para calcular pontos de dados significativos ou até mesmo gerar resultados percentuais. Você pode maximizar ainda mais o poder da matemática básica fazendo coisas como cronometrar ações ou eventos personalizados ou enviar dados personalizados. Por exemplo, uma plataforma de comércio eletrônico que relata dados sobre tamanhos de pedidos e métodos de pagamento poderia usar matemática para calcular coisas como a taxa de conversão de pedidos versus visitas únicas de clientes.

Na próxima etapa, você aprenderá como usar o NRQL para rotular seu atributo.

Atributo da etiqueta

À medida que você começa a executar funções NRQL mais complexas, você pode se perguntar se pode tornar os nomes exibidos para consulta atributo mais úteis, especialmente para outras pessoas que não conhecem NRQL! Vamos considerar um exemplo usando o que você aprendeu no tutorial anterior.

SELECT average(duration-externalDuration)
FROM Transaction

Você pode usar a cláusula AS após uma função ou atributo para dar ao resultado um nome mais legível e significativo. Isso torna mais fácil para você e sua equipe entender exatamente o que um gráfico representa.

SELECT average(duration-externalDuration)
AS 'Non-External Response Time'
FROM Transaction

Isso pode parecer meramente estético, mas ao criar um painel detalhado, é importante rotular claramente seus dados. Isso garante zero ambigüidade para qualquer pessoa que visualize seu widget, outdoors, gráficos de linhas ou tabelas.

Voltaremos a isso em uma próxima lição sobre agrupamento, para explorar como AS também pode criar conjuntos de resultados limpos em cenários mais avançados. A seguir, você aprenderá como comparar dados em diferentes janelas de tempo.

Comparar janelas de tempo

Agora você já pratica o uso de intervalos de tempo com cláusulas SINCE e UNTIL . Mas e se você quiser comparar valores de diferentes intervalos de tempo? Você pode conseguir isso com a cláusula COMPARE WITH .

NRQL usa SINCE e UNTIL para definir um período de interesse. Em seguida, você pode indicar o período de tempo com o qual deseja comparar usando uma cláusula COMPARE WITH [time period] AGO contendo um valor de deslocamento relativo.

Por exemplo, no exemplo de consulta abaixo, você pode comparar os dados do último dia com os dados da semana anterior usando um deslocamento relativo de 1 semana atrás.

SELECT average(duration)
FROM Public_APICall
SINCE 1 day ago
COMPARE WITH 1 week ago

Para mapear a comparação de valores ao longo do tempo, adicione TIMESERIES. Isso cria um gráfico de linhas de comparação, permitindo visualizar como esse período se compara aos dados recentes e acompanhá-lo ao longo do tempo.

SELECT average(duration)
FROM Public_APICall
SINCE 1 day ago
COMPARE WITH 1 week ago
TIMESERIES

Você também pode especificar vários períodos de tempo relativos diferentes no mesmo formato, semelhante a UNTIL. Para instância, você pode especificar 4 WEEKS AGO ou 6 HOURS AGO.

SELECT average(duration)
FROM Public_APICall
SINCE 1 hour ago
COMPARE WITH 6 hours ago
TIMESERIES

As comparações podem responder rapidamente a perguntas sobre o que está acontecendo no seu aplicativo. Os diferentes valores de vendas, desempenho, MTTR ou erro aumentaram ou diminuíram em comparação com a semana passada? E, se estiver investigando um problema, será útil comparar um período de desempenho problemático com um período de desempenho normal.

Use filtros curinga

Agora você sabe usar uma cláusula WHERE para filtrar os resultados em nossa consulta. Além de usar operadores de comparação padrão, você também pode usar LIKE e NOT LIKE se quiser descobrir se um atributo contém ou não uma substring especificada. Para conseguir isso, você pode usar o símbolo de porcentagem (%) como curinga em qualquer lugar da string.

Em nosso exemplo de consulta, você pode obter o número da transação com o termo “amazonaws” em qualquer lugar (início, meio ou fim) do nome.

SELECT count(*)
FROM Public_APICall
WHERE http.url
LIKE '%amazonaws%'
FACET http.url
SINCE 1 day ago

Se você alterar sua consulta para usar NOT LIKE , obterá o número de transações que não contêm a palavra escolhida (como "google", conforme abaixo) em seu nome.

SELECT count(*)
FROM Public_APICall
WHERE http.url NOT
LIKE '%google%'
FACET http.url
SINCE 1 day ago

Você pode usar % como curinga no início e no final, o que significa que o New Relic verifica o valor do atributo escolhido se ele contém o termo, como "Web" em qualquer lugar do texto. Da mesma forma, você poderia usar %Web OR Web% para corresponder a algo que termina em "Web" ou começa com "Web", respectivamente.

Você também pode adicionar o curinga entre as strings para uma pesquisa mais refinada. Esta consulta verifica um nome de transação que contém a palavra "amazon" seguida de qualquer texto, mas também contém o termo ".com" seguido por qualquer número de caracteres. Assim, os resultados só serão negociados com “amazon” e “.com” no nome.

SELECT count(*)
FROM Public_APICall
WHERE http.url NOT
LIKE '%amazon%.com'
FACET http.url
SINCE 1 day ago

E se você precisar de extrema especificidade e os nomes não tiverem uma string comum que possa corresponder usando curingas? Os operadores IN e NOT IN permitem especificar um conjunto de valores que você gostaria de verificar em um atributo. Em vez de especificar diversas cláusulas WHERE com operadores AND ou OR , você pode simplificar uma condição listando os valores entre parênteses separados por vírgulas.

Neste exemplo de consulta, você pode contar o número de transações cujo subtipo é "graph.microsoft.com" ou "s3.amazonaws.com". Se você alterar a consulta para usar NOT IN , obterá o número de transações cujo subtipo não é "graph.microsoft.com" nem "s3.amazonaws.com".

SELECT count(*)
FROM Public_APICall
WHERE http.url IN ('graph.microsoft.com', 's3.amazonaws.com')
SINCE 1 day ago

Agora você pode controlar seus dados e manipulá-los para fazer o que precisa, permitindo construir painéis e alertas poderosos e significativos. A seguir, você aprenderá como definir intervalos de tempo específicos usando NRQL.

Especifique intervalos de tempo

As cláusulas SINCE e UNTIL fazem mais do que fornecer informações sobre intervalos de tempo relativos: você também pode fornecer uma data ou hora específica. No exemplo de consulta a seguir, você pode usar uma data SINCE no formato YYYY-MM-DD .

SELECT average(duration)
FROM Public_APICall SINCE '2023-10-28'
TIMESERIES MAX

Você pode usar isso para criar relatórios de SLA para um período de tempo especificado. Você pode até incluir um horário específico com o formato YYYY-MM-DD HH:MM. Nesta consulta, você pode ver que os dados estão definidos para 18h.

SELECT average(duration)
FROM Public_APICall SINCE '2023-10-28 18:00'
TIMESERIES MAX

Às vezes, você pode receber um horário de evento em horário de época (unix). Convenientemente, você pode usar carimbo de data/hora de época com cláusulasSINCE e UNTIL para não precisar traduzir manualmente esses valores para outro formato de data.

SELECT average(duration)
FROM Public_APICall SINCE 1698525489519 UNTIL 1698698289519
TIMESERIES MAX

Quando o NRDB mostra dados durante um período de tempo, ele pressupõe que você deseja ver os dados da perspectiva do seu fuso horário. Mas com equipes internacionais dispersas, o seu hoje pode ser o de um companheiro de equipe amanhã ou ontem, dependendo da localização. Você pode usar a cláusula WITH TIMEZONE para definir um fuso horário do qual exibir dados. Isso afeta a interpretação dos valores nas cláusulas SINCE e UNTIL .

Considere os dois gráficos de exemplo abaixo. Cada consulta tem um fuso horário especificado usando WITH TIMEZONE. Os dois estão separados por 8 horas. Observe que o padrão de dados é o mesmo, mas com deslocamento de 8 horas para alinhar com cada fuso horário respectivo:

SELECT count(*)
FROM Public_APICall
SINCE yesterday
UNTIL today WITH TIMEZONE 'America/Los_Angeles'
TIMESERIES
SELECT count(*)
FROM Public_APICall
SINCE yesterday
UNTIL today WITH TIMEZONE 'Europe/London'
TIMESERIES

Antes desta lição, todos os seus mecanismos de controle de tempo dependiam de tempos relativos a partir de agora. Agora você pode ajustar a visualização dependendo da localização de alguém no mundo. Talvez um cliente na costa leste da América relate um problema à sua equipe de engenharia localizada na costa oeste. Sua equipe pode construir um dashboard e traduzir a visualização para mapear o fuso horário, conforme citaria um cliente. Portanto, se um cliente avisar um problema às 9h na costa leste, você pode garantir, ao olhar para as 9h, que não precisará traduzir mentalmente a diferença.

Quando você precisar concentrar seus dados em datas específicas de um incidente e quiser investigar os dados sem uma janela de tempo móvel em relação à hora atual, isso o ajudará a obter dados em uma janela de tempo estática. Na próxima e última lição, você continuará aprendendo como usar o tempo em seus relatórios com coorte baseada em tempo.

Usando coorte baseada em tempo

Embora possa parecer complexo, a coorte baseada no tempo significa apenas uma maneira de organizar os dados em grupos baseados no tempo, como minuteOf, hourOf, weekOf e muito mais.

Ao usar a cláusula SINCE para durações, você recupera todo o período de consulta. Mas esses dados nem sempre contam toda a história! E se você precisar analisar mais de perto o desempenho dentro de um período de tempo? Com a coorte baseada em tempo, você pode classificar ainda mais os dados em agrupamentos lógicos baseados em tempo.

Usando uma combinação de FACET e uma das muitas funções baseadas em tempo (como hourOf(timestamp)), você pode obter dados de uma semana e entender o desempenho com base na hora específica em que ocorreu. Isso revela tendências e identifica os momentos mais críticos para o seu aplicativo:

SELECT average(duration)
FROM Public_APICall
FACET hourOf(timestamp)
SINCE 1 week ago

Depois de executar a consulta acima, você poderá ver o tempo de resposta mais lento com base na hora do dia. A New Relic oferece muitas opções diferentes para facetar com base no tempo. O exemplo anterior agrupa por hora, mas você também pode agrupar por dia da semana para determinar quais dias têm o melhor e o pior ritmo de resposta.

SELECT average(duration)
FROM Public_APICall
FACET weekdayOf(timestamp)
SINCE 1 week ago

Agora você pode ver os períodos mais lentos do seu aplicativo em qualquer dia específico. Você pode usar isso para responder a perguntas críticas de negócios, como "Quando vendemos mais produtos?", ou "Quando temos mais inscrições ou logins?".

Você também pode agrupar os resultados por uma data específica. Isso ajuda ao considerar relatórios de SLA ou analisar mudanças de desempenho durante um determinado período.

SELECT average(duration)
FROM Public_APICall
FACET dateOf(timestamp)
SINCE 1 week ago

A coorte baseada em tempo expõe problemas que ocorrem em minutos, horas, dias ou semanas específicos. Não importa quais dados você envie para o New Relic, o NRQL permite que você os divida, organize e visualize da maneira que desejar.

Existem também muitas outras opções disponíveis para agrupamento, incluindo semana, mês e ano, dependendo da retenção de dados. Para ver a lista completa, acesse nossa página de documentação Resultados do grupo ao longo do tempo.

Qual é o próximo?

Com o conhecimento que você adquiriu aqui, você pode criar visualizações dashboard e controlar os aspectos dos seus dados que mais lhe interessam. Você pode usar essas técnicas poderosas para restringir o foco, obter alertas mais granulares e específicos e produzir visualizações muito mais interessantes. Quando estiver pronto, você pode avançar para nosso terceiro tutorial, onde aprenderá habilidades NRQL mais interessantes, incluindo filtros, casos de facetas, histograma, apdex, filtragem para eventTypes, substituição de valores e extrapolação.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.