A plataforma New Relic é construída em torno dos quatro tipos de dados de telemetria fundamentais que acreditamos serem necessários para o monitoramento completo e eficaz do sistema: métrica, evento, logs e rastreamentos (frequentemente chamados de "MELT" no setor de observabilidade).
Neste documento, daremos uma explicação bastante técnica dos nossos principais tipos de dados MELT, sua estrutura e como eles são usados em nosso recurso. Você pode usar a maior parte do nosso recurso sem precisar entender a estrutura de dados subjacente. Mas entender melhor isso pode ajudá-lo a inserir dados no New Relic, entender os dados que você vê em nossa interface e consultar e mapear seus dados.
Métrica
Primeiro, explicaremos a definição de métrica do ponto de vista do setor de monitoramento e, em seguida, explicaremos como a New Relic lida com a métrica.
Métrica na indústria de monitoramento
Na indústria de monitoramento de software, uma métrica significa uma medição numérica de um aplicativo ou sistema. As métricas são normalmente reportadas regularmente.
Dois tipos principais de métrica são:
Dados agregados. Por exemplo: uma contagem de eventos durante um minuto ou a taxa de algum evento por minuto.
Um status numérico em um momento. Por exemplo: uma leitura de temperatura da CPU ou um status “% de CPU usada”.
Métricas são relativamente fáceis de relatar e armazenar porque um único registro pode representar um intervalo de tempo. Eles também podem ser agregados cada vez mais ao longo do tempo. Por exemplo, os dados por minuto podem ser “acumulados” para agregações por hora após um certo período de tempo e, eventualmente, podem ser acumulados para uma agregação por dia. Essa abordagem é eficiente para armazenamento de dados de longo prazo.
Métrica são uma solução forte para armazenar dados a longo prazo e compreender tendências ao longo do tempo. Uma desvantagem potencial é que pode ser difícil fazer análises detalhadas de dados mais antigos que foram agregados ao longo do tempo; quando são necessários muitos detalhes sobre ações importantes específicas, os dados do evento podem ser usados.
Métrica na New Relic
Conceitualmente, “métrica” é uma categoria ampla e geral. Existem várias maneiras pelas quais o New Relic mede e relata métricas, mas, na prática, ao usar a UI do New Relic, você geralmente não precisa entender exatamente como isso acontece. Em nossa documentação, normalmente nos referiremos apenas a "métrica", independentemente de como esses dados são relatados, a menos que haja um motivo pelo qual você precise saber mais (como entender como consultar seus dados).
Aqui estão algumas das maneiras como as métricas são relatadas e armazenadas na plataforma New Relic:
Na indústria de monitoramento, métrica "dimensional" refere-se a dados métricos que possuem uma variedade de atributo (dimensões) anexados, como atributo relacionado à duração (horário de início, horário de término), ID da entidade, região, host e muito mais. Este nível de detalhe permite análises e consultas aprofundadas.
Na New Relic, esses dados de métrica são anexados ao nosso tipo de dados Metric . Este é nosso principal tipo de dados métricos e é usado por muitas de nossas ferramentas, incluindo:
Para consultar o tipo de dados Metric , você poderia usar uma consulta NRQL como:
Select*from Metric
À medida que o tempo passa, as métricas são cada vez mais agregadas em intervalos de tempo maiores. Isso é feito para otimizar sua capacidade de consultar dados durante um longo período de tempo.
O APM, o browser e da New Relic relatam e exibem métricas em um formato de dados simples que chamamos de metric timeslice data. Uma métrica de fração de tempo consiste em três partes: um nome da métrica, o segmento de tempo que a métrica representa (a "fatia de tempo") e um valor numérico (a medida).
Por exemplo: uma métrica de fração de tempo para o tempo gasto em uma determinada transação é denominada WebTransaction/URI/foo e pode ter um tempo de resposta de 0,793 para uma janela de tempo de um minuto, das 10h20 às 10h21. Essas métricas geralmente seguem um padrão como <category>/<class>/<method>.
Nosso agente (APM, browser e mobile) pode coletar milhares de intervalos de tempo métricos por minuto para uma variedade de métricas de desempenho. Por exemplo: taxa de erros, uso de largura de banda e tempo de coleta de lixo. Você também tem a possibilidade de criar métricas personalizadas.
Os dados métrica de fração de tempo são um tipo de dados leve e não possuem os detalhes que as métricas dimensionais possuem.
Formas de explorar e consultar dados de métrica de fração de tempo:
Para APM: os dados da métrica de fração de tempo são convertidos em métrica dimensional e podem ser consultados via NRQL
Se você quiser saber mais sobre a estrutura dos dados de métrica de fração de tempo e ver alguns exemplos, expanda o colapsador abaixo.
Aqui estão alguns exemplos comuns de dados de métricas de fração de tempo, com foco nos mais comuns usados pelo aplicativo Ruby.
ActiveMerchant
A New Relic rastreia uma variedade de métricas em ActiveMerchant transações que podem ser usadas para análise de negócios, bem como monitoramento de desempenho. As métricas são resumidas por operação e também por gateway.
ActiveRecord é a API de mapeamento objeto-relacional usada pelo aplicativo Ruby on Rails. A métrica mostrada aqui mede o desempenho dos métodos find e save de ActiveRecord.
Apdex é uma medida da satisfação do usuário com o tempo de carregamento da página.
Controller
No aplicativo Ruby on Rails, as solicitações HTTP são tratadas por ações do Controlador. Um aplicativo Rails possui muitos controladores, cada um com uma ou mais ações. Quando seu aplicativo rails recebe uma solicitação http, essa solicitação é roteada para o controlador e ação apropriados, com base na URL dessa solicitação. Essa ação então faz todo o processamento necessário para gerar uma resposta http, que geralmente é uma página da web, mas também pode ser um fragmento de página, um documento xml ou qualquer outro tipo de dado solicitado pelo cliente.
A métrica a seguir rastreia o desempenho das ações do controlador, independentemente do roteamento, e sem levar em consideração quaisquer efeitos de rede ou servidor web.
Esta métrica rastreia o número de erros ou exceções levantadas durante o processamento de solicitações.
expressão regular
métrica de amostra
nome da legenda
Errors/all
Errors/all
External services
A instrumentação de serviços externos captura chamadas para serviços fora de processo, como serviços web, recursos na nuvem e quaisquer outras chamadas de rede. Não inclui outros componentes backend de primeira classe, como MemCache e banco de dados.
No aplicativo Ruby utilizamos a biblioteca Net::Http para capturar todos os serviços HTTP.
expressão regular
métrica de amostra
nome da legenda
External/[^/]+/all$
External/service.example.com/all
Todas as chamadas service.example.com
External/
External/host.aws.com/Net::Http::POST
Net::Http::POST[host.aws.com]
External/all$
External/all
Serviços externos
External/[^/]+/(?!all)/
External/service.example.com/all
Todas as chamadas service.example.com
HTTP dispatcher
Esta métrica representa um resumo das taxas de transferência e do tempo de resposta de todas as solicitações web.
expressão regular
métrica de amostra
nome da legenda
^HttpDispatcher$
HttpDispatcher
HttpDispatcher
MemCache
MemCache é uma tecnologia popular que permite ao aplicativo acessar a memória compartilhada fornecida por qualquer número de máquinas físicas como um cache global. Os aplicativos que usam muito o banco de dados geralmente usam o MemCache para obter benefícios de desempenho e escalabilidade.
Estas métricas medem a frequência e o tempo de resposta das chamadas ao MemCache para ler e escrever dados do cache. o tempo de resposta deve ser baixo (menos de 5 ms) para uma implantação do MemCache com bom desempenho.
expressão regular
métrica de amostra
nome da legenda
MemCache/.*
MemCache/read
Operações de leitura do MemCache
MemCache/read
MemCache/read
Operações de leitura do MemCache
MemCache/write
MemCache/write
Operações de gravação do MemCache
Mongrel
Esta métrica mede o comprimento da fila do mongrel, que contém solicitações HTTP pendentes para serem processadas pelo mongrel. O gráfico de atividade HTTP sobrepõe o comprimento máximo da fila para um determinado período. O valor será zero se o mongrel estiver processando uma solicitação, mas não tiver outras solicitações aguardando na fila.
Ao observar esse valor em um cluster agregado de vira-latas, os comprimentos de fila de todos os vira-latas são somados, mostrando a soma de todos os comprimentos de fila.
O comprimento de uma fila vira-lata deve ser igual ou próximo de zero; se estiver consistentemente em um nível mais alto, isso indica que seu aplicativo Rails está tendo problemas para acompanhar seus requisitos de carga.
expressão regular
métrica de amostra
nome da legenda
Mongrel/Queue Length
Mongrel/Queue Length
Comprimento da fila
View
ActionView é um pacote em Rails usado para renderizar a saída que é a resposta a uma solicitação http, como uma página html ou um documento xml. O View é renderizado pelo controlador que está processando a solicitação.
Se a métrica View representar uma grande parte do tempo de resposta do seu controlador, isso pode significar que você está realizando muitas operações de banco de dados dentro do próprio modelo de visualização.
Como os dados do tipo de evento podem ter qualquer tipo de par de valores principais anexados a eles, uma forma de reportar a métrica é como um atributo anexado a um evento.
Alguns exemplos disso na New Relic:
Nosso monitoramento de infraestrutura reporta diversas métricas que estão anexadas ao evento. Por exemplo, relatamos um evento ProcessSample , que possui várias métricas baseadas em amostra anexadas a ele, como porcentagem de CPU. Para saber mais sobre dados de monitoramento de infraestrutura, consulte Dados de infraestrutura.
No APM, o evento Transaction possui diversas métricas anexadas, incluindo databaseDuration.
Para saber mais sobre esses dados e como consultá-los, veja evento.
A métrica pode ser formada contando os eventos New Relic ou fazendo algum outro cálculo matemático nesses eventos. Por exemplo, se você quiser medir o número total de eventos Transaction na última meia hora, poderá executar esta consulta NRQL:
Selectcount(*)fromTransaction since 30 minutes ago
Outro exemplo: se você quiser calcular o tempo médio de resposta do seu serviço, poderá executar uma consulta como:
FROMTransactionSELECT average(duration) SINCE 30 minutes ago
Alguns gráficos da New Relic são gerados com esse tipo de consulta. A desvantagem dessa abordagem é que há limites para quantos eventos um sistema de monitoramento (incluindo o nosso) pode relatar. Isto significa que, por vezes, para sistemas de transferência com taxas elevadas, a contagem pode não representar com precisão a atividade total nesse sistema. Para saber mais sobre como isso pode ser resolvido, consulte limites de eventos e amostragem.
Primeiro, explicaremos a definição de events do ponto de vista do setor de monitoramento e, em seguida, explicaremos alguns detalhes sobre como a New Relic lida com dados de eventos.
Evento na indústria de monitoramento
Na indústria de software, evento pode ser pensado simplesmente como “coisas que ocorrem em um sistema”. Por exemplo, a alteração de uma configuração de servidor seria um evento. Outro exemplo: um usuário de um site clicando com o mouse.
Algum evento gerará um registro armazenado, e esse registro normalmente também é chamado de event.
Os dados de eventos representam ocorrências discretas e normalmente terão um alto nível de detalhe, portanto, os dados de eventos são adequados para análises e consultas detalhadas. A desvantagem do uso de dados de eventos é que normalmente há tantos eventos relatados que pode ser difícil consultar esse grande conjunto de dados em intervalos de tempo mais longos.
Evento na New Relic
Na New Relic, reportamos eventos para objetos de dados também chamados events. Estes eventos possuem múltiplos atributo (pares de valor principal) anexados. Os dados de eventos são usados em alguns gráficos e tabelas de interface, e você também pode consultá-los. O tempo que os dados do evento permanecem disponíveis é determinado pelas regras de retenção de dados.
Um exemplo de evento: o APM relata um tipo de evento denominado Transaction, que representa uma unidade lógica de trabalho em um aplicativo. Para ver o atributo anexado a este evento, você poderia usar uma consulta NRQL como:
Select*fromTransaction
Para obter exemplos de consulta de dados de eventos, consulte Introdução ao NRQL.
Outros detalhes sobre os dados do evento New Relic:
Para aumentar a disponibilidade dos dados do seu evento para consulta/gráficos, você pode transformar eventos em métrica.
Alguns sistemas geram um grande número de eventos que excedem os limites de coleta e resultam em resultados de consulta incompletos. Para obter mais informações, consulte amostragem de eventos.
Primeiro, explicaremos a definição de logs do ponto de vista do setor de monitoramento e, em seguida, explicaremos alguns detalhes sobre como a New Relic lida com relatórios log .
Logs na indústria de monitoramento
Um log é uma mensagem sobre um sistema usada para compreender a atividade do sistema e diagnosticar problemas.
Logs em New Relic
Nossos recursos oferecem uma plataforma centralizada que conecta seus dados de registro a outros dados do monitor New Relic. Por exemplo, você pode ver o log junto com os dados do APM.
No New Relic Logs, os dados são relatados com múltiplos atributo (dados de valor principal) anexados. Para consultar seus dados de log, você pode usar uma consulta NRQL como:
Select*from Log
Para relatar dados log personalizados, consulte Log API.
Dados trace
Primeiro, explicaremos a definição de rastreamento do ponto de vista do setor de monitoramento e, em seguida, explicaremos alguns detalhes sobre como a New Relic lida com o rastreamento.
Rastreamento na indústria de monitoramento
No mundo dos aplicativos/monitoramento de infraestrutura, tracing é um termo geral usado para se referir a várias maneiras de relatar informações sobre como um programa ou sistema está operando. Por exemplo, um stack trace fornece informações detalhadas sobre as sub-rotinas de um programa.
Para grandes sistemas modernos, que geralmente são distribuídos por muitos serviços e microsserviços, o “rastreamento” geralmente se refere a distributed tracing, que é uma forma de monitor solicitações à medida que elas se propagam por um ambiente complexo e distribuído.
Rastreamento em New Relic
O New Relic oferece um recursodistributed tracing que rastreia solicitações em sistemas distribuídos e fornece uma interface de usuário dedicada para entender e analisar seu rastreamento. No New Relic, os dados trace são relatados como objetos Span, com vários atributo (pares de valor principal) anexados.
Para consultar seus dados de rastreamento, você pode usar uma consulta NRQL como: