Métricas baseadas em log do Application Insights

As métricas baseadas em log do Application Insights permitem analisar a integridade dos aplicativos monitorados, criar painéis avançados e configurar alertas. Há dois tipos de métricas:

Como as métricas padrão são pré-agregadas durante a coleta, elas têm melhor desempenho no momento da consulta. Isso as torna uma opção melhor para painéis e alertas em tempo real. As métricas baseadas em log têm mais dimensões, o que as torna a opção superior para análise de dados e diagnóstico ad hoc. Use o seletor de namespace para alternar entre as métricas padrão e baseadas em log no explorador de métricas.

Interpretar e usar consultas deste artigo

Este artigo lista as métricas com dimensões e agregações com suporte. Os detalhes sobre as métricas baseadas em log incluem as instruções de consulta Kusto subjacentes. Para sua conveniência, cada consulta usa padrões para granularidade de tempo, tipo de gráfico e, às vezes, dividindo a dimensão, o que simplifica o uso da consulta no Log Analytics sem 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 é convertido 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 > atrás(24 h).

  • A granularidade de tempo selecionada é colocada na cláusula summarize ... by bin(timestamp, [time grain]) .

  • Todas as dimensões Filtro selecionadas são convertidas em cláusulas where adicionais.

  • A dimensão Dividir gráfico selecionada é convertida em uma propriedade adicional de resumo. Por exemplo, se você dividir o gráfico por local e plotar usando uma granularidade de tempo de 5 minutos, a cláusula summarize será resumida ... by bin(timestamp, 5 m), location.

Observação

Se você for novo na linguagem de consulta Kusto, comece copiando e colando instruções Kusto no painel de consulta do Log Analytics sem fazer nenhuma modificação. Clique em Executar para ver o gráfico básico. Ao começar a entender a sintaxe da linguagem de consulta, você pode começar a fazer pequenas modificações e ver o impacto da alteração. Explorar seus próprios dados é uma ótima maneira de começar a concretizar todo o poder do Log Analytics e do Azure Monitor.

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 Média Local de execução, Nome do teste
availabilityResults 
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart

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 Média, Mínimo, Máximo Local de execução, Nome do teste, Resultado do teste
availabilityResults
| where notempty(duration)
| extend availabilityResult_duration = iif(itemType == 'availabilityResult', duration, todouble(''))
| summarize sum(availabilityResult_duration)/sum(itemCount) by bin(timestamp, 5m), location
| render timechart

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 Local de execução, Nome do teste, Resultado do teste
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart

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)

Tempo de solicitação do usuário até que o DOM, as imagens, os scripts e as folhas de estilo sejam carregados.

Unidade de medida Agregações com suporte Dimensões pré-agregadas
Milissegundos Média, Mínimo, Máximo Nenhum
browserTimings
| where notempty(totalDuration)
| extend _sum = totalDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

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.

Unidade de medida Agregações com suporte Dimensões pré-agregadas
Milissegundos Média, Mínimo, Máximo Nenhum
browserTimings
| where notempty(processingDuration)
| extend _sum = processingDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 5m)
| render timechart

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

Tempo entre a solicitação do usuário e a conexão de rede. Inclui a pesquisa DNS e a conexão de transporte.

Unidade de medida Agregações com suporte Dimensões pré-agregadas
Milissegundos Média, Mínimo, Máximo Nenhum
browserTimings
| where notempty(networkDuration)
| extend _sum = networkDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Tempo de resposta de recebimento (browserTimings/receiveDuration)

Tempo entre o primeiro e o último byte, ou até a desconexão.

Unidade de medida Agregações com suporte Dimensões pré-agregadas
Milissegundos Média, Mínimo, Máximo Nenhum
browserTimings
| where notempty(receiveDuration)
| extend _sum = receiveDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

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

Tempo entre a conexão de rede e o recebimento do primeiro byte.

Unidade de medida Agregações com suporte Dimensões pré-agregadas
Milissegundos Média, Mínimo, Máximo Nenhum
browserTimings
| where notempty(sendDuration)
| extend _sum = sendDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

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 pré-agregadas Observações
Contagem Contagem Nenhum A versão baseada em log usa a agregação Sum
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

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 pré-agregadas Observações
Contagem Contagem Nenhum A versão baseada em log usa a agregação Sum
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

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

Cada vez que você registra uma exceção no Application Insights, há uma chamada ao 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 pré-agregadas Observações
Contagem Contagem Nome da função da nuvem, Instância da função da nuvem, Tipo de dispositivo A versão baseada em log usa a agregação Sum
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

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 pré-agregadas Observações
Contagem Contagem Instância da função da nuvem, Nome da função da nuvem, Tráfego real ou sintético, Desempenho de solicitação, Código de resposta A versão baseada em log usa a agregação Sum
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

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 pré-agregadas Observações
Contagem Contagem Nome da função da nuvem, Instância da função da nuvem A versão baseada em log usa a agregação Sum
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

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)

performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "availableMemory")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Taxa de exceção (performanceCounters/exceptionRate)

performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionRate")
| extend performanceCounter_value = iif(itemType == 'performanceCounter',value,todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

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

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)

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 do aplicativo (performanceCounters/requestsInQueue)

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 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 Média, Mínimo, Máximo Instância de função de nuvem
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

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 Instância de função de nuvem
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

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 Instância de função de nuvem
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| 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 com suporte Dimensões com suporte
Percentual Média, Mínimo, Máximo Instância de função de nuvem

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.

performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

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.

dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

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

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

dependencies
| where notempty(duration)
| extend dependency_duration = iif(itemType == 'dependency',duration,todouble(''))
| extend _sum = dependency_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 1m)
| render timechart

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

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

requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

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.

requests
| where notempty(duration)
| extend request_duration = iif(itemType == 'request', duration, todouble(''))
| extend _sum = request_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 1m)
| render timechart

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.

pageViews
| where notempty(duration)
| extend pageView_duration = iif(itemType == 'pageView', duration, todouble(''))
| extend _sum = pageView_duration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render barchart

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

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

pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Sessões (sessões/contagem)

Essa métrica refere-se à contagem de IDs de sessão distintas.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart

Rastreamentos (rastreamentos/contagem)

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

traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Usuários (usuários/contagem)

O número de usuários distintos que acessaram o aplicativo. A precisão dessa métrica pode ser significativamente afetada pelo uso da amostragem e filtragem de telemetria.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize dcount(user_Id) by bin(timestamp, 1h)
| render barchart

Usuários, Autenticados (usuários/autenticados)

O número de usuários distintos que se autenticaram no aplicativo.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart

Acesse todos os seus dados 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 string de consulta, solicita que a API retorne não apenas os dados da série temporal, mas também a instrução Kusto Query Language (KQL) usada para buscá-los. Esse parâmetro pode ser particularmente benéfico para usuários que desejam 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.

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" é 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)"
}