Métricas baseadas em log e pré-agregadas no Application Insights

Este artigo explica a diferença entre as métricas "tradicionais" do Application Insights que são baseadas em logs e as métricas pré-agregadas. Ambos os tipos de métricas estão disponíveis para usuários do Application Insights. Cada um traz um valor exclusivo no monitoramento da integridade do aplicativo, do diagnóstico e da análise. Os desenvolvedores que estão instrumentando os aplicativos podem decidir qual tipo de métrica é mais adequado para um cenário específico. As decisões são baseadas no tamanho do aplicativo, volume esperado de telemetria e requisitos de negócios para precisão e alerta de métricas.

Observação

A documentação a seguir depende da API clássica do Application Insights. O plano de longo prazo do Application Insights é coletar dados usando o OpenTelemetry. Para obter mais informações, confira Habilitar o OpenTelemetry do Azure Monitor para aplicativos .NET, Node.js, Python e Java.

Métricas baseadas em log

No passado, o modelo de dados telemétricos de monitoramento de aplicativos no Application Insights baseava-se exclusivamente em alguns tipos predefinidos de eventos, como solicitações, exceções, chamadas de dependência e exibições de página. Os desenvolvedores podem usar o SDK para emitir esses eventos manualmente por meio da gravação do código que invoca explicitamente o SDK. Ou eles podem contar com a coleção automática de eventos da instrumentação automática. Em ambos os casos, o back-end do Application Insights armazena todos os eventos coletados como logs. Os painéis do Application Insights no portal do Azure funcionam como uma ferramenta de análise e de diagnóstico para visualizar dados baseados em eventos dos logs.

O uso de logs para reter um conjunto completo de eventos pode trazer um excelente valor analítico e de diagnóstico. Por exemplo, você pode obter uma contagem exata de solicitações para determinada URL com o número de usuários distintos que fizeram essas chamadas. Ou você pode obter rastreamentos de diagnóstico detalhados, incluindo exceções e chamadas de dependência para qualquer sessão de usuário. Ter esse tipo de informação pode melhorar a visibilidade da integridade e do uso do aplicativo. Ele também pode reduzir o tempo necessário para diagnosticar problemas com um aplicativo.

Ao mesmo tempo, a coleta de um conjunto completo de eventos pode ser impraticável ou até mesmo impossível para aplicativos que geram um grande volume de telemetria. Para situações em que o volume de eventos é muito alto, o Application Insights implementa várias técnicas de redução de volume de telemetria que reduzem o número de eventos coletados e armazenados. Essas técnicas incluem amostragem e filtragem. Infelizmente, a redução do número de eventos armazenados também reduz a precisão das métricas que, nos bastidores, precisarão executar agregações no momento da consulta dos eventos armazenados nos logs.

Observação

No Application Insights, as métricas que são baseadas na agregação no momento da consulta de eventos e medidas armazenadas nos logs são chamadas de métricas baseadas em log. Essas métricas normalmente têm muitas dimensões das propriedades do evento, o que as torna superiores para análise. A precisão dessas métricas é afetada negativamente pela amostragem e pela filtragem.

Métricas pré-agregadas

Além das métricas baseadas em log, no final de 2018, a equipe do Application Insights enviou uma versão prévia pública das métricas que são armazenadas em um repositório especializado otimizado para série temporal. As novas métricas não são mais mantidas como eventos individuais com muitas propriedades. Em vez disso, elas são armazenadas como séries temporais pré-agregadas e somente com dimensões de chave. Essa alteração torna as novas métricas superiores no momento da consulta. A recuperação de dados ocorre mais rapidamente e requer menos poder de computação. Como resultado, novos cenários são habilitados, como alertas quase em tempo real sobre dimensões de métricas e painéis mais dinâmicos.

Importante

As métricas baseadas em log e pré-agregadas coexistem no Application Insights. Para diferenciar os dois, na experiência do usuário do Application Insights, as métricas pré-agregadas agora são chamadas de métricas Standard (versão prévia). As métricas tradicionais dos eventos foram renomeada para métricas baseadas em log.

Os SDKs mais recentes (SDK do Application Insights 2.7 ou posterior para .NET) pré-agregam as métricas durante a coleta. Esse processo se aplica a métricas Standard enviadas por padrão, portanto, a precisão não é afetada por amostragem ou filtragem. Ele também se aplica a métricas personalizadas enviadas usando GetMetric, o que resulta em menos ingestão de dados e menor custo.

Para os SDKs que não implementam a pré-agregação (ou seja, as versões mais antigas dos SDKs do Application Insights ou para a instrumentação de navegador), o back-end do Application Insights ainda preenche as novas métricas agregando os eventos recebidos pelo ponto de extremidade de coleta de eventos do Application Insights. Embora você não se beneficie do volume reduzido de dados transmitidos pela rede, ainda poderá usar as métricas pré-agregadas e ter um melhor desempenho e o suporte quase em tempo real de alertas dimensionais com SDKs que não pré-agregam métricas durante a coleta.

O ponto de extremidade de coleção pré-agrega eventos antes da amostragem de ingestão. Por esse motivo, a amostragem de ingestão nunca afeta a precisão das métricas pré-agregadas, independentemente da versão do SDK que você usa com seu aplicativo.

Tabela de métricas previamente agregadas com suporte do SDK

SDKs de produção atuais Métricas Standard (pré-agregação do SDK) Métricas personalizadas (sem pré-agregação do SDK) Métricas personalizadas (com pré-agregação do SDK)
.NET Core e .NET Framework Com suporte (V 2.13.1 e superior) Com suporte via TrackMetric Com suporte (V 2.7.2 e posterior) via GetMetric
Java Sem suporte Com suporte via TrackMetric Sem suporte
Node.js Com suporte (V2.0.0 e superior) Com suporte via TrackMetric Sem suporte
Python Sem suporte Com suporte Suporte parcial via OpenCensus.stats

Observação

A implementação de métricas de Python usando OpenCensus.stats é diferente da de GetMetric. Para obter mais informações, confira a documentação do Python sobre métricas.

Tabela de métricas previamente agregadas sem código com suporte

SDKs de produção atuais Métricas Standard (pré-agregação do SDK) Métricas personalizadas (sem pré-agregação do SDK) Métricas personalizadas (com pré-agregação do SDK)
ASP.NET Com suporte 1 Sem suporte Sem suporte
ASP.NET Core Com suporte 2 Sem suporte Sem suporte
Java Sem suporte Sem suporte Com suporte
Node.js Sem suporte Sem suporte Sem suporte
  1. A anexação sem código do ASP.NET em máquinas virtuais/conjuntos de dimensionamento de máquinas virtuais e no local emite métricas padrão sem dimensões. O mesmo vale para o Serviço de Aplicativo do Azure, mas o nível de coleta deve ser definido como recomendado. O SDK é necessário para todas as dimensões.
  2. A anexação sem código do ASP.NET Core no Serviço de Aplicativo emite métricas padrão sem dimensões. O SDK é necessário para todas as dimensões.

Usar a pré-agregação com métricas personalizadas do Application Insights

Você pode usar a pré-agregação com métricas personalizadas. Os dois principais benefícios são:

  • A capacidade de configurar e alertar em uma dimensão de uma métrica personalizada
  • Reduzir o volume de dados enviados do SDK para o ponto de extremidade da coleção do Application Insights

Existem várias maneiras de enviar métricas personalizadas do SDK do Application Insights. Se sua versão do SDK oferecer GetMetric e TrackValue, esses métodos serão a maneira preferencial de enviar métricas personalizadas. Nesse caso, a pré-agregação ocorre dentro do SDK. Essa abordagem reduz o volume de dados armazenados no Azure e também o volume de dados transmitidos do SDK para o Application Insights. Caso contrário, utilize o método trackMetric, que pré-agrupa os eventos de métrica durante a ingestão de dados.

Dimensões de métricas personalizadas e pré-agregação

Todas as métricas que você envia usando OpenTelemetry, trackMetric ou as chamadas à API GetMetric e TrackValue são automaticamente armazenadas em repositórios tanto de logs quanto de métricas. Essas métricas podem ser encontradas na tabela customMetrics no Application Insights e no Metrics Explorer do Namespace de Métricas Personalizadas chamado "azure.applicationinsights". Embora a versão baseada em log da métrica personalizada sempre retenha todas as dimensões, a versão pré-agregada da métrica é armazenada por padrão sem dimensões. Manter dimensões de métricas personalizadas é uma versão prévia do recurso que pode ser ativada na guia Uso e custo estimado selecionando Com dimensões em Enviar métricas personalizadas para o Repositório de Métricas do Azure.

Screenshot that shows usage and estimated costs.

Cotas

As métricas pré-agregadas são armazenadas como séries temporais no Azure Monitor. As cotas do Azure Monitor em métricas personalizadas se aplicam.

Observação

Ultrapassar a cota pode ter consequências indesejadas. O Azure Monitor pode se tornar não confiável na assinatura ou região. Para saber como evitar exceder a cota, veja Limitações e considerações de design.

Por que a coleta de dimensões de métricas personalizadas está desativada por padrão?

A coleta de dimensões de métricas personalizadas está desativada por padrão porque, no futuro, o armazenamento de métricas personalizadas com dimensões será cobrado separadamente do Application Insights. O armazenamento das métricas personalizadas não dimensionais permanece gratuito (até uma cota). Saiba mais sobre as futuras alterações do modelo de preços em nossa página de preços oficial.

Crie gráficos e explore métricas baseadas em log e pré-agregadas padrão

Use o Explorador de métricas do Azure Monitor para plotar gráficos de métricas pré-agregadas e baseadas em log e para criar painéis com gráficos. Depois de selecionar o recurso do Application Insights desejado, use o seletor de namespace para alternar entre as métricas Standard (versão prévia) e baseadas em log. Você também pode selecionar um namespace de métrica personalizado.

Screenshot that shows Metric namespace.

Modelos de preços das métricas do Application Insights

A ingestão de métricas no Application Insights, seja com base em log ou agregada, gera custos com base no tamanho dos dados ingeridos. Para saber mais, confira Detalhes de preço dos Logs do Azure Monitor. Suas métricas personalizadas, incluindo todas as suas dimensões, são sempre armazenadas no repositório de logs do Application Insights. Além disso, uma versão pré-agregada de suas métricas personalizadas sem dimensões é encaminhada para o repositório de métricas por padrão.

A seleção da opção Habilitar alerta em dimensões de métricas personalizadas para armazenar todas as dimensões das métricas pré-agregadas no repositório de métricas pode gerar custos extras com base nos preços das métricas personalizadas.

Próximas etapas