Partilhar via


Application Insights para serviços de nuvem do Azure

O Application Insights pode monitorar os aplicativos de serviço de nuvem do Azure quanto à disponibilidade, desempenho, falhas e uso combinando dados de SDKs do Application Insights com dados do Diagnóstico do Azure de seus serviços de nuvem. Com o feedback que recebe relativamente ao desempenho e à eficácia da sua aplicação no terreno, pode fazer escolhas informadas sobre o rumo do design em cada ciclo de vida do desenvolvimento.

Painel de visão geral

Nota

A 31 de março de 2025, o suporte da ingestão de chaves de instrumentação terminará. A ingestão de chaves de instrumentação continuará a funcionar, mas não forneceremos mais atualizações ou suporte para o recurso. Transição para cadeias de conexão para aproveitar os novos recursos.

Pré-requisitos

Antes de começar, você precisa:

  • Uma subscrição do Azure.

    Inicie sessão com a sua conta Microsoft para Windows, Xbox Live ou outros serviços na nuvem da Microsoft.

  • Ferramentas do Microsoft Azure 2.9 ou posteriores.

  • Ferramentas de análise do desenvolvedor 7.10 ou posterior.

Início rápido

A forma mais rápida e fácil de monitorizar o seu serviço cloud com o Application Insights é escolher essa opção quando publica o seu serviço no Azure.

Página Exemplos de Configurações de Diagnóstico

Essa opção instrumenta seu aplicativo em tempo de execução, oferecendo toda a telemetria necessária para monitorar solicitações, exceções e dependências em sua função Web. Ele também monitora contadores de desempenho de suas funções de trabalho. Todos os rastreamentos de diagnóstico gerados pelo seu aplicativo também são enviados para o Application Insights.

Se essa opção for tudo o que você precisa, pronto.

Suas próximas etapas são visualizar métricas do seu aplicativo e consultar seus dados com o Google Analytics.

Para monitorar o desempenho no navegador, convém também configurar testes de disponibilidade e adicionar código às suas páginas da Web.

As próximas seções discutem as seguintes opções adicionais:

  • Envie dados de vários componentes e construa configurações para recursos separados.
  • Adicionar telemetria personalizada a partir da sua aplicação.

Aplicativo de exemplo instrumentado com o Application Insights

Neste aplicativo de exemplo, o Application Insights é adicionado a um serviço de nuvem com duas funções de trabalho hospedadas no Azure.

Na próxima seção, você aprenderá como adaptar seu próprio projeto de serviço de nuvem da mesma maneira.

Planear recursos e grupos de recursos

A telemetria do seu aplicativo é armazenada, analisada e exibida em um recurso do Azure do tipo Application Insights.

Cada recurso pertence a um grupo de recursos. Os grupos de recursos são usados para gerenciar custos, conceder acesso aos membros da equipe e implantar atualizações em uma única transação coordenada. Por exemplo, você pode escrever um script para implantar um serviço de nuvem do Azure e seus recursos de monitoramento do Application Insights em uma única operação.

Recursos para componentes

Recomendamos que você adicione uma propriedade de dimensão a cada item de telemetria que identifique sua função de origem. Nessa abordagem, gráficos métricos, como exceções, normalmente mostram uma agregação das contagens das várias funções, mas você pode segmentar o gráfico pelo identificador de função, conforme necessário. Também é possível filtrar pesquisas pela mesma dimensão. Esta alternativa torna um pouco mais fácil ver tudo ao mesmo tempo, mas também pode levar a alguma confusão entre os papéis.

Normalmente, a telemetria do browser está incluída no mesmo recurso que a função da Web do lado do servidor.

Coloque os recursos do Application Insights para os vários componentes em um grupo de recursos. Essa abordagem facilita o gerenciamento em conjunto.

Separe o desenvolvimento, os testes e a produção

Se estiver a desenvolver eventos personalizados para a sua próxima funcionalidade enquanto a versão anterior está publicada, vai querer enviar a telemetria de desenvolvimento para um recurso do Application Insights separado. Caso contrário, pode ser difícil encontrar sua telemetria de teste entre todo o tráfego do site ao vivo.

Para evitar essa situação, crie recursos separados para cada configuração de compilação ou "carimbo" (desenvolvimento, teste, produção e assim por diante) do seu sistema. Ponha os recursos de cada configuração de compilação num grupo de recursos separado.

Para enviar a telemetria para os recursos apropriados, você pode configurar o SDK do Application Insights para que ele pegue uma chave de instrumentação diferente, dependendo da configuração de compilação.

Saiba como definir dinamicamente a chave de instrumentação para diferentes estágios.

Criar um recurso do Application Insights para cada função

Se você decidiu criar um recurso separado para cada função e, talvez, um conjunto separado para cada configuração de compilação, é mais fácil criá-los todos no portal do Application Insights. Se você criar muitos recursos, poderá automatizar o processo.

  1. No portal do Azure, selecione New>Developer Services>Application Insights.

    Painel Application Insights

  2. Na lista suspensa Tipo de aplicativo, selecione ASP.NET aplicativo Web.

Cada recurso é identificado por uma chave de instrumentação. Você pode precisar dessa chave mais tarde se quiser configurar ou verificar manualmente a configuração do SDK.

Configurar os Diagnósticos do Azure para cada função

Defina esta opção para monitorizar a sua aplicação com o Application Insights. Para funções Web, essa opção fornece monitoramento de desempenho, alertas, diagnósticos e análise de uso. Para outras funções, você pode pesquisar e monitorar o Diagnóstico do Azure, como reinicialização, contadores de desempenho e chamadas para System.Diagnostics.Trace.

  1. No Gerenciador de Soluções do Visual Studio, em YourCloudService>>Roles, abra as propriedades de cada função.<

  2. Em Configuração, marque a caixa de seleção Enviar dados de diagnóstico para o Application Insights e selecione o recurso do Application Insights criado anteriormente.

Se tiver optado por utilizar um recurso do Application Insights separado para cada configuração de compilação, selecione primeiro a configuração.

Configurar o Application Insights

Isso tem o efeito de inserir suas chaves de instrumentação do Application Insights nos arquivos chamados ServiceConfiguration.*.cscfg. Aqui está o código de exemplo.

Se quiser variar o nível das informações de diagnóstico enviadas ao Application Insights, você pode fazer isso editando os arquivos .cscfg diretamente.

Instalar o SDK em cada projeto

Com essa opção, você pode adicionar telemetria comercial personalizada a qualquer função. A opção fornece uma análise mais detalhada de como seu aplicativo é usado e executado.

No Visual Studio, configure o SDK do Application Insights para cada projeto de aplicação na cloud.

  1. Para configurar funções Web, clique com o botão direito do mouse no projeto e selecione Configurar o Application Insights ou Adicionar > telemetria do Application Insights.

  2. Para configurar funções de trabalho:

    a. Clique com o botão direito do mouse no projeto e selecione Gerenciar pacotes NuGet.

    b. Adicione Application Insights para Servidores Windows.

  3. Para configurar o SDK para enviar dados para o recurso do Application Insights:

    a. Em uma função de inicialização adequada, defina a chave de instrumentação a partir da definição de configuração no arquivo .cscfg :

        TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
        configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY");
        var telemetryClient = new TelemetryClient(configuration);
    

    b. Repita a "etapa a" para cada função em seu aplicativo. Veja os exemplos:

  4. Defina o arquivo ApplicationInsights.config para ser copiado sempre para o diretório de saída.

    Uma mensagem no arquivo .config pede que você coloque a chave de instrumentação lá. No entanto, para aplicativos na nuvem, é melhor defini-lo a partir do arquivo .cscfg . Essa abordagem garante que a função seja identificada corretamente no portal.

Configurar o Monitor de Status para coletar consultas SQL completas (opcional)

Esta etapa só é necessária se você quiser capturar consultas SQL completas no .NET Framework.

  1. No \*.csdef arquivo Adicionar tarefa de inicialização para cada função semelhante a

    <Startup>
      <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple">
        <Environment>
          <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" />
          <Variable name="RoleEnvironment.IsEmulated">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
          </Variable>
        </Environment>
      </Task>
    </Startup>
    
  2. Baixe InstallAgent.bat e InstallAgent.ps1, coloque-os AppInsightsAgent na pasta em cada projeto de função. Certifique-se de copiá-los para o diretório de saída por meio de propriedades de arquivo do Visual Studio ou scripts de compilação.

  3. Em todas as funções de trabalho, adicione variáveis de ambiente:

      <Environment>
        <Variable name="COR_ENABLE_PROFILING" value="1" />
        <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" />
        <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" />
      </Environment>
    

Executar e publicar a aplicação

  1. Execute seu aplicativo e entre no Azure.

  2. Abra os recursos do Application Insights que você criou.

    Pontos de dados individuais são exibidos na Pesquisa e os dados agregados são exibidos no Metric Explorer.

  3. Adicione mais telemetria (consulte as próximas seções) e publique seu aplicativo para obter diagnósticos em tempo real e comentários sobre o uso.

Se não houver dados, faça o seguinte:

  1. Para exibir eventos individuais, abra o bloco Pesquisar .
  2. No aplicativo, abra várias páginas para que ele gere alguma telemetria.
  3. Aguarde alguns segundos e clique em Atualizar.

Exibir eventos do Diagnóstico do Azure

Você pode encontrar as informações do Diagnóstico do Azure no Application Insights nos seguintes locais:

  • Os contadores de desempenho são apresentados como métricas personalizadas.
  • Os registos de eventos do Windows são mostrados como rastreios e eventos personalizados.
  • Os registos de aplicações, os registos ETW e eventuais registos de infraestrutura de diagnósticos aparecem como rastreios.

Para exibir contadores de desempenho e contagens de eventos, abra o Metrics Explorer e adicione o seguinte gráfico:

Dados de diagnóstico do Azure

Para pesquisar nos vários logs de rastreamento enviados pelo Diagnóstico do Azure, use a Pesquisa ou uma consulta do Google Analytics. Por exemplo, suponha que você tenha uma exceção não tratada que fez com que uma função falhasse e fosse reciclada. Esta informação apareceria no canal Aplicação do Registo de Eventos do Windows. Você pode usar a Pesquisa para exibir o erro do Log de Eventos do Windows e obter o rastreamento de pilha completa para a exceção. Isso ajuda você a encontrar a causa raiz do problema.

Pesquisa de Diagnósticos do Azure

Mais telemetria

As próximas seções discutem como obter telemetria adicional de vários aspetos do seu aplicativo.

Controlar solicitações de funções de trabalho

Nas funções de trabalho, o módulo de pedidos recolhe automaticamente dados sobre os pedidos HTTP. Para obter exemplos de como você pode substituir o comportamento de coleção padrão, consulte o exemplo MVCWebRole.

Pode acompanhar as chamadas para as funções de trabalho da mesma forma que os pedidos HTTP para capturar o desempenho das mesmas. No Application Insights, o tipo de telemetria Pedido mede uma unidade de trabalho com nome do lado do servidor que pode ser temporizada e ter êxito ou falhar independentemente. Embora as solicitações HTTP sejam capturadas automaticamente pelo SDK, você pode inserir seu próprio código para rastrear solicitações para funções de trabalho.

Consulte as duas funções de trabalho de exemplo instrumentadas para relatar solicitações:

Exceções

Para obter informações sobre como coletar exceções não tratadas de vários tipos de aplicativos Web, consulte Monitorando exceções no Application Insights.

A função da Web de exemplo tem controladores MVC5 e Web API 2. As exceções não processadas dos dois são capturadas com os seguintes processadores:

Para funções de trabalho, você pode controlar exceções de duas maneiras:

  • Use TrackException(ex).
  • Se você adicionou o pacote NuGet do ouvinte de rastreamento do Application Insights, poderá usar System.Diagnostics.Trace para registrar exceções, conforme mostrado neste exemplo.

Contadores de desempenho

São recolhidos por predefinição os contadores seguintes:

  • \Processo(?? APP_WIN32_PROC??)% de tempo do processador
  • \Memory\Available Bytes
  • Exceções CLR do .NET(?? APP_CLR_PROC??)# de Exceps Thrown / seg
  • \Process(??APP_WIN32_PROC??)\Private Bytes
  • \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
  • \Processador(_Total)% Tempo do processador

Para funções da Web, também são recolhidos estes contadores:

  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue

Você pode especificar contadores de desempenho adicionais personalizados ou outros do Windows editando ApplicationInsights.config, conforme mostrado neste exemplo.

Contadores de desempenho

Telemetria correlacionada para funções de trabalho

Para obter uma experiência de diagnóstico avançada, você pode visualizar o que levou a uma solicitação com falha ou de alta latência. Com funções Web, o SDK configura automaticamente uma correlação entre a telemetria relacionada.

Para obter essa exibição para funções de trabalho, você pode usar um inicializador de telemetria personalizado para definir um atributo de contexto de Operation.Id comum para toda a telemetria. Isso permite que você veja rapidamente se o problema de latência ou falha foi causado por uma dependência ou pelo seu código.

Saiba como:

  • Defina o correlationId em um CallContext como mostrado neste exemplo. Nesse caso, estamos usando o ID da solicitação como correlationId.
  • Adicione uma implementação TelemetryInitializer personalizada para definir o Operation.Id para o correlationId que foi definido anteriormente. Para obter um exemplo, consulte ItemCorrelationTelemetryInitializer.
  • Adicione o inicializador de telemetria personalizado. Você pode fazer isso no arquivo ApplicationInsights.config ou no código , conforme mostrado neste exemplo.

Telemetria de cliente

Para obter telemetria baseada em navegador, como contagens de exibição de página, tempos de carregamento de página ou exceções de script, e para escrever telemetria personalizada em seus scripts de página, consulte Adicionar o SDK JavaScript às suas páginas da Web.

Testes de disponibilidade

Para garantir que seu aplicativo permaneça ativo e responsivo, configure testes da Web.

Apresentar tudo em conjunto

Para obter uma visão geral do seu sistema, você pode exibir os principais gráficos de monitoramento juntos em um painel. Por exemplo, pode afixar as contagens de pedidos e de falhas de cada função.

Se o seu sistema usa outros serviços do Azure, como o Stream Analytics, inclua também seus gráficos de monitoramento.

Se tiver uma aplicação móvel cliente, utilize o App Center. Crie consultas no Analytics para apresentar as contagens de eventos e afixá-las ao dashboard.

Exemplo

O exemplo monitoriza um serviço que tem uma função da Web e duas funções de trabalho.

Exceção "método não encontrado" na execução nos serviços de nuvem do Azure

Você criou para .NET LTS? As versões anteriores não são suportadas automaticamente nas funções dos serviços de nuvem do Azure. Instale o .NET LTS em cada função antes de executar seu aplicativo.

Próximos passos