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.
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.
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
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.
3 O agente Java usado com a autoinstrumentação captura métricas emitidas por bibliotecas populares e as envia para o Application Insights como métricas personalizadas.
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.
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.
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.
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.
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. Por conveniência, cada consulta usa padrões para granularidade de tempo, tipo de gráfico e, às vezes, dimensão de divisão, o que simplifica o uso da consulta no Log Analytics sem qualquer necessidade de modificação.
Quando você plota a mesma métrica no explorador de métricas, não há padrões - a consulta é ajustada dinamicamente com base nas configurações do gráfico:
O intervalo de tempo selecionado é traduzido em uma cláusula adicional where timestamp... para escolher apenas os eventos do intervalo de tempo selecionado. Por exemplo, um gráfico mostrando dados para as 24 horas mais recentes, a consulta inclui | where timestamp > ago(24 h).
A granularidade de tempo selecionada é colocada na cláusula finalsummarize ... by bin(timestamp, [time grain]).
Todas as dimensões de Filtro selecionadas são convertidas em cláusulas adicionaiswhere.
A dimensão do gráfico dividido selecionada é convertida em uma propriedade de resumo extra. Por exemplo, se você dividir o gráfico por locatione plotar usando uma granularidade de tempo de 5 minutos, a summarize cláusula será resumida ... by bin(timestamp, 5 m), location.
Nota
Se você é novo na linguagem de consulta Kusto, comece copiando e colando instruções Kusto no painel de consulta do Log Analytics sem fazer modificações. Clique em Executar para ver o gráfico básico. À medida que você começa a entender a sintaxe da linguagem de consulta, você pode começar a fazer pequenas modificações e ver o impacto da sua alteração. Explorar seus próprios dados é uma ótima maneira de começar a perceber todo o poder do Log Analytics e do Azure Monitor.
Importante
Para as seguintes métricas baseadas em log, se várias agregações forem suportadas, a agregação em itálico será usada no exemplo de consulta Kusto.
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.
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.
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.
Duração do teste (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.
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 processamento do cliente (browserTiming/processingDuration)
Tempo entre o recebimento do último byte de um documento até que o DOM seja carregado. As solicitações assíncronas ainda podem estar sendo processadas.
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
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.
Nota
Ao usar a amostragem, o itemCount indica quantos itens de telemetria um único registro de log representa. Por exemplo, com 25% de amostragem, cada registro de log mantido representa 4 itens (1 mantido + 3 amostrados). As consultas baseadas em log somam todos os valores itemCount para garantir que a métrica reflita o número total de eventos reais, não apenas o número de registros de log armazenados.
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Soma
Todos os campos de telemetria
exceptions
| where client_Type == 'Browser'
| summarize ['exceptions/browser_sum'] = sum(itemCount) by bin(timestamp, 15m)
| render barchart
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
Count
Soma
Todos os campos de telemetria
dependencies
| where success == 'False'
| summarize ['dependencies/failed_sum'] = sum(itemCount) by bin(timestamp, 15m)
| render barchart
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.
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
Count
Soma
Todos os campos de telemetria
requests
| where success == 'False'
| summarize ['requests/failed_sum'] = sum(itemCount) by bin(timestamp, 15m)
| render barchart
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
Count
Soma
Todos os campos de telemetria
exceptions
| where client_Type != 'Browser'
| summarize ['exceptions/server_sum'] = sum(itemCount) by bin(timestamp, 15m)
| render barchart
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)
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.
ASP.NET tempo de execução da solicitação (performanceCounters/requestExecutionTime)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Milissegundos
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/requestExecutionTime_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render barchart
ASP.NET taxa de solicitação (performanceCounters/requestsPerSecond)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/requestsPerSecond_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render barchart
ASP.NET solicitação na fila do aplicativo (performanceCounters/requestsInQueue)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/requestsInQueue_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render barchart
performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "memoryAvailableBytes")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/memoryAvailableBytes_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
Taxa de exceção (performanceCounters/exceptionRate)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionsPerSecond")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/exceptionsPerSecond_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
Contagem Total de GC (performanceCounters/Contagem Total de GC)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Média, Mín, Máx, Único
Todos os campos de telemetria
performanceCounters
| where name == "GC Total Count"
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/GC Total Count_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
Tempo Total GC (performanceCounters/GC Total Time)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Média, Mín, Máx, Único
Todos os campos de telemetria
performanceCounters
| where name == "GC Total Time"
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/GC Total Time_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
Memória de pilha usada (MB) (performanceCounters/memória de heap usada (MB))
Unidade de medida
Agregações suportadas
Dimensões suportadas
Megabytes / Gigabytes (dependente de dados)
Média, Mín, Máx, Único
Todos os campos de telemetria
performanceCounters
| where name == "Heap Memory Used (MB)"
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/Heap Memory Used (MB)_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
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ín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Taxa de solicitação HTTP (performanceCounters/requestsPerSecond)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Pedidos por segundo
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Solicitações HTTP na fila de aplicativos (performanceCounters/requestsInQueue)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
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ín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/processCpuPercentage_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
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.
CPU de processo (todos os núcleos) (performanceCounters/processCpuPercentageTotal)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Percentagem
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "Process" and counter == "% Processor Time") or name == "processCpuPercentageTotal")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/processCpuPercentageTotal_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
Taxa de E/S do processo (performanceCounters/processIOBytesPerSecond)
Unidade de medida
Agregações suportadas
Dimensões suportadas
Bytes por segundo
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/processIOBytesPerSecond_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
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
Preço médio, Mín, Máximo
Todos os campos de telemetria
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/processPrivateBytes_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
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
Preço médio, Mín, Máximo
Todos os campos de telemetria
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.
performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == 'performanceCounter', value, todouble(''))
| summarize ['performanceCounters/processorCpuPercentage_avg'] = sum(performanceCounter_value) / count() by bin(timestamp, 15m)
| render timechart
Threads de deadlock suspeitos (performanceCounters/Suspect Deadlocked Threads)
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 performanceResult 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 performanceResult 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 performanceResult code, Successful request
Chamadas de dependência (dependências/contagem)
Essa métrica é em relação ao número de chamadas de dependência.
O número de usuários distintos que acessaram seu aplicativo. A precisão dessa métrica pode ser significativamente afetada pelo uso de amostragem e filtragem por telemetria.
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Exclusivo
Todos os campos de telemetria
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize ['users/count_unique'] = dcount(user_Id) by bin(timestamp, 15m)
| render barchart
Usuários, autenticados (usuários/autenticados)
O número de usuários distintos que se autenticaram em seu aplicativo.
Unidade de medida
Agregações suportadas
Dimensões suportadas
Count
Exclusivo
Todos os campos de telemetria
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId) by bin(timestamp, 15m)
| render barchart
customMetrics
| where name == "Sales Amount"
| extend
customMetric_valueSum = iif(itemType == 'customMetric', valueSum, todouble('')),
customMetric_valueCount = iif(itemType == 'customMetric', valueCount, toint(''))
| summarize ['customMetrics/Sales Amount_avg'] = sum(customMetric_valueSum) / sum(customMetric_valueCount) by bin(timestamp, 15m)
| order by timestamp desc
| render timechart
Mínimo (min)
customMetrics
| where name == "Sales Amount"
| extend customMetric_valueMin = iif(itemType == 'customMetric', valueMin, todouble(''))
| summarize ['customMetrics/Sales Amount_min'] = min(customMetric_valueMin) by bin(timestamp, 15m)
| render timechart
Máximo (máx.)
customMetrics
| where name == "Sales Amount"
| extend customMetric_valueMax = iif(itemType == 'customMetric', valueMax, todouble(''))
| summarize ['customMetrics/Sales Amount_max'] = max(customMetric_valueMax) by bin(timestamp, 15m)
| render timechart
Soma (soma)
customMetrics
| where name == "Sales Amount"
| extend customMetric_valueSum = iif(itemType == 'customMetric', valueSum, todouble(''))
| summarize ['customMetrics/Sales Amount_sum'] = sum(customMetric_valueSum) by bin(timestamp, 15m)
| render barchart
Contagem (contagem)
customMetrics
| where name == "Sales Amount"
| extend customMetric_valueCount = iif(itemType == 'customMetric', valueCount, toint(''))
| summarize ['customMetrics/Sales Amount_count'] = sum(customMetric_valueCount) by bin(timestamp, 15m)
| render barchart
Único (único)
customMetrics
| where name == "Sales Amount"
| extend customMetric_value = iif(itemType == 'customMetric', value, todouble(''))
| summarize ['customMetrics/Sales Amount_unique'] = dcount(customMetric_value) by bin(timestamp, 15m)
| render barchart
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.
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)"
}