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.

Captura de tela que mostra a guia Live Metrics.

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

O monitoramento de aplicativos ASP.NET Core LTS exigem o Application Insights da versão 2.8.0 em diante. Para habilitar o Application Insights, verifique se ele está ativado no portal do Azure e se o pacote NuGet do Application Insights está incluído. 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 configurar o Live Metrics manualmente:

  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;
    using System;
    using System.Threading.Tasks;
    
    namespace LiveMetricsDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 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.

Captura de tela que mostra o filtro de taxa de solicitações.

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.

Captura de tela que mostra o Construtor de Consultas na Taxa de Solicitação com uma métrica personalizada.

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.

Captura de tela que mostra o botão Filtrar.

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.

Captura de tela que mostra o Construtor de Consultas.

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.

A captura de tela que mostra a janela Exemplo de telemetria com uma exceção selecionada e os detalhes da exceção exibidos na parte inferior da janela.

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.

Captura de tela que mostra as Falhas amostradas em tempo real.

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: proteger o canal Live Metrics usando a autenticação do Azure AD (Azure Active Directory).
  • 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 da transmissão do Live Metrics para o Application Insights precisará ser feita com a autenticação do Azure AD 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.

Captura de tela exibindo o diálogo Autorizar servidores conectados.

Opção herdada: criar uma chave de API

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

    Captura de tela que mostra a seleção da guia Acesso à API e o botão Criar chave de API.

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

    Captura de tela que mostra o painel Criar chave de API. Marque a caixa de seleção Autenticar canal de controle do SDK e selecione Gerar chave.

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.

ASP.NET

No arquivo applicationinsights.config, adicione AuthenticationApiKey a QuickPulseTelemetryModule:

<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector">
      <AuthenticationApiKey>YOUR-API-KEY-HERE</AuthenticationApiKey>
</Add>

ASP.NET Core

Para aplicativos do ASP.NET Core, siga as instruções abaixo.

Modifique ConfigureServices do arquivo Startup.cs da maneira a seguir.

Adicione o namespace a seguir:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

Depois, modifique o método ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    // Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
    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 Com suporte Com suporte Com suporte 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

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).
  • Há suporte para PerfCounters quando o aplicativo é executado em qualquer computador Windows, como VM, Serviços de Nuvem do Azure ou localmente (SDK do ASP.NET Core versão 2.7.1 ou posterior), mas para aplicativos direcionados ao NET Core LTS ou posterior.
  • 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, você pode ver 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"

Verifique se firewalls ou extensões de navegador estão bloqueando o acesso ao Live Metrics. 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.

Próximas etapas