Dica
Esta lição faz parte de um curso que ensina como construir um aplicativo New Relic do zero. Se ainda não o fez, confira a Visão Geral.
Cada lição do curso se baseia na anterior, portanto, certifique-se de ter concluído a última lição. Apresente um modal de confirmação do teste final, antes de iniciar esta.
Nesta série, você está construindo um aplicativo New Relic completo que ingere dados de um serviço de demonstração que está executando um teste A/B. O aplicativo mostra os dados de teste A/B de maneiras interessantes para que você possa escolher se a versão A ou a versão B é mais eficaz para atingir seu objetivo de negócios: aumentar a assinatura do boletim informativo de alta qualidade.
Em tutoriais anteriores, você criou gráficos para visualizar seus dados e organizou esses gráficos para poder usá-los e compreendê-los. Você também criou um formulário em seu aplicativo para encerrar o teste quando estiver confiante na versão mais eficaz. Até agora, porém, você não pode avaliar qual versão é mais eficaz porque seus gráficos mostram dados simulados, como:
const versionASignups = { metadata: { id: 'version-a-newsletter-signups', name: 'Version A', viz: 'main', color: 'blue', }, data: [ { x: 0, y: 0 }, { x: 10, y: 10 }, { x: 20, y: 15 }, { x: 30, y: 5 }, { x: 40, y: 30 }, { x: 50, y: 25 }, ],}
A propriedade data
de um gráfico é útil para fornecer dados criados manualmente como este ou até mesmo dados reformatados de terceiros. Mas para muitos de seus gráficos, você deseja mostrar dados do New Relic em tempo real. Por exemplo, Newsletter subscriptions by version deve mostrar os dados da assinatura, que existem no banco de dados da New Relic, abreviadamente NRDB.
Para consultar o NRDB, primeiro você precisa saber quais dados está procurando. Lembra do seu serviço backend de demonstração? Bem, esse serviço relata um evento de assinatura do New Relic quando um usuário assina um boletim informativo do seu site. Você pode visualizar esses eventos de assinatura no New Relic enquanto seus serviços de demonstração estão em execução.
Veja o evento de assinatura no New Relic
Antes de consultar o NRDB em seus gráficos, experimente consultar dados na interface da web do New Relic.
Na página inicial do New Relic , acesse o Data Explorer no menu de navegação superior.
O Data Explorer permite explorar seus dados de telemetria:
métrica
eventos
logs
traces
Como o backend envia a assinatura do boletim informativo como evento para New Relic, você pode vê-los nesta visualização.
Selecione Subscription no menu Custom events.
Esta consulta NRDB para assinatura de eventos totais por minuto nos últimos 30 minutos e mostra esses dados em um gráfico.
Clique em Dimensions para ver uma lista dos atributos associados a estes eventos de assinatura.
Você pode filtrar e agrupar eventos de assinatura usando essas dimensões. Observe a consulta NRQL acima do gráfico. Isso mostra a consulta subjacente do gráfico, que se baseia nessas dimensões.
Clique na dimensão da page-version para ver a consulta mudar para agrupar por FACET page_version
.
O Data Explorer apresenta duas opções para filtrar e classificar seus dados:
interface do usuário (interface) seleções como a que você acabou de fazer
New Relic Query Language (NRQL)
A interface é útil para filtrar dados rapidamente e não exige que você conheça NRQL. Para o seu aplicativo New Relic , entretanto, você precisa usar a consulta NRQL.
Clique na consulta NRQL para navegar até o criador de consulta.
Aqui, você pode visualizar e editar manualmente a consulta para buscar os dados necessários.
Atualize NewsletterSignups
com um NrqlQuery
Antes de começar a integrar os dados do New Relic em seu aplicativo NR1, consulte seu guia de design.
Seu aplicativo New Relic tem oito gráficos no total, incluindo gráficos de linhas, gráficos de pizza e gráficos de tabelas. Atualmente, cada um desses gráficos mostra dados simulados, mas eles precisam mostrar dados reais para serem úteis. Primeiro, concentre-se na consulta de dados do gráfico superior: Newsletter subscriptions per version.
Com a consulta criada no Data Explorer, você já tem os dados necessários para este gráfico.
Detalhe técnico
Na sua consulta, você busca os totais de assinaturas (SELECT count(*) FROM subscriptions
), agrupa-os pela versão da página (FACET page_version
) e concentra a série temporal nos últimos 30 minutos (SINCE 30 MINUTES AGO TIMESERIES
).
Explore nossa documentação para saber mais sobre a consulta NRQL.
A seguir, você aprende como passar sua consulta NRQL para o gráfico de Newsletter subscriptions per version.
Mude para o diretório add-nrql-components/ab-test
do repositório de cursos:
$cd nru-programmability-course/add-nrql-components/ab-test
Este diretório contém o código que esperamos que seu aplicativo tenha neste ponto do curso. Ao navegar para o diretório correto no início de cada lição, você deixa seu código personalizado para trás, protegendo-se assim de carregar código incorreto de uma lição para outra.
Em nerdlets/ab-test-nerdlet/newsletter-signups.js
, atualize LineChart
em NewsletterSignups
. Remova os dados simulados e use a consulta NRQL que você criou no Data Explorer:
import React from 'react';import { HeadingText, LineChart, NrqlQuery,} from 'nr1';
const ACCOUNT_ID = 123456 // <YOUR NEW RELIC ACCOUNT ID>
export default class NewsletterSignups extends React.Component { render() { return <div> <HeadingText className="chartHeader"> Newsletter subscriptions per version </HeadingText> <NrqlQuery accountIds={[ACCOUNT_ID]} query="SELECT count(*) FROM subscription FACET page_version SINCE 30 MINUTES AGO TIMESERIES" > { ({ data }) => { return <LineChart data={data} fullWidth />; } } </NrqlQuery> </div> }}
Importante
Certifique-se de substituir <YOUR NEW RELIC ACCOUNT ID>
pelo seu ID de conta New Relic real.
Em NrqlQuery
, você define dois adereços:
accountIds
: O ID da conta que você consultaquery
: A consulta a ser executada
Com eles, seu app NR1 pode consultar os dados que você deseja mostrar no seu gráfico.
Dica
Existe uma proposta conveniente para usar NRQL para fornecer dados aos seus gráficos, chamada query
. Se você preferir não usar o componente NrqlQuery
, tente a propriedade query
:
<LineChart accountIds={<YOUR NEW RELIC ACCOUNT ID>} query="SELECT count(*) FROM subscription FACET page_version SINCE 30 MINUTES AGO TIMESERIES"/>
Tenha em mente que você ainda deve fornecer o accountIds
.
Navegue até a raiz do seu Nerdpack em nru-programmability-course/add-nrql-components/ab-test
.
Gere um novo UUID para o seu Nerdpack:
$nr1 nerdpack:uuid -gf
Como você clonou o repositório de cursos que continha um Nerdpack existente, você precisa gerar seu próprio identificador exclusivo. Este UUID mapeia seu Nerdpack para sua conta New Relic.
Sirva seu aplicativo localmente:
$nr1 nerdpack:serve
Acesse https://one.newrelic.com?nerdpacks=local e visualize seu aplicativo em Apps > Your apps.
Newsletter subscriptions per version agora mostra dados reais do banco de dados da New Relic em vez dos dados simulados que você definiu anteriormente. Observe que seu gráfico extrai dados quando o aplicativo é carregado, mas não continua extraindo dados enquanto o aplicativo está aberto. Você pode corrigir isso adicionando outro adereço.
Dica
Se algo não funcionar, use as ferramentas de depuração do seu navegador para tentar identificar o problema.
Assegure-se de que você:
- Copiou o código corretamente da lição
- Gerou um novo UUID
- Todas as instâncias de
<YOUR NEW RELIC ACCOUNT ID>
no seu projeto foram substituídas pelo New Relic ID real da sua conta
Adicione um pollInterval
:
import React from 'react';import { HeadingText, LineChart, NrqlQuery,} from 'nr1';
const ACCOUNT_ID = 123456 // <YOUR NEW RELIC ACCOUNT ID>
export default class NewsletterSignups extends React.Component { render() { return <div> <HeadingText className="chartHeader"> Newsletter subscriptions per version </HeadingText> <NrqlQuery accountIds={[ACCOUNT_ID]} query="SELECT count(*) FROM subscription FACET page_version SINCE 30 MINUTES AGO TIMESERIES" pollInterval={60000} > { ({ data }) => { return <LineChart data={data} fullWidth />; } } </NrqlQuery> </div> }}
Importante
Certifique-se de substituir <YOUR NEW RELIC ACCOUNT ID>
pelo ID real da sua conta New Relic.
O pollInterval
é o número de milissegundos entre as atualizações do gráfico. Cada vez que o gráfico é atualizado, ele consulta dados recentes do New Relic. Nesse caso, você atualiza a cada minuto.
Preencha seu PieChart
com subscription
Agora que você já viu como passar os dados da New Relic para Newsletter subscriptions per version, é hora de passar para Total subscriptions per version. Esses dois gráficos são semelhantes na medida em que comparam dados de eventos de assinatura agrupados por versão. As principais diferenças entre Newsletter subscriptions per version e Total subscriptions per version são:
- Um é um gráfico de linhas e o outro é um gráfico de pizza
- Um mostra dados de séries temporais e outro mostra totais de todos os tempos
Em nerdlets/ab-test-nerdlet/total-subscriptions.js
, atualize o componente TestDistributions
, removendo os dados simulados e preenchendo o PieChart
com a mesma consulta NRQL usada para Newsletter subscriptions per version, mas com cláusulas TIMESERIES
e SINCE
diferentes:
import React from 'react';import { HeadingText, NrqlQuery, PieChart,} from 'nr1';
const ACCOUNT_ID = 123456 // <YOUR NEW RELIC ACCOUNT ID>
export default class TotalSubscriptions extends React.Component { render() { return <div> <HeadingText className="chartHeader"> Total subscriptions per version </HeadingText> <NrqlQuery accountIds={[ACCOUNT_ID]} query="SELECT count(*) FROM subscription FACET page_version SINCE 7 DAYS AGO" pollInterval={60000} > { ({ data }) => { return <PieChart data={data} fullWidth /> } } </NrqlQuery> </div> }}
Importante
Certifique-se de substituir <YOUR NEW RELIC ACCOUNT ID>
pelo ID real da sua conta New Relic.
Você não precisa da cláusula TIMESERIES
porque o gráfico de pizza mostra apenas dados numéricos. Você não precisa da cláusula SINCE
porque Total subscriptions per version precisa mostrar os totais de assinaturas de todos os tempos.
Com seu Nerdpack servido localmente, visualize seu aplicativo para ver seus gráficos servindo dados reais.
Total subscriptions per version agora mostra o total total de assinaturas de ambas as versões do seu aplicativo de demonstração.
Dica
Se algo não funcionar, use as ferramentas de depuração do seu navegador para tentar identificar o problema.
Assegure-se de que você:
- Copiou o código corretamente da lição
- Gerou um novo UUID
- Todas as instâncias de
<YOUR NEW RELIC ACCOUNT ID>
no seu projeto foram substituídas pelo New Relic ID real da sua conta
Bom trabalho! Você configurou alguns gráficos para consultar dados reais de assinatura do banco de dados da New Relic.
Preencher gráficos com pageView
dados de eventos
Considere os gráficos restantes que ainda usam dados simulados:
- Total de cancelamentos por versão
- Versão A - Visualizações de página vs. assinatura
- Versão B - Visualizações de página vs. assinatura
- Versão A - Visualizações de página
- Versão B - Visualizações de página
- Testes anteriores
Alguns desses gráficos precisam mostrar dados de visualização de página. Felizmente, seu aplicativo de demonstração cria um evento personalizado para cada visualização de página, como acontece com a assinatura! Como Version A - Page views vs. subscriptions e Version B - Page views vs. subscriptions exigem dados de duas fontes, ignore-as por enquanto e concentre-se nas Version A - Page views e Version B - Page views.
Em page-views.js
, remova os dados simulados de VersionPageViews
e use um componente NrqlQuery
para fornecer uma consulta:
import React from 'react';import { HeadingText, LineChart, NrqlQuery,} from 'nr1';
const ACCOUNT_ID = 123456 // <YOUR NEW RELIC ACCOUNT ID>
export default class VersionPageViews extends React.Component { render() { return <div> <HeadingText className="chartHeader"> Version {this.props.version.toUpperCase()} - Page views </HeadingText> <NrqlQuery accountIds={[ACCOUNT_ID]} query={`SELECT count(*) FROM pageView WHERE page_version = '${this.props.version}' TIMESERIES`} pollInterval={60000} > { ({ data }) => { return <LineChart data={data} fullWidth />; } } </NrqlQuery> </div> }}
Importante
Certifique-se de substituir <YOUR NEW RELIC ACCOUNT ID>
pelo seu ID de conta New Relic real.
Com seu Nerdpack servido localmente, visualize seu aplicativo para ver seus gráficos servindo dados reais.
Nesta nova consulta você busca pageView
evento personalizado em vez de subscription
evento. Você também usa uma cláusula WHERE
para filtrar um page_version
específico em vez de um FACET
para agrupar por page_version
.
Dica
Se algo não funcionar, use as ferramentas de depuração do seu navegador para tentar identificar o problema.
Assegure-se de que você:
- Copiou o código corretamente da lição
- Gerou um novo UUID
- Todas as instâncias de
<YOUR NEW RELIC ACCOUNT ID>
no seu projeto foram substituídas pelo New Relic ID real da sua conta
Ufa, é muita consulta, mas seu aplicativo parece ótimo! Agora você está mostrando dados reais em quatro gráficos. Lembra dos dois gráficos que você ignorou porque exigem dados de duas fontes?
- Versão A - Visualizações de página vs. assinatura
- Versão B - Visualizações de página vs. assinatura
Você precisa lidar com isso de maneira diferente da que fez com os gráficos com os quais está lidando, porque o NRQL não possui método para consultar dados de várias fontes. Na próxima lição, você aprenderá como fornecer dados para esses dois gráficos.
Curso
Esta lição faz parte de um curso que ensina como construir um aplicativo New Relic do zero. Continue para a próxima lição: Personalizar dados NRQL.