Depois de aprender os fundamentos do NRQL em nossos outros tópicos, como o que é NRQL, como funciona o NRQL e como o NRQL se relaciona com gráficos e dashboards, você está pronto para experimentar os exemplos deste tutorial! O tutorial cobre alguns conceitos básicos da linguagem para ajudá-lo a criar algumas consultas básicas de NRQL usando seus dados, incluindo como:
- Use
SELECT
eFROM
- Usar
LIMIT
- Especifique o atributo
- Agregar usando
average()
,max()
,min()
,sum()
ecount()
- Use
SINCE
eUNTIL
- Trace gráficos de linha com
TIMESERIES
- Filtrar usando
WHERE
- Atributo de grupo usando
FACET
Pré-requisitos
Você só precisa de alguns dados que chegam à plataforma New Relic para acompanhar este tutorial. Se você é novo no New Relic e deseja ver como é fácil usar o NRQL, você pode começar a usar a plataforma gratuitamente e seguir o tutorial. Tudo o que tem a fazer é:
- Cadastre-se para uma conta gratuita, caso ainda não o tenha feito.
- Use nosso agente e integração para coletar automaticamente dados de qualquer estrutura e ferramentas comuns.
- Visite o guia de lançamento rápido para obter um caminho recomendado sobre como configurar o New Relic. Você pode começar a ingerir dados para consulta e estará pronto para usar este ou qualquer outro tutorial desta série.
Pronto para começar? Vamos!
1. Crie sua primeira consulta
O melhor lugar para começar no criador de consulta é observar um único tipo de evento no NRDB chamado Transaction
, coletado pelo New Relic APM. Toda consulta NRQL deve ter cláusulas SELECT
e FROM
: você deve SELECT
alguns dados e nos informar onde estão FROM
. Comece com esta consulta básica que seleciona tudo do tipo de evento Transaction
:
SELECT *FROM Transaction
Isso retorna muitos resultados, cada um com um timestamp e uma coleção de atributo. Por enquanto, você deseja apenas um único resultado, portanto pode limitar os resultados a um único registro usando LIMIT 1
.
SELECT *FROM TransactionLIMIT 1
Importante
Quando LIMIT
não é fornecido, a consulta retorna o padrão de 100 linhas de tabela para SELECT *
consulta ou 10 valores agregados para FACET
consulta e SELECT (attributes)
consulta. Você pode especificar qualquer limite até o máximo usando LIMIT MAX
.
Agora você tem uma maneira de controlar o volume dos resultados. Mas e se você não quiser todo o atributo? E se você quiser ver apenas pontos de dados específicos? Assim como o SQL, você pode fazer isso com apenas alguns caracteres, substituindo *
pelo nome do(s) atributo(s) desejado(s). Nesse caso, você pode perguntar o nome de uma transação e o tempo que ela demorou.
SELECT name, durationFROM Transaction
Com isso você escreveu uma consulta que pode retornar todos ou alguns atributos específicos de um evento, bem como consultar um número específico de eventos. Chegou a hora da próxima etapa: agregar dados.
2. Dados agregados
Às vezes, você pode querer visualizar dados agregados resumidos em vários eventos, em vez de visualizar pontos de dados individuais. É aqui que o NRDB brilha. O NRDB pode verificar bilhões de eventos e fornecer respostas instantâneas e em tempo real a perguntas sobre seus dados. Por exemplo, cada evento Transaction
tem um atributo de duração que representa quantos segundos a chamada levou para ser executada. Use a consulta a seguir para descobrir a duração média de todos os eventos Transaction
:
SELECT average(duration) FROM Transaction
NRQL possui muitas funções integradas que você pode usar para agregar dados de eventos. As funções comumente usadas incluem max()
, min()
,average()
, median()
e percentile()
. Você pode usar a consulta a seguir para perguntar ao NRDB a duração da transação mais lenta dos últimos 60 minutos. Para fazer isso, peça ao NRDB o max(duration).
SELECT max(duration) FROM Transaction
Agora você sabe quanto tempo demorou a experiência mais lenta dos clientes nos últimos 60 minutos. Em seguida, encontre o inverso e veja quanto tempo durou a experiência mais rápida solicitando o min(duration)
ao NRDB.
SELECT min(duration) FROM Transaction
Como você pode ver, max()
e min()
retornam pontos de dados importantes. Mas e se você quiser realizar operações aritméticas com os dados? Com sum()
, você pode fazer adição básica em um atributo numérico. Nesta consulta, use um novo atributo chamado databaseCallCount
. Este atributo conta o número de chamadas ao banco de dados que cada transação faz. Ao adicioná-los, você pode obter o volume total de chamadas de banco de dados na janela de tempo padrão de 60 minutos (será 0 se seus aplicativos não se comunicarem com um banco de dados).
SELECT sum(databaseCallCount) FROM Transaction
Finalmente, você também pode contar todos os eventos de transação registrados com count(*)
. Usando esta consulta, você pode contar todos os eventos registrados para todos os aplicativos reportados ao New Relic APM:
SELECT count(*) FROM Transaction
Agora você pode descobrir muito sobre seus dados: você pode medir os limites do seu desempenho, agrupar dados de eventos e até calcular informações sobre o atributo escolhido. Você escolheu uma duração e calculou os valores average
, max
e min
, adicionou um atributo numérico e contou todos os eventos durante um período de tempo. Manipular dados como esse ajudará quando você quiser apresentar dados em visualizações, o que auxilia na detecção de problemas de desempenho. Chegou a hora da próxima etapa: usar intervalos de tempo.
3. Use intervalos de tempo
Cada dado no NRDB tem um timestamp
e cada consulta opera em um subconjunto de dados dentro de um intervalo de tempo. Se você não fornecer um intervalo de tempo em sua consulta NRQL, ela retornará os últimos 60 minutos por padrão, como vimos anteriormente. Mas e se você quiser ver dados de diferentes intervalos de tempo? Como você controla a janela de dados que vê? Você pode fazer isso usando palavras-chave SINCE
e UNTIL
para fornecer um início e um fim ao intervalo de tempo da sua consulta.
SELECT average(duration) FROM Transaction SINCE 1 day ago
Você também pode especificar intervalos de tempo relativos ao momento da consulta usando palavras-chave como day
, week
, hour
, minute
ou seus equivalentes no plural. Você também pode usar expressões lógicas como SINCE
hoje ou SINCE
esta semana.
SELECT average(duration) FROM Transaction SINCE this week
Aqui está outra consulta que demonstra intervalos de tempo relativos. Observe que ao especificar um tempo relativo, você precisa incluir a palavra-chave ago
.
SELECT average(duration) FROM Transaction SINCE 1 week ago UNTIL 2 days ago
Agora você tem ainda mais controle sobre seus dados. Ao adicionar um período de tempo a uma consulta, você define exatamente qual janela de dados deseja ver. Esses controles permitem que você se concentre nos dados desejados, definindo onde o relatório de dados começa e termina. Você também escolheu a janela e usou termos comuns como week
, day
, hour
, minute
e seus plurais. Chegou a hora da próxima etapa: consultar uma série temporal.
4. Consultar série temporal
Um caso de uso comum de NRQL é consultar como os valores mudam ao longo do tempo. Esse tipo de consulta fornece dados para gráficos de linhas, gráficos de áreas e outras visualizações. Você já executou algumas consultas para explorar as funções de agregação average()
, max()
, min()
, sum()
e count()
. Agora, use este exemplo para ver como pegar qualquer consulta feita com funções de agregação e adicionar a palavra-chave TIMESERIES
para representar graficamente os valores ao longo do tempo.
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES
Uma consulta de série temporal divide os dados em várias regiões chamadas buckets durante o período especificado. Você pode fazer com que o NRDB escolha um valor para a largura desse intervalo ou escolha o seu próprio. Use esta consulta para pedir ao NRDB que mostre a duração média da transação do aplicativo com os dados retornados organizados em intervalos de 1 hora.
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES 1 hour
Observe que isso pode retornar um gráfico mais plano, já que temos apenas 24 pontos de dados no período de 1 dia que está sendo plotado. Mas e se você quiser ver a granularidade máxima possível? Qualquer consulta de série temporal pode ter até 366 intervalos de dados, o que significa que a granularidade máxima possível por 24 horas é agrupar nossos dados em janelas de 4 minutos. consulte isso usando TIMESERIES 4 minutes
ou TIMESERIES MAX
:
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES MAX
Agora você alcançou novos níveis de visualização de dados, passando de números resumidos para gráficos de linhas de tendências de dados ao longo do tempo. Como você pode ver, o uso de TIMESERIES
oferece controle total sobre visualizações, granularidade e média de dados em janelas específicas. Chegou a hora do próximo passo: usar a cláusula ‘Where’.
5. Use a cláusula WHERE
Às vezes, você pode querer que sua consulta opere em um subconjunto específico de dados NRDB. Por exemplo, ao consultar o tempo médio de resposta do seu aplicativo, você pode usar um atributo chamado transactionType
, que especifica se a transação foi uma transação Web
ou Non-Web
(como um cron job ou uma tarefa na fila). Use este exemplo para criar uma consulta que retorne apenas dados do tipo de transação Web
:
SELECT average(duration) FROM Transaction WHERE transactionType='Web' TIMESERIES
Você também pode combinar AND
e OR
para fazer consultas mais complexas, usando parênteses (
e )
para controlar como eles funcionam juntos. Esta consulta mostra o tempo médio de resposta de "transações da web que foram mais rápidas que 100ms e tiveram um código de resposta de 200 ou 302. Observe o uso de parênteses para controlar OR
.
SELECT average(duration) FROM Transaction WHERE transactionType='Web' AND duration < 0.1 AND (httpResponseCode=200 OR httpResponseCode=302) TIMESERIES
Até agora, todas as consultas que você fez realizaram ações em todos os dados disponíveis no intervalo de tempo determinado. Mas filtrar dados indesejados também é importante. Os exemplos acima são úteis para filtrar um tipo de transação ou quando ocorre um código de resposta específico. Da mesma forma, você pode filtrar para um appName
específico, uma transação name
ou até mesmo um atributo personalizado que você marcou em seus dados. Chegou a hora da etapa final do tutorial: usar a consulta facetada.
6. Marque sua consulta
Freqüentemente, você desejará determinar os valores "N principais" agrupados por um atributo específico. No NRQL, você faz isso usando FACET
. Por exemplo, você pode consultar as chamadas Transaction
mais lentas observadas em média, agrupadas por nome. Pense nisso como "facetado pelo nome".
SELECT average(duration) FROM Transaction FACET name SINCE 1 day ago
Por padrão, uma consulta facetada retorna os 10 principais resultados, mas você pode personalizar quantos resultados são retornados colocando um LIMIT
. Neste exemplo, use TIMESERIES
para recuperar os cinco principais resultados exibidos em um gráfico de linhas.
SELECT average(duration) FROM Transaction FACET name SINCE 3 hours ago LIMIT 5 TIMESERIES
Mas talvez você não queira um gráfico de linhas ou queira uma lista maior de transações. Ao remover TIMESERIES
, você pode renderizar um gráfico de barras ou de pizza e pode aumentar o escopo da lista aumentando o LIMIT
.
SELECT average(duration) FROM Transaction FACET name SINCE 3 hours ago LIMIT 20
Por fim, aqui está uma consulta um pouco mais complexa que compara a quantidade de transações da web, dividida por aplicativo individual que reporta à New Relic:
SELECT count(*) FROM Transaction WHERE transactionType='Web' FACET appName LIMIT 5 SINCE 6 hours ago TIMESERIES
Agrupamento ou "facetamento" permite que você obtenha dimensões com seus dados. Ao aplicar uma função de agregação, você pode usar FACET
para agrupar por qualquer atributo, padrão ou personalizado, que relate dados de eventos (assim como a cláusula WHERE
). Recomendamos adicionar um atributo personalizado aos seus dados ou reportar um novo evento personalizado para permitir que você investigue mais diretamente o conjunto de dados resultante.
Parabéns: você concluiu o primeiro tutorial de NRQL! Se você chegou até aqui, agora conhece os fundamentos da consulta de dados de eventos usando NRQL.
Qual é o próximo?
Temos ainda mais NRQL para você explorar com mais três tutoriais que cobrem conceitos e casos de uso mais avançados! Recomendamos prosseguir primeiro com o tutorial sobre como processar seus dados , depois passar para o tutorial sobre como avançar seu dashboard e, finalmente, terminar a série com nosso tutorial sobre as funções NRQL mais avançadas.