Partilhar via


Métricas no Application Insights

O Application Insights oferece suporte a três tipos diferentes de métricas: padrão (pré-agregada), baseada em log e personalizada. Cada um deles traz um valor exclusivo no monitoramento da integridade do aplicativo, diagnósticos e análises. Os desenvolvedores que estão instrumentando 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, no volume esperado de telemetria e nos requisitos de negócios para precisão de métricas e alertas. Este artigo explica a diferença entre todos os tipos de métricas suportados.

Métricas standard

As métricas padrão no Application Insights são métricas predefinidas que são coletadas e monitoradas automaticamente pelo serviço. Essas métricas abrangem uma ampla gama de indicadores de desempenho e uso, como uso da CPU, consumo de memória, taxas de solicitação e tempos de resposta. As métricas padrão fornecem uma visão geral abrangente da integridade e do desempenho do seu aplicativo sem a necessidade de qualquer configuração adicional. As métricas padrão são pré-agregadas durante a coleta e armazenadas como uma série temporal em um repositório especializado com apenas dimensões-chave, o que lhes proporciona um melhor desempenho no momento da consulta. Isso torna as métricas padrão a melhor escolha para alertas quase em tempo real sobre dimensões de métricas e painéis mais responsivos.

Métricas baseadas no registo

As métricas baseadas em log no Application Insights são um conceito de tempo de consulta, representado como uma série temporal sobre os dados de log do seu aplicativo. Os logs subjacentes não são pré-agregados no momento da coleta ou armazenamento e retêm todas as propriedades de cada entrada de log. Essa retenção torna possível usar propriedades de log como dimensões em métricas baseadas em log no momento da consulta para filtragem de gráficos de métricas e divisão de métricas, dando às métricas baseadas em log um valor analítico e de diagnóstico superior. No entanto, as técnicas de redução de volume de telemetria, como amostragem e filtragem por telemetria, comumente usadas com aplicativos de monitoramento que geram grandes volumes de telemetria, afetam a quantidade de entradas de log coletadas e, portanto, reduzem a precisão das métricas baseadas em log.

Métricas personalizadas (visualização)

As métricas personalizadas no Application Insights permitem que você defina e acompanhe medições específicas que são exclusivas do seu aplicativo. Essas métricas podem ser criadas instrumentando seu código para enviar dados de telemetria personalizados para o Application Insights. As métricas personalizadas oferecem a flexibilidade de monitorar qualquer aspeto do seu aplicativo que não seja coberto por métricas padrão, permitindo que você obtenha informações mais detalhadas sobre o comportamento e o desempenho do seu aplicativo.

Para obter mais informações, consulte Métricas personalizadas no Azure Monitor (visualização).

Nota

O Application Insights também fornece um recurso chamado fluxo de métricas ao vivo, que permite o monitoramento quase em tempo real de seus aplicativos Web e não armazena dados de telemetria.

Comparação de métricas

Caraterística Métricas standard Métricas baseadas no registo Métricas personalizadas
Origem de dados Dados pré-agregados de séries cronológicas recolhidos durante o tempo de execução. Derivado de dados de log usando consultas Kusto. Métricas definidas pelo usuário coletadas por meio do SDK ou API do Application Insights.
Granularidade Intervalos fixos (1 minuto). Depende da granularidade dos próprios dados de log. Granularidade flexível com base em métricas definidas pelo usuário.
Exatidão Alto, não afetado pela amostragem de log. Pode ser afetado pela amostragem e filtragem. Alta precisão, especialmente ao usar métodos pré-agregados como GetMetric.
Custo Incluído nos preços do Application Insights. Com base na ingestão de dados de log e custos de consulta. Consulte Modelo de preços e retenção.
Configuração Disponível automaticamente com configuração mínima. Exigir a configuração de consultas de log para extrair as métricas desejadas dos dados de log. Requer implementação e configuração personalizadas no código.
Desempenho das consultas Rápido, devido à pré-agregação. Mais lento, pois envolve a consulta de dados de log. Depende do volume de dados e da complexidade da consulta.
Armazenamento Armazenados como dados de séries cronológicas no repositório de métricas do Azure Monitor. Armazenados como logs no espaço de trabalho do Log Analytics. Armazenado no Log Analytics e no repositório de métricas do Azure Monitor.
Alertas Suporta alertas em tempo real. Permite cenários de alerta complexos com base em dados de log detalhados. Alertas flexíveis com base em métricas definidas pelo usuário.
Limite de serviço Sujeito aos limites do Application Insights. Sujeito aos limites do espaço de trabalho do Log Analytics. Limitado pela quota para métricas gratuitas e pelo custo para dimensões adicionais.
Casos de utilização Monitoramento em tempo real, painéis de desempenho e insights rápidos. Diagnósticos detalhados, solução de problemas e análise aprofundada. Indicadores de desempenho personalizados e métricas específicas do negócio.
Exemplos Uso da CPU, uso da memória, duração da solicitação. Contagens de solicitações, rastreamentos de exceções, chamadas de dependência. Métricas personalizadas específicas do aplicativo, como envolvimento do usuário, uso de recursos.

Pré-agregação de métricas

Os SDKs OpenTelemetry e os SDKs mais recentes do Application Insights (API clássica) pré-agregam métricas durante a coleta para reduzir o volume de dados enviados do SDK para o ponto de extremidade do canal de telemetria. Esse processo se aplica a métricas padrão enviadas por padrão, portanto, a precisão não é afetada pela amostragem ou filtragem. Ele também se aplica a métricas personalizadas enviadas usando a API OpenTelemetry ou GetMetric e TrackValue, o que resulta em menos ingestão de dados e menor custo. Se sua versão do SDK do Application Insights oferecer suporte a GetMetric e TrackValue, esse é o método preferido de envio de métricas personalizadas.

Para SDKs que não implementam preagregação (ou seja, versões mais antigas de SDKs do Application Insights ou para instrumentação de navegador), o back-end do Application Insights ainda preenche as novas métricas agregando os eventos recebidos pelo ponto de extremidade do canal de telemetria do Application Insights. Para métricas personalizadas, você pode usar o método trackMetric . Embora você não se beneficie do volume reduzido de dados transmitidos por fio, ainda pode usar as métricas pré-agregadas e experimentar um melhor desempenho e suporte ao alerta dimensional quase em tempo real com SDKs que não pré-agregam métricas durante a coleta.

O ponto de extremidade do canal de telemetria 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.

As tabelas a seguir listam onde a pré-agregação é pré-agregada.

Pré-agregação de métricas com o Azure Monitor OpenTelemetry Distro

SDK de produção atual Pré-agregação de métricas padrão Pré-agregação de métricas personalizadas
ASP.NET Core SDK SDK via API OpenTelemetry
.NET (via Exportador) SDK SDK via API OpenTelemetry
Java (3.x) SDK SDK via API OpenTelemetry
Java nativo SDK SDK via API OpenTelemetry
Node.js SDK SDK via API OpenTelemetry
Python SDK SDK via API OpenTelemetry

Pré-agregação de métricas com o SDK do Application Insights (API clássica)

SDK de produção atual Pré-agregação de métricas padrão Pré-agregação de métricas personalizadas
.NET Core e .NET Framework SDK (v2.13.1+) SDK (V2.7.2+) via GetMetric
Ponto de extremidade do canal de telemetria via TrackMetric
Java (2.x) Ponto de extremidade do canal de telemetria Ponto de extremidade do canal de telemetria via TrackMetric
JavaScript (Browser) Ponto de extremidade do canal de telemetria Ponto de extremidade do canal de telemetria via TrackMetric
Node.js Ponto de extremidade do canal de telemetria Ponto de extremidade do canal de telemetria via TrackMetric
Python Ponto de extremidade do canal de telemetria SDK via OpenCensus.stats (desativado)
Ponto de extremidade do canal de telemetria via TrackMetric

Atenção

Pré-agregação de métricas com autoinstrumentação

Com a autoinstrumentação, o SDK é adicionado automaticamente ao código do aplicativo e não pode ser personalizado. Para métricas personalizadas, é necessária instrumentação manual.

SDK de produção atual Pré-agregação de métricas padrão Pré-agregação de métricas personalizadas
ASP.NET Core SDK 1 Não suportado
ASP.NET SDK 2 Não suportado
Java SDK Suportado 3
Node.js SDK Não suportado
Python SDK Não suportado

Notas de rodapé

Métricas personalizadas, dimensões e pré-agregação

Todas as métricas enviadas usando OpenTelemetry, trackMétric, ou chamadas de API GetMetric e TrackValue são armazenadas automaticamente no repositório de métricas e nos logs. Essas métricas podem ser encontradas na tabela customMetrics no Application Insights e no Metrics Explorer sob o namespace de métrica personalizada chamado azure.applicationinsights. Embora a versão baseada em log da métrica personalizada sempre mantenha todas as dimensões, a versão pré-agregada da métrica é armazenada por padrão sem dimensões. A retenção de dimensões de métricas personalizadas é um recurso de visualização que pode ser ativado na guia Uso e custo estimado selecionando Com dimensões em Enviar métricas personalizadas para o Azure Metric Store.

Captura de ecrã que mostra a utilização e os custos estimados.

Quotas

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

Nota

Ultrapassar a quota pode ter consequências indesejadas. O Azure Monitor pode tornar-se pouco fiável na sua subscrição ou região. Para saber como evitar exceder a cota, consulte Limitações e considerações de design.

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

A coleção de dimensões de métricas personalizadas é 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). Você pode saber mais sobre as próximas mudanças no modelo de preços em nossa página oficial de preços.

Crie gráficos e explore métricas

Use o explorador de métricas do Azure Monitor para plotar gráficos de métricas pré-agregadas, baseadas em log e personalizadas, 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 métricas.

Captura de tela que mostra o namespace Metric .

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

A ingestão de métricas no Application Insights, seja baseada em log ou pré-agregada, gera custos com base no tamanho dos dados ingeridos. Para obter mais informações, consulte Detalhes de preços 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.

Selecionar a opção Ativar alertas em dimensões 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.

Métricas disponíveis

As seções a seguir listam métricas com agregações e dimensões suportadas. Os detalhes sobre métricas baseadas em log incluem as instruções de consulta Kusto subjacentes.

Métricas de disponibilidade

As métricas na categoria Disponibilidade permitem que você veja a integridade do seu aplicativo Web conforme observado em pontos ao redor do mundo. Configure os testes de disponibilidade para começar a usar quaisquer métricas dessa categoria.

Disponibilidade (disponibilidadeResultados/percentagemidadede disponibilidade)

A métrica Disponibilidade mostra a porcentagem de execuções de teste da Web que não detetaram nenhum problema. O menor valor possível é 0, o que indica que todas as execuções de teste da Web falharam. O valor de 100 significa que todas as execuções de teste da Web passaram pelos critérios de validação.

Unidade de medida Agregações suportadas Dimensões suportadas
Percentagem Média Run location, Test name

Duração do teste de disponibilidade (disponibilidadeResultados/duração)

A métrica Duração do teste de disponibilidade mostra quanto tempo levou para a execução do teste da Web. Para os testes da Web de várias etapas, a métrica reflete o tempo total de execução de todas as etapas.

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Run location, Test name, Test result

Testes de disponibilidade (availabilityResults/count)

A métrica Testes de disponibilidade reflete a contagem dos testes da Web executados pelo Azure Monitor.

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Run location, Test name, Test result

Métricas do navegador

As métricas do navegador são coletadas pelo SDK JavaScript do Application Insights a partir de navegadores reais do usuário final. Eles fornecem ótimas informações sobre a experiência dos usuários com seu aplicativo Web. As métricas do navegador normalmente não são amostradas, o que significa que elas fornecem maior precisão dos números de uso em comparação com as métricas do lado do servidor, que podem ser distorcidas pela amostragem.

Nota

Para coletar métricas do navegador, seu aplicativo deve ser instrumentado com o SDK JavaScript do Application Insights.

Tempo de carregamento da página do navegador (browserTimings/totalDuration)

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Nenhuma

Tempo de processamento do cliente (browserTiming/processingDuration)

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Nenhuma

Tempo de conexão de rede de carregamento de página (browserTimings/networkDuration)

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Nenhuma

Tempo de resposta de recebimento (browserTimings/receiveDuration)

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Nenhuma

Tempo de solicitação de envio (browserTimings/sendDuration)

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Nenhuma

Métricas das falhas

As métricas em Falhas mostram problemas com o processamento de solicitações, chamadas de dependência e exceções lançadas.

Exceções do navegador (exceções/navegador)

Essa métrica reflete o número de exceções lançadas do código do aplicativo em execução no navegador. Apenas as exceções que são rastreadas com uma trackException() chamada de API do Application Insights são incluídas na métrica.

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role name

Falhas de chamada de dependência (dependências/falha)

O número de chamadas de dependência com falha.

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role instance, Cloud role name, Dependency performance, Dependency type, Is traffic synthetic, Result code, Target of dependency call

Exceções (exceções/contagem)

Sempre que você registra uma exceção no Application Insights, há uma chamada para o método trackException() do SDK. A métrica Exceptions mostra o número de exceções registradas.

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role instance, Cloud role name, Device type

Pedidos falhados (pedidos/falhas)

A contagem de solicitações de servidor rastreadas que foram marcadas como falha. Por padrão, o SDK do Application Insights marca automaticamente cada solicitação de servidor que retornou o código de resposta HTTP 5xx ou 4xx como uma solicitação com falha. Você pode personalizar essa lógica modificando a propriedade success do item de telemetria de solicitação em um inicializador de telemetria personalizado.

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role instance, Cloud role name, Is synthetic traffic, Request performance, Result code

Exceções do servidor (exceções/servidor)

Essa métrica mostra o número de exceções do servidor.

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role instance, Cloud role name

Contadores de desempenho

Use métricas na categoria Contadores de desempenho para acessar contadores de desempenho do sistema coletados pelo Application Insights.

Memória disponível (performanceCounters/availableMemory)

Unidade de medida Agregações suportadas Dimensões suportadas
Megabytes / Gigabytes (dependente de dados) Preço médio, máximo, mínimo Cloud role instance

Taxa de exceção (performanceCounters/exceptionRate)

Unidade de medida Agregações suportadas Dimensões suportadas
Count Preço médio, máximo, mínimo Cloud role instance

Tempo de execução da solicitação HTTP (performanceCounters/requestExecutionTime)

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Cloud role instance

Taxa de solicitação HTTP (performanceCounters/requestsPerSecond)

Unidade de medida Agregações suportadas Dimensões suportadas
Pedidos por segundo Preço médio, máximo, mínimo Cloud role instance

Solicitações HTTP na fila de aplicativos (performanceCounters/requestsInQueue)

Unidade de medida Agregações suportadas Dimensões suportadas
Count Preço médio, máximo, mínimo Cloud role instance

CPU de processo (performanceCounters/processCpuPercentage)

A métrica mostra quanto da capacidade total do processador é consumida pelo processo que está hospedando seu aplicativo monitorado.

Unidade de medida Agregações suportadas Dimensões suportadas
Percentagem Preço médio, máximo, mínimo Cloud role instance

Nota

O intervalo da métrica está entre 0 e 100 * n, onde n é o número de núcleos de CPU disponíveis. Por exemplo, o valor métrico de 200% pode representar a utilização total de dois núcleos de CPU ou metade da utilização de 4 núcleos de CPU e assim por diante. O Process CPU Normalized é uma métrica alternativa coletada por muitos SDKs que representa o mesmo valor, mas o divide pelo número de núcleos de CPU disponíveis. Assim, o intervalo da métrica Process CPU Normalized é de 0 a 100.

Taxa de E/S do processo (performanceCounters/processIOBytesPerSecond)

Unidade de medida Agregações suportadas Dimensões suportadas
Bytes por segundo Média, Mín, Máximo Cloud role instance

Processar bytes privados (performanceCounters/processPrivateBytes)

Quantidade de memória não compartilhada que o processo monitorado alocado para seus dados.

Unidade de medida Agregações suportadas Dimensões suportadas
Bytes Média, Mín, Máximo Cloud role instance

Tempo do processador (performanceCounters/processorCpuPercentage)

Consumo de CPU por todos os processos em execução na instância do servidor monitorado.

Unidade de medida Agregações suportadas Dimensões suportadas
Percentagem Média, Mín, Máximo Cloud role instance

Nota

A métrica de tempo do processador não está disponível para os aplicativos hospedados nos Serviços de Aplicativo do Azure. Use a métrica Process CPU para controlar a utilização da CPU dos aplicativos Web hospedados nos Serviços de Aplicativo.

Métricas do servidor

Chamadas de dependência (dependências/contagem)

Essa métrica é em relação ao número de chamadas de dependência.

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role instance, Cloud role name, , Dependency performance, Is traffic syntheticDependency type, Result code, Successful call,Target of a dependency call

Duração da dependência (dependências/duração)

Esta métrica refere-se à duração das chamadas de dependência.

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Cloud role instance, Cloud role name, , Dependency performance, Is traffic syntheticDependency type, Result code, Successful call,Target of a dependency call

Taxa de solicitação do servidor (solicitações/taxa)

Essa métrica reflete o número de solicitações de servidor de entrada que foram recebidas pelo seu aplicativo Web.

Unidade de medida Agregações suportadas Dimensões suportadas
Contagem por segundo Média Cloud role instance, Cloud role name, Is traffic synthetic, Request performance Result code, Successful request

Solicitações do servidor (solicitações/contagem)

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role instance, Cloud role name, Is traffic synthetic, Request performance Result code, Successful request

Tempo de resposta do servidor (pedidos/duração)

Essa métrica reflete o tempo que os servidores levaram para processar solicitações de entrada.

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Cloud role instance, Cloud role name, Is traffic synthetic, Request performance Result code, Successful request

Métricas de utilização

Tempo de carregamento da vista de página (pageViews/duração)

Essa métrica refere-se à quantidade de tempo que os eventos PageView levaram para carregar.

Unidade de medida Agregações suportadas Dimensões suportadas
Milissegundos Preço médio, máximo, mínimo Cloud role name, Is traffic synthetic

Visualizações de página (pageViews/count)

A contagem de eventos PageView registrados com a API do Application Insights TrackPageView().

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role name, Is traffic synthetic

Vestígios (vestígios/contagem)

A contagem de instruções de rastreamento registradas com a chamada da API do Application Insights TrackTrace().

Unidade de medida Agregações suportadas Dimensões suportadas
de palavras de palavras Cloud role instance, Cloud role name, Is traffic synthetic, Severity level

Métricas personalizadas

Não aplicável a métricas padrão.

Acesse métricas baseadas em log diretamente com a API REST do Application Insights

A API REST do Application Insights permite a recuperação programática de métricas baseadas em log. Ele também apresenta um parâmetro ai.include-query-payload opcional que, quando adicionado a uma cadeia de caracteres de consulta, solicita que a API retorne não apenas os dados de séries temporais, mas também a instrução KQL (Kusto Query Language) usada para buscá-los. Esse parâmetro pode ser particularmente benéfico para usuários que pretendem compreender a conexão entre eventos brutos no Log Analytics e a métrica baseada em log resultante.

Para acessar seus dados diretamente, passe o parâmetro ai.include-query-payload para a API do Application Insights em uma consulta usando o KQL.

Nota

Para recuperar a consulta DEMO_APP de logs subjacente e DEMO_KEYnão precisa substituí-la. Se você quiser apenas recuperar a instrução KQL e não os dados de séries temporais do seu próprio aplicativo, você pode copiá-lo e colá-lo diretamente na barra de pesquisa do navegador.

api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload

A seguir está um exemplo de uma instrução KQL de retorno para a métrica "Usuários autenticados". (Neste exemplo, "users/authenticated" é o ID da métrica.)

output
{
    "value": {
        "start": "2024-06-21T09:14:25.450Z",
        "end": "2024-06-21T21:14:25.450Z",
        "users/authenticated": {
            "unique": 0
        }
    },
    "@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}

Próximos passos