Live Metrics: monitorar e diagnosticar com latência de um segundo

Monitore seu aplicativo Web online em produção usando o Live Metrics (também conhecido como QuickPulse) pelo Application Insights. Você pode selecionar e filtrar as métricas e os contadores de desempenho para observar em tempo real sem nenhum efeito sobre o serviço. Você também pode inspecionar rastreamentos de pilha de exemplos de solicitações e exceções com falha. Junto com o Profiler e o Depurador de Instantâneos, o Live Metrics fornece uma ferramenta de diagnóstico avançada e não invasiva para o site online.

Observação

O Live Metrics dá suporte apenas ao TLS 1.2. Para saber mais, consulte a Solução de problemas.

Com o Live Metrics, você pode:

  • Valide uma correção enquanto ela é liberado, observando as contagens de falha e desempenho.
  • Observe o efeito de cargas de teste e diagnostique problemas em tempo real.
  • Concentre-se em sessões de teste específicas ou filtre os problemas conhecidos, selecionando e filtrando as métricas que deseja inspecionar.
  • Obter rastreamentos de exceção quando eles ocorrerem.
  • Experimente os filtros para localizar os KPIs mais relevantes.
  • Monitore qualquer contador de desempenho do Windows em tempo real.
  • Identifique com facilidade um servidor que está com problemas e filtre todo o KPI/feed em tempo real apenas desse servidor.

Screenshot that shows the Live Metrics tab.

No momento, o Live Metrics é compatível com aplicativos do ASP.NET, ASP.NET Core, Azure Functions, Java e Node.js.

Observação

O número de instâncias de servidor monitoradas exibido pelo Live Metrics pode ser menor do que o número real de instâncias alocadas para o aplicativo. Isso porque muitos servidores Web modernos descarregarão aplicativos que não recebem solicitações durante um período de tempo para conservar recursos. Como o Live Metrics conta apenas os servidores que estão executando o aplicativo no momento, os servidores que já descarregaram o processo não são incluídos nesse total.

Introdução

Importante

Para habilitar o Application Insights, certifique-se de que ele esteja ativado no portal do Azure e que seu aplicativo esteja usando uma versão recente do pacote NuGet do Application Insights. Sem o pacote NuGet, uma parte da telemetria é enviada ao Application Insights, mas essa telemetria não é mostrada no Live Metrics.

  1. Siga as diretrizes específicas da linguagem para habilitar o Live Metrics:

  2. No portal do Azure, abra o recurso Application Insights do aplicativo. Depois, abra o Live Stream.

  3. Proteja o canal de controle se você for usar dados confidenciais, como nomes de clientes, nos filtros.

Observação

Em 31 de março de 31, 2025, o suporte à ingestão de chave de instrumentação será encerrado. A ingestão de chave de instrumentação continuará funcionando, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar as novas funcionalidades.

Habilitar o Live Metrics usando código para qualquer aplicativo .NET

Observação

O Live Metrics é habilitado por padrão durante a integração usando as instruções recomendadas para aplicativos .NET.

Para fazer a configuração manual o Live Metrics:

  1. Instale o pacote NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
  2. O exemplo de código de aplicativo de console a seguir mostra como configurar o Live Metrics:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
    .Use((next) =>
    {
        quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
        return quickPulseProcessor;
    })
    .Build();

var quickPulseModule = new QuickPulseTelemetryModule();

// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);

// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up Live Metrics.
TelemetryClient client = new TelemetryClient(config);

// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
    // Send dependency and request telemetry.
    // These will be shown in Live Metrics.
    // CPU/Memory Performance counter is also shown
    // automatically without any additional steps.
    client.TrackDependency("My dependency", "target", "http://sample",
        DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
    client.TrackRequest("My Request", DateTimeOffset.Now,
        TimeSpan.FromMilliseconds(230), "200", true);
    Task.Delay(1000).Wait();
}

O exemplo acima é para um aplicativo de console, mas o mesmo código pode ser usado em qualquer aplicativo .NET. Se outro módulo de telemetria está habilitado para coletar automaticamente a telemetria, é importante garantir que a mesma configuração usada para inicializar esses módulos seja usada para o módulo do Live Metrics.

Quais são as diferenças entre o Live Metrics e o Metrics Explorer e o Analytics?

Funcionalidades Live Stream Metrics Explorer e Log Analytics
Latência Dados exibidos em um segundo. Agregados em minutos.
Nenhuma retenção Os dados persistem enquanto estão no gráfico e depois são descartados. Dados retidos por 90 dias.
Sob demanda Os dados só são transmitidos enquanto o painel do Live Metrics está aberto. Os dados são enviados sempre que o SDK está instalado e habilitado.
Gratuita Não há custo para dados do Live Stream. Sujeito a preços.
amostragem Todas as métricas e os contadores selecionados são transmitidos. Há amostras de falhas e rastreamentos de pilha. Os eventos podem ser amostrados.
Canal de controle Os sinais de controle de filtro são enviados ao SDK. Recomendamos que você proteja este canal. A comunicação é unidirecional com o portal.

Selecionar e filtrar suas métricas

Essas funcionalidades estão disponíveis com ASP.NET, ASP.NET Core e Azure Functions (v2).

Você pode monitorar o KPI personalizado em tempo real aplicando filtros arbitrários a qualquer Application Insights Telemetry no portal. Selecione no controle de filtro que é exibido quando você passa o mouse sobre qualquer um dos gráficos. O gráfico a seguir plota um KPI personalizado de contagem de solicitações com filtros nos atributos de URL e Duração. Valide os filtros com a seção de visualização do fluxo, que mostra um feed em tempo real da telemetria que corresponde aos critérios que você especificou em algum momento.

Screenshot that shows the Filter request rate.

Você pode monitorar um valor diferente de Contagem. As opções dependem do tipo de fluxo, que poderia ser qualquer telemetria do Application Insights, como solicitações, dependências, exceções, rastreamentos, eventos ou métricas. A telemetria também pode ser sua própria medida personalizada.

Screenshot that shows the Query Builder on Request Rate with a custom metric.

Junto com a telemetria do Application Insights, você também pode monitorar qualquer contador de desempenho do Windows. Selecione-o nas opções de fluxo e forneça o nome do contador de desempenho.

O Live Metrics faz a agregação em dois pontos: localmente em cada servidor e depois em todos os servidores. Você pode alterar o padrão dos dois selecionando outras opções nas respectivas listas suspensas.

Telemetria de exemplo: eventos de diagnóstico em tempo real personalizados

Por padrão, o feed de eventos em tempo real mostra exemplos de solicitações com falha e chamadas de dependência, exceções, eventos e rastreamentos. Selecione o ícone do filtro para ver os critérios aplicados em qualquer ponto no tempo.

Screenshot that shows the Filter button.

Assim como acontece com as métricas, você pode especificar qualquer critério arbitrário para qualquer um dos tipos de Application Insights Telemetry. Neste exemplo, estamos selecionando falhas de solicitações específicas e eventos.

Screenshot that shows the Query Builder.

Observação

No momento, para critérios baseados em mensagens de exceção, use a mensagem de exceção mais externa. No exemplo anterior, para filtrar a exceção benigna com a mensagem de exceção interna (após o delimitador "<--") "O cliente se desconectou", use um critério de que a mensagem não contém "Erro ao ler o conteúdo da solicitação".

Veja os detalhes de um item no feed em tempo real clicando nele. Você pode pausar o feed clicando em Pausar ou simplesmente rolando para baixo e clicando em um item. O feed em tempo real será retomado quando você rolar de volta para o topo ou clicar no contador de itens coletados durante a pausa.

Screenshot that shows the Sample telemetry window with an exception selected and the exception details displayed at the bottom of the window.

Filtrar por instância do servidor

Se você quiser monitorar uma instância de função de servidor específico, filtre por servidor. Para filtrar os resultados, selecione o nome do servidor em Servidores.

Screenshot that shows the Sampled live failures.

Proteger o canal de controle

Os filtros personalizados do Live Metrics permitem controlar a telemetria do aplicativo que é transmitida à exibição do Live Metrics no portal do Azure. Os critérios de filtros são enviados para os aplicativos instrumentados com o SDK do Application Insights. O valor de filtro pode conter informações confidenciais, como ID do cliente. Para manter esse valor protegido e impedir a possível divulgação para aplicativos não autorizados, você tem duas opções:

  • Recomendado: proteja o canal de métricas ao vivo usando a autenticação do Microsoft Entra.
  • Herdado (não é mais recomendado): configurar um canal autenticado definindo uma chave de API secreta, conforme explicado na seção "Opção herdada".

Observação

Em 30 de setembro de 2025, as chaves de API usadas para transmitir a telemetria do Live Metrics para o Application Insights serão desativadas. Após essa data, os aplicativos que usam chaves de API não poderão mais enviar dados do Live Metrics ao recurso Application Insights. A ingestão de telemetria autenticada para transmissão de métricas dinâmicas para o Application Insights precisará ser feita com a autenticação do Microsoft Entra para Application Insights.

É possível experimentar filtros personalizados sem precisar configurar um canal autenticado. Selecione um dos ícones de filtro e autorize os servidores conectados. Se você escolher essa opção, precisará autorizar os servidores conectados uma vez a cada nova sessão ou quando um novo servidor ficar online.

Aviso

É altamente não recomendado o uso de canais não protegidos e essa opção será desabilitada seis meses após o início do uso. A caixa de diálogo Autorizar servidores conectados exibe a data após a qual essa opção será desabilitada.

Screenshot that shows the Authorize connected servers dialog.

Opção herdada: criar uma chave de API

  1. Selecione a guia Acesso à API e depois escolha Criar chave de API.

    Screenshot that shows selecting the API Access tab and the Create API key button.

  2. Marque a caixa de seleção Autenticar canal de controle do SDK e clique em Gerar chave.

    Screenshot that shows the Create API key pane. Select Authenticate SDK control channel checkbox and then select Generate key.

Adicionar chave de API à configuração

Você pode adicionar uma chave de API à configuração para aplicativos do ASP.NET, ASP.NET Core, WorkerService e Azure Functions.

No arquivo Program.cs, adicione o seguinte namespace:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Em seguida, adicione o seguinte registro de serviço:

// Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
builder.Services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

Para obter mais informações de como configurar aplicativos do ASP.NET Core, confira Como configurar módulos de telemetria no ASP.NET Core.

WorkerService

Para aplicativos do WorkerService, siga as instruções abaixo.

Adicione o namespace a seguir:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Depois, adicione a seguinte linha antes da chamada services.AddApplicationInsightsTelemetryWorkerService:

    services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

Para obter mais informações de como configurar aplicativos do WorkerService, confira Como configurar módulos de telemetria no WorkerServices.

Aplicativos do Azure Functions

Para aplicativos do Azure Functions (v2), você pode proteger o canal com uma chave de API usando uma variável de ambiente.

Crie uma chave de API dentro do recurso Application Insights e acesse Definições>Configurações do aplicativo do Azure Functions. Selecione Nova configuração de aplicativo e insira o nome APPINSIGHTS_QUICKPULSEAUTHAPIKEY e um valor que corresponda à chave de API.

Tabela de recursos com suporte

Idioma Métricas básicas Métricas de desempenho Filtragem personalizada Exemplo de telemetria Divisão de CPU por processo
.NET Framework Com suporte (LTS) Com suporte (LTS) Com suporte (LTS) Com suporte (LTS) Com suporte (LTS)
.NET Core (destino = .NET Framework) Com suporte (LTS) Com suporte (LTS) Com suporte (LTS) Com suporte (LTS) Com suporte (LTS)
.NET Core (destino = .NET Core) Com suporte (LTS) Com suporte* Com suporte (LTS) Com suporte (LTS) Sem suporte
Azure Functions v2 Com suporte Compatível Compatível Compatível Sem suporte
Java Com suporte (V2.0.0 e superior) Com suporte (V2.0.0 e superior) Sem suporte Com suporte (V3.2.0+) Sem suporte
Node.js Com suporte (V1.3.0 e superior) Com suporte (V1.3.0 e superior) Sem suporte Com suporte (V1.3.0 e superior) Sem suporte
Python Sem suporte Sem suporte Sem suporte Sem suporte Sem suporte

As métricas básicas incluem solicitação, dependência e taxa de exceção. As métricas de desempenho (contadores de desempenho) incluem memória e CPU. O exemplo de telemetria mostra um fluxo de informações detalhadas para solicitações e dependências com falha, exceções, eventos e rastreamentos.

O suporte a PerfCounters varia um pouco entre as versões do .NET Core que não são direcionadas ao .NET Framework:

  • Há suporte para métricas de PerfCounters em execuções no Serviço de Aplicativo do Azure para Windows (SDK do ASP.NET Core versão 2.4.1 ou superior).
  • PerfCounters têm suporte quando o aplicativo está sendo executado em qualquer computador do Windows para aplicativos direcionados ao .NET Core LTS ou superior.
  • Há suporte para PerfCounters quando o aplicativo é executado em qualquer lugar (como Linux, Windows, Serviço de Aplicativo para Linux ou contêineres) nas últimas versões, mas somente para aplicativos direcionados ao .NET Core LTS ou posterior.

Solução de problemas

O Live Metrics usa endereços IP diferentes do que outros tipos de telemetrias do Application Insights. Certifique-se de que esses endereços IP estejam abertos em seu firewall. Confira também se as portas de saída do Live Metrics estão abertas no firewall dos servidores.

Conforme descrito no comunicado de migração do Azure TLS 1.2, o Live Metrics agora dá suporte apenas ao TLS 1.2 por padrão. Se você estiver usando uma versão mais antiga do TLS, o Live Metrics não exibirá nenhum dado. Para aplicativos baseados no .NET Framework 4.5.1, confira Como habilitar o TLS (Transport Layer Security) 1.2 em clientes – Configuration Manager para dar suporte à versão mais recente do TLS.

Arquivo de configuração ausente para o .NET

  1. Verifique se você está usando a última versão do pacote NuGet Microsoft.ApplicationInsights.PerfCounterCollector.

  2. Edite o arquivo ApplicationInsights.config:

    • Verifique se a cadeia de conexão aponta para o recurso Application Insights que você está usando.
    • Localize a opção de configuração QuickPulseTelemetryModule. Se ele não estiver presente, adicione-o.
    • Localize a opção de configuração QuickPulseTelemetryProcessor. Se ele não estiver presente, adicione-o.
    <TelemetryModules>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryModules>
    
    <TelemetryProcessors>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryProcessors>
    
  3. Reinicialize o aplicativo.

Mensagem de status "Os dados estão temporariamente inacessíveis"

Ao navegar para o Live Metrics, visualize uma faixa com a mensagem de status: "Os dados estão temporariamente inacessíveis. As atualizações em nosso status são postadas aqui https://aka.ms/aistatus "

Siga o link para a página status do Azure e verifique se há alguma interrupção de ativação afetando o Application Insights. Verifique se firewalls e extensões de navegador não estão bloqueando o acesso ao Live Metrics se não estiver ocorrendo uma interrupção. Por exemplo, algumas extensões populares de bloqueador de anúncios bloqueiam as conexões com *.monitor.azure.com. Para usar os recursos completos do Live Metrics, desabilite a extensão do bloqueador de anúncios ou adicione uma regra de exclusão para o domínio *.livediagnostics.monitor.azure.com ao bloqueador de anúncios, firewall etc.

Número grande inesperado de solicitações para livediagnostics.monitor.azure.com

Os SDKs do Application Insights usam uma API REST para se comunicar com pontos de extremidade QuickPulse, que fornecem métricas dinâmicas para seu aplicativo Web. Por padrão, os SDKs sondam os pontos de extremidade uma vez a cada cinco segundos para verificar se você está visualizando o painel do Live Metrics no portal do Azure.

Se você abrir o painel do Live Metrics, os SDKs mudarão para um modo de frequência mais alta e enviarão novas métricas ao QuickPulse a cada segundo. Isso permite monitorar e diagnosticar seu aplicativo dinâmico com latência de 1 segundo, mas também gera mais tráfego de rede. Para restaurar o fluxo normal de tráfego, navegue para longe do painel do Live Metrics.

Observação

As chamadas à API REST feitas pelos SDKs para os pontos de extremidade QuickPulse não são acompanhadas pelo Application Insights e não afetam suas chamadas de dependência ou outras métricas. No entanto, você pode vê-las em outras ferramentas de monitoramento de rede.

Próximas etapas