Compartilhar via


Métricas no Application Insights

O Application Insights dá suporte a três tipos diferentes de métricas: métricas padrão (pré-configuradas), baseadas em log e personalizadas. 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 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. Este artigo explica a diferença entre todos os tipos de métricas com suporte.

Métricas padrão

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 aplicativo sem a necessidade de nenhuma configuração adicional. As métricas padrão são pré-configuradas durante a coleção e armazenadas como uma série temporal em um repositório especializado com apenas dimensões de chave, o que lhes dá melhor desempenho em tempo de consulta. Isso torna as métricas padrão a melhor opção para alertas quase em tempo real sobre dimensões de métricas e painéis mais responsivos.

Métricas baseadas em log

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 aplicativo. Os logs subjacentes não são pré-configurados no tempo de coleta ou armazenamento e retêm todas as propriedades de cada entrada de log. Essa retenção possibilita o uso de propriedades de log como dimensões em métricas baseadas em log no momento da consulta para filtragem de gráfico de métricas e divisão de métricas, dando às métricas baseadas em log um valor de diagnóstico e análise superior. No entanto, técnicas de redução de volume de telemetria, como amostragem e filtragem de telemetria, comumente usadas com aplicativos de monitoramento que geram grandes volumes de telemetria, afetam a quantidade das entradas de log coletadas e, portanto, reduzem a precisão das métricas baseadas em log.

Métricas personalizadas (versão prévia)

As métricas personalizadas no Application Insights permitem que você defina e acompanhe medidas 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 fornecem a flexibilidade para monitorar qualquer aspecto do aplicativo que não seja coberto pelas métricas padrão, permitindo que você obtenha informações mais profundas sobre o comportamento e o desempenho do aplicativo.

Para obter mais informações, consulte métricas personalizadas no Azure Monitor (versão prévia).

Observação

O Application Insights também fornece um recurso chamado fluxo de métricas dinâmicas, que permite o monitoramento quase em tempo real de seus aplicativos Web e não armazena nenhum dado de telemetria.

Comparação de métricas

Recurso Métricas padrão Métricas baseadas em log Métricas personalizadas
Fonte de dados Dados de série temporal pré-configurados coletados durante o runtime. Derivado de dados de log usando consultas Kusto. Métricas definidas pelo usuário coletadas por meio do SDK ou da 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.
Precisão Alta, não afetada pela amostragem de log. Pode ser afetado pela amostragem e filtragem. Alta precisão, especialmente ao usar métodos pré-configurados como GetMetric.
Custo Incluído nos preços do Application Insights. Com base nos custos de consulta e ingestão de dados de log. Consulte o modelo de preços e a retenção.
Configuration 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 a implementação e a configuração personalizadas no código.
Desempenho de consulta Rápido, devido à pré-agregação. Mais lento, pois envolve a consulta de dados de log. Depende da complexidade do volume de dados e da consulta.
Armazenamento Armazenados como dados de série temporal no repositório de métricas do Azure Monitor. Armazenados como logs no workspace do Log Analytics. Armazenado no Log Analytics e no repositório de métricas do Azure Monitor.
Alertas Dá suporte a 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 do serviço Sujeito aos limites do Application Insights. Sujeito aos limites do espaço de trabalho do Log Analytics. Limitado pela cota de métricas gratuitas e pelo custo de dimensões adicionais.
Casos de uso Monitoramento em tempo real, painéis de desempenho e insights rápidos. Diagnóstico detalhado, solução de problemas e análise detalhada. Indicadores de desempenho personalizados e métricas específicas para os negócios.
Exemplos Uso da CPU, uso de memória, duração da solicitação. Contagens de solicitação, rastreamentos de exceção, chamadas de dependência. Métricas personalizadas específicas do aplicativo, como envolvimento do usuário, usos de recursos.

Pré-agregação de métricas

Os SDKs do OpenTelemetry e as métricas de pré-configuração de SDKs do Application Insights (API Clássica) mais recentes 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 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 a API OpenTelemetry ou GetMetric e TrackValue, o que resulta em menos ingestão de dados e menor custo. Se a sua versão do SDK do Application Insights der suporte a GetMetric e TrackValue, será o método preferencial de envio de métricas personalizadas.

Para SDKs que não implementam a pré-agregaçã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 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 do canal de telemetria pré-configura 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 usada com seu aplicativo.

A lista de tabelas a seguir em que a pré-agregação é pré-configurada.

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
Nativo do Java 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 (Navegador) 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

Cuidado

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, a instrumentação manual é necessária.

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 Sem suporte
ASP.NET SDK 2 Sem suporte
Java SDK Com suporte 3
Node.js SDK Sem suporte
Python SDK Sem suporte

Notas de rodapé

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

Todas as métricas enviadas usando as chamadas à API OpenTelemetry, trackMetricou 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 no Namespace de Métrica Personalizada 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.

Captura de tela que mostra o uso e os custos estimados.

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 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). Saiba mais sobre as futuras alterações do modelo de preços em nossa página de preços oficial.

Criar gráficos e explorar métricas

Use o gerenciador de métricas do Azure Monitor para plotar gráficos de métricas pré-configuradas, baseadas em log e personalizadas e criar dashboards com gráficos. Depois de selecionar o recurso do Application Insights desejado, use o seletor de namespace para alternar entre as métricas.

Captura de tela que mostra o namespace da Métrica.

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.

Métricas disponíveis

As seções a seguir listam métricas com agregações e dimensões com suporte. Os detalhes sobre as 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 aplicativo Web conforme observado em pontos em todo o mundo. Configure os testes de disponibilidade para começar a usar qualquer métrica dessa categoria.

Disponibilidade (availabilityResults/availabilityPercentage)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Percentual Avg Run location, Test name

Duração do teste de disponibilidade (availabilityResults/duration)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Run location, Test name, Test result

Testes de disponibilidade (availabilityResults/count)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem Contagem Run location, Test name, Test result

Métricas do navegador

As métricas do navegador são coletadas pelo SDK do JavaScript do Application Insights de navegadores de usuários finais reais. Elas fornecem ótimos insights sobre a experiência dos usuários com o aplicativo Web. As métricas do navegador normalmente não são amostradas, o que significa que 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.

Observação

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

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

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Nenhum

Tempo de processamento do cliente (browserTiming/processingDuration)

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Nenhum

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

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Nenhum

Tempo de resposta de recebimento (browserTimings/receiveDuration)

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Nenhum

Hora da solicitação de envio (browserTimings/sendDuration)

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Nenhum

Métricas de falha

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

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

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

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem Contagem Cloud role name

Falhas de chamada de dependência (dependencies/failed)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem Count 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 Exceções mostra o número de exceções registradas.

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem Contagem Cloud role instance, Cloud role name, Device type

Solicitações com falha (solicitações/falha)

A contagem de solicitações de servidor rastreadas que foram marcadas como com falha. Por padrão, o SDK do Application Insights marca automaticamente cada solicitação do servidor que retornou o código de resposta HTTP 5xx ou 4xx como uma solicitação com falha. É possível 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 com suporte Dimensões com suporte
Contagem Contagem Cloud role instance, Cloud role name, Is synthetic traffic, Request performance, Result code

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

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

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem Contagem Cloud role instance, Cloud role name

Contadores de desempenho

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

Memória disponível (performanceCounters/availableMemory)

Unidade de medida Agregações com suporte Dimensões com suporte
Megabytes/Gigabytes (dependentes de dados) Avg, Max, Min Cloud role instance

Taxa de exceção (performanceCounters/exceptionRate)

Unidade de medida Agregações com suporte Dimensões com suporte
Count Avg, Max, Min Cloud role instance

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

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Cloud role instance

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

Unidade de medida Agregações com suporte Dimensões com suporte
Solicitações por segundo Avg, Max, Min Cloud role instance

Solicitações HTTP na fila do aplicativo (performanceCounters/requestsInQueue)

Unidade de medida Agregações com suporte Dimensões com suporte
Count Avg, Max, Min Cloud role instance

CPU do processo (performanceCounters/processCpuPercentage)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Percentual Avg, Max, Min Cloud role instance

Observação

O intervalo da métrica está entre 0 e 100 * n, em que n é o número de núcleos de CPU disponíveis. Por exemplo, o valor de métrica de 200% pode representar a utilização completa de dois núcleos de CPU ou metade da utilização de 4 núcleos de CPU, e assim por diante. A CPU do Processo Normalizada é 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. Portanto, o intervalo da métrica CPU do Processo Normalizada é de 0 a 100.

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

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

Bytes privados do processo (performanceCounters/processPrivateBytes)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Bytes Média, Mínimo, 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 com suporte Dimensões com suporte
Percentual Média, Mínimo, Máximo Cloud role instance

Observação

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

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 com suporte Dimensões com suporte
Contagem Contagem Cloud role instance, Cloud role name, Dependency performance, Dependency type, Is traffic synthetic, Result code, Successful call, Target of a dependency call

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

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

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Cloud role instance, Cloud role name, Dependency performance, Dependency type, Is traffic synthetic, Result code, Successful call, Target of a dependency call

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

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

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem por segundo Avg 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 com suporte Dimensões com suporte
Contagem Contagem Cloud role instance, Cloud role name, Is traffic synthetic, Request performance Result code, Successful request

Tempo de resposta do servidor (solicitações/duração)

Essa métrica reflete o tempo necessário para que os servidores processem as solicitações de entrada.

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Cloud role instance, Cloud role name, Is traffic synthetic, Request performance Result code, Successful request

Métricas de uso

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

Essa métrica se refere à quantidade de tempo que levou para os eventos de PageView serem carregados.

Unidade de medida Agregações com suporte Dimensões com suporte
Milissegundos Avg, Max, Min Cloud role name, Is traffic synthetic

Exibições de página (pageViews/contagem)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem Contagem Cloud role name, Is traffic synthetic

Rastreamentos (rastreamentos/contagem)

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

Unidade de medida Agregações com suporte Dimensões com suporte
Contagem Contagem Cloud role instance, Cloud role name, Is traffic synthetic, Severity level

Métricas personalizadas

Não aplicável às métricas padrão.

Acessar 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 opcional ai.include-query-payload que, quando adicionado a uma cadeia de caracteres de consulta, solicita que a API retorne não apenas os dados da série temporal, mas também a instrução KQL (Kusto Query Language) usada para buscá-la. Esse parâmetro pode ser particularmente benéfico para os usuários que visam 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 KQL.

Observação

Para recuperar a consulta de logs subjacente, DEMO_APP e DEMO_KEY não precisar ser substituída. Se você quiser apenas recuperar a instrução KQL e não os dados de série temporal do seu próprio aplicativo, poderá copiá-la e colá-la 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

Veja a seguir um exemplo de uma instrução KQL de retorno para a métrica "Usuários Autenticados". (Neste exemplo, "users/authenticated" está a 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óximas etapas