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

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

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Use funções NRQL avançadas

Até agora, você aprendeu os fundamentos do uso do NRQL, como usar o NRQL para controlar seus dados e como usar o NRQL para aprimorar seu painel. Nesta série final de tutoriais, você aprenderá as técnicas NRQL mais avançadas que permitem consultar absolutamente tudo o que você precisa em seus dados. Este tutorial discutirá técnicas de agregação adicionais, funções matemáticas de nível superior e recursos avançados como filtragem Regex e agregação aninhada. Especificamente, você aprenderá como usar:

  • A função de agregação stddev() e como agrupar dados agregados usando a função buckets() .
  • As funções matemáticas avançadas disponíveis no NRQL para suavizar, restringir e manipular os dados.
  • Como descobrir os tipos de eventos e atributos disponíveis em seus dados em um determinado período.
  • Como filtrar dados com Regex usando RLIKE.
  • Como usar agregação e subconsultas aninhadas.

Achamos que você achará esses recursos absolutamente inestimáveis. Vamos começar!

Use bucketing com agregação

O Desvio padrão mede a quantidade de variação ou dispersão dentro de um conjunto de valores. Utiliza uma escala de baixo (valores próximos da média) a alto (valores distantes da média). A função stddev()permite observar as entrelinhas das médias e compreender os valores relatados em um nível mais profundo. Neste exemplo, você compara o Desvio padrão do tempo de resposta da transação ("duração") do último dia com o dia anterior.

SELECT stddev(duration)
FROM Transaction
SINCE 24 hours ago
COMPARE WITH 24 hours ago
TIMESERIES

A função stdvar() funciona de maneira semelhante a stddev() , mas retorna a variação padrão para atributo numérico.

Em uma lição anterior, você aprendeu como agrupar dados em uma configuração específica de buckets usando FACET cases(). Você também pode agrupar dados por um atributo específico automaticamente usando FACET buckets(). Esta função simplifica o agrupamento de dados para qualquer função de agregação e leva três argumentos:

buckets(attribute, ceiling, number-of-buckets).

  • O atributo pelo qual você deseja agrupar.

  • Valor máximo do intervalo de amostra (qualquer valor discrepante aparecerá no intervalo final).

  • O número total de buckets que você precisa.

    Na consulta de exemplo, você usa NRQL para encontrar a duração média de uma transação inteira. Porém, você agrupa esse desempenho em transações que realizam volumes específicos de chamadas de banco de dados. Portanto, você especifica o atributo do bucket como databaseCallCount, define o limite máximo em 400 chamadas e agrupa-o em 10 buckets. Isso resulta no desempenho de transações de 0 a 40, 40 a 80, 80 a 120, 120 a 160, 160 a 200, 200 a 240, 240 a 280, 280 a 320, 320 a 360 e >360 chamadas de banco de dados. 10 baldes transparentes divididos uniformemente até o teto.

    SELECT average(duration)
    FROM Transaction
    SINCE 12 hours ago
    FACET buckets(databaseCallCount, 400, 10)

Com isso, você aprendeu todas as funções de agregação que existem atualmente no NRQL! Você pode dividir seus dados como um profissional. Se você acha que falta uma capacidade de agregação no NRQL, informe sua equipe de conta: estamos sempre procurando a próxima funcionalidade matadora que você possa precisar.

Use funções matemáticas avançadas

NRQL também oferece suporte a funções matemáticas mais avançadas para aqueles que precisam se aprofundar em seus dados. Essas funções podem extrapolar valores para potência de X, encontrar raízes quadradas, aplicar fixação para impor limites superiores e inferiores ou até mesmo manter valores positivos no eixo Y.

NRQL possui muitas funções matemáticas que manipulam valores de alguma forma. Neste exemplo, você verá alguns demonstrados simultaneamente.

A função abs(n) retorna o valor absoluto para n: para valores n não negativos ela retorna "n" e para valores n negativos ela retorna o número positivo "n". Por exemplo, abs(2) = 2 e abs(-4) = 4.

Você também pode arredondar números decimais para inteiros usando floor(), ceil() e round(). floor() retorna o número inteiro completo mais próximo, arredondado para baixo, e ceil() faz o oposto, arredondando para cima. round() é bidirecional e arredonda para cima ou para baixo para o número inteiro completo mais próximo.

SELECT abs(duration), round(duration), ceil(duration), floor(duration)
FROM Transaction
SINCE 1 day ago

Você pode usar a fixação em um atributo para impor um limite superior ou inferior ao seu valor. Isso é útil para coisas como garantir que valores discrepantes extremos não distorçam a escala de um gráfico de série temporal. clamp_max(duration, 10) retorna a duração, a menos que exceda 10; nesse caso, retorna 10. Muito simplesmente, qualquer coisa maior que 10 ainda retorna igual a 10. clamp_min(duration,1) faz o inverso; se alguma duração for inferior a 1, será reportado como igual a 1.

SELECT clamp_max(average(duration), 10), clamp_min(average(duration), 1)
FROM Transaction
SINCE 1 day ago
TIMESERIES

Agora você pode passar para a matemática avançada que muitos consideram difícil de usar. Como antes, podemos mostrar todas essas funções em um único exemplo de consulta.

A função pow() eleva o primeiro argumento à potência do segundo argumento. Neste exemplo, você eleva a duração à potência de 2. Se precisar da raiz quadrada de um valor, a função sqrt() pode fornecer isso rapidamente. E a função exp() calcula a função exponencial natural do seu argumento.

Finalmente, NRQL também oferece logaritmos que atendem a uma série de funções semelhantes:

  • ln(n) calcule o logaritmo natural: o logaritmo base e.

  • log2(n) calcule o logaritmo na base 2.

  • log10(n) calcule o logaritmo na base 10.

  • log(n, b) permite calcular logaritmos com uma base arbitrária b.

    SELECT pow(duration, 2), sqrt(duration), exp(duration), ln(duration), log2(duration)
    FROM Transaction
    SINCE 1 day ago

Nesta lição, você aprendeu como suavizar os dados do evento. round()/ceil()/floor() permitem arredondar da maneira que desejar. A fixação permite definir limites nos dados, e as ferramentas matemáticas avançadas para logaritmo, raiz quadrada, potência e exponencial oferecem controle adicional para manipular os dados conforme necessário. A seguir, você aprenderá como descobrir evento e atributo.

Descubra evento e atributo

Descobrir evento e atributo pode ajudar a tirar dúvidas sobre seus dados disponíveis antes de consultá-los e auxiliar na automação! Vamos explorar esse poderoso utilitário.

Digamos que você queira uma lista de todos os tipos de eventos atualmente reportados à sua conta New Relic. A sintaxe SHOW EVENT TYPES retorna uma lista de todos os tipos de eventos relatados em um determinado período. É uma das raras exceções em que uma consulta NRQL não precisa de SELECT e FROM. Você pode usar essa funcionalidade para coisas como confirmar a existência de dados de eventos personalizados.

SHOW EVENT TYPES
SINCE 1 week ago

Talvez você precise saber qual atributo você tem disponível para um determinado tipo de evento. A função keyset() fornece uma lista de todos os atributos de um tipo de evento, agrupados por tipo de atributo. Você receberá apenas atributos que contenham valores dentro da janela de tempo fornecida, que você pode usar para explorar seus dados. Você também pode usá-lo em automação, para coisas como garantir relatórios de dados de clientes corretamente.

SELECT keyset()
FROM Transaction
SINCE 1 week ago

Esses recursos ajudam você a descobrir mudanças nos tipos de eventos e atributos. Mais engenheiros de DevOps utilizam essas funcionalidades para finalizar jobs, ou até mesmo automatizá-los rapidamente. A seguir, você aprenderá como filtrar dados com Regex.

Filtrar com regex

Ocasionalmente, você pode querer filtrar dados com correspondência de padrões mais complexa do que LIKE pode fornecer. Com a cláusula RLIKE , você pode filtrar com expressões regulares para uma correspondência mais complicada.

Em qualquer cenário que você possa usar LIKE, você tem a opção de usar RLIKE para fornecer uma regex correspondente entre aspas. Neste exemplo, há uma lista de todos os nomes de host que terminam em números pares ou consoantes.

SELECT uniques(host)
FROM Transaction
WHERE host
RLIKE '^.*[02468bcdfghjklmnpqrstvwxyz]'

Você também pode fazer combinações simples. Por exemplo, se você quiser corresponder um valor que começa com uma determinada letra ou palavra.

SELECT count(*)
FROM Transaction
WHERE name
RLIKE 'W.*|O.*'
FACET name

O mecanismo de expressão regular usa sintaxe RE2. Se precisar excluir caracteres, pode ser necessário usar sequências de escape com barra invertida dupla. (por exemplo: \).

Lembre-se de que RLIKE tem inerentemente mais complexidade e menos desempenho que LIKE. Use-o apenas quando LIKE e outras funcionalidades de filtragem não atenderem às suas necessidades.

O suporte a expressões regulares permite possibilidades quase infinitas de correspondência de padrões. Se você já é um guru de regex, conhece o poder que isso agrega ao NRQL. Mas se não estiver, não se preocupe! Regex tem muitos recursos disponíveis para referência online. Agora que você aprendeu como usar regex com NRQL, o próximo item da lista é usar agregação aninhada.

Usar agregação aninhada

Você pode escrever consultas de agregação aninhadas com NRQL que usa uma consulta como FROM para a consulta pai. Isso permite que você responda a perguntas como:

  • Quantas transações por minuto minha aplicação atendeu e qual foi a taxa máxima de solicitações por minuto na última hora?
  • Qual é o uso médio da CPU de todos os meus servidores e quais servidores específicos estão acima de 90%?
  • Qual porcentagem de todas as sessões do usuário foi rejeitada imediatamente (ou seja, apenas um PageView na sessão)?

Vamos explorar cada um desses casos de uso com mais detalhes.

Exemplo 1: Máximo de chamadas de API na última hora

Primeiro, você pode contar o número de chamadas API por minuto na última hora. Isso retorna 60 pontos de dados em um gráfico:

SELECT count(*) AS apicalls
FROM Transaction
TIMESERIES 1 MINUTE

Agora, para encontrar o valor máximo relatado nesse período, coloque a consulta entre parênteses e use SELECT ... FROM assim: SELECT z FROM (SELECT x AS z FROM y)

SELECT max(apicalls)
FROM ( SELECT count(*) AS apicalls FROM Public_APICall TIMESERIES 1 minute )

Exemplo 2: servidores com alta carga de CPU

Este exemplo usa dados da New Relic Infrastructure. Às vezes, você deseja ver apenas hosts cuja CPU excedeu, em média, uma determinada porcentagem. Se você solicitar o average(cpuPercent) ao NRQL, obterá uma lista de hosts com a porcentagem média de CPU mais alta. Porém, você não pode simplesmente adicionar um WHERE cpuPercent > 90 para limitar isso apenas a hosts rodando a 90% ou mais, porque isso removeria os dados antes de calcular a média.

Mas você pode resolver isso com agregação aninhada! Ao solicitar average(cpuPercent) na subconsulta, você obtém a lista de hosts e sua CPU média. Agora, na consulta externa, você pode filtrar apenas os resultados que foram > x%! (Dica: pode ser necessário ajustar o limite desta consulta para funcionar com a CPU dos seus hosts. Nós definimos para 20% aqui.)

SELECT hostname, cpu
FROM (SELECT average(cpuPercent) AS cpu FROM SystemSample FACET hostname)
WHERE cpu > 20

Exemplo 3 – Rejeições de Sessão

Muitas vezes as pessoas se perguntam como calcular a taxa de rejeição no monitoramento de front-end. Isso se refere a sessões que visualizam uma única página e “saltam” antes de visitar mais páginas. Com a agregação aninhada, você pode conseguir isso facilmente. Nossa consulta interna conta os PageViews, agrupando-os por sessão. O conjunto de resultados passado para a consulta externa lista todas as sessões e quantas páginas cada uma visualizou. A consulta externa calcula então a porcentagem de sessões com uma contagem de 1 (isso indica uma "sessão devolvida", porque visualizaram apenas uma única página).

SELECT percentage(count(*), WHERE sessionLength = 1)
FROM (SELECT count(*) AS sessionLength FROM PageView FACET session)

Nesta lição, você aprendeu como usar uma consulta como FROM de outra consulta para responder perguntas mais complicadas. Só há uma última coisa a aprender: como usar subconsultas!

Usar subconsultas

As subconsultas em NRQL são semelhantes às agregações aninhadas, permitindo usar uma consulta aninhada dentro de outra consulta. Com subconsultas, a consulta aninhada vai para a instrução SELECT e a cláusula WHERE , enquanto as agregações aninhadas vão para a cláusula FROM .

Vejamos alguns exemplos desses diferentes tipos de subconsultas.

Condições Numéricas

Você pode usar qualquer consulta que retorne um único valor numérico em condições numéricas. Este exemplo usa uma subconsulta na cláusula WHERE que retorna o valor do 97º percentil da duração da chamada de API e, em seguida, retorna o nome e a duração das chamadas maiores que esse valor.

SELECT http.url, duration
FROM Public_APICall
WHERE duration > (SELECT percentile(duration,97) FROM Public_APICall)

IN Condições

Quando você tiver vários valores retornando de uma subconsulta, use uma condição IN para a consulta pai comparar com cada valor. No exemplo, o atributo entity.guid fornece dados para cada entidade única que tem um erro de transação, e isso corresponde ao valor entity.guid das transações para determinar a duração média das entidades com erro.

SELECT average(duration)
FROM Transaction
WHERE entity.guid
IN (SELECT uniques(entity.guid) FROM TransactionError)
FACET appName
TIMESERIES

Subconsultas na instrução SELECT

Você pode usar os resultados da subconsulta em cálculos com uma instrução SELECT e pode especificar um intervalo de tempo diferente da consulta externa. Este exemplo calcula o delta entre a duração média atual e a dos últimos 7 dias.

SELECT average(duration) - (SELECT average(duration) FROM Public_APICall SINCE 7 days ago)
FROM Public_APICall
TIMESERIES

As subconsultas são uma ferramenta poderosa para exploração de dados, permitindo consultas mais sofisticadas em diferentes fontes de dados e intervalos de tempo.

Parabéns por concluir este tutorial. Você aprendeu sobre técnicas adicionais de agregação, funções matemáticas de nível superior e recursos avançados como filtragem Regex, agregação aninhada e subconsultas. Se você concluiu os três tutoriais anteriores, então trabalhou com quase todos os aspectos do NRQL que pode usar!

Esperamos que o NRQL seja útil para explorar seus dados e, se você tiver mais dúvidas ou encontrar problemas, sinta-se à vontade para entrar em contato com o suporte da New Relic. Ou, se preferir, você pode compartilhar sua experiência com nossa comunidade online.

Copyright © 2024 New Relic Inc.

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