Compartilhar via


Explorar os logs de rastreamento do .NET/.NET Core e do Python no Application Insights

Envie logs de rastreamento de diagnóstico referentes ao seu aplicativo ASP.NET/ASP.NET Core do ILogger, NLog, log4Net ou System.Diagnostics.Trace para o Azure Application Insights. Para aplicativos do Python, envie logs de rastreamento de diagnóstico usando o AzureLogHandler no OpenCensus Python para o Azure Monitor. Em seguida, você pode explorá-los e pesquisá-los. Esses logs são mesclados com outros arquivos de log de seu aplicativo. Você pode usá-los para identificar rastreamentos associados a cada solicitação do usuário e correlacioná-los com outros eventos e relatórios de exceção.

Observação

Você precisa do módulo de captura de log? Ele é um adaptador útil para agentes de terceiros. No entanto, se você ainda não estiver usando NLog, log4Net ou System.Diagnostics.Trace, considere chamar o Application Insights TrackTrace() diretamente.

Observação

O suporte à ingestão de chave de instrumentação será encerrado em 31 de março de 2025. A ingestão de chave de instrumentação continuará funcionando, mas não forneceremos mais atualizações ou suporte para o recurso. Faça a transição para cadeias de conexão para aproveitar os novos recursos.

Instalar o log no seu aplicativo

Instale a estrutura de log escolhida em seu projeto, o que deve resultar em uma entrada em app.config ou web.config.

 <configuration>
  <system.diagnostics>
    <trace>
      <listeners>
        <add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

Configurar o Application Insights para coletar logs

Adicione o Application Insights ao seu projeto se você ainda não fez isso e há uma opção para incluir o coletor de logs.

Ou clique com o botão direito do mouse no projeto no Gerenciador de Soluções para configurar o Application Insights. Selecione a opção Configurar coleção de rastreamento .

Observação

Não consegue ver o menu do Application Insights nem a opção de coletor de logs? Tente solucionar problemas.

Instalação manual

Use este método se o tipo de projeto não tiver suporte no instalador do Application Insights. Por exemplo, se for um projeto da área de trabalho do Windows.

  1. Se você pretende usar o log4net ou NLog, instale-o em seu projeto.

  2. No Gerenciador de Soluções, clique com o botão direito do mouse em seu projeto e selecione Gerenciar Pacotes NuGet.

  3. Busque por Application Insights.

  4. Selecione um dos seguintes pacotes:

O pacote NuGet instala os assemblies necessários e, quando aplicável, modifica o web.config ou o app.config.

ILogger

Para obter exemplos de como usar a implementação do ILogger do Application Insights com aplicativos de console e ASP.NET Core, consulte ApplicationInsightsLoggerProvider para logs do ILogger do .NET Core.

Inserir chamadas de log de diagnóstico

Se você usa System.Diagnostics.Trace, uma chamada típica é semelhante a:

System.Diagnostics.Trace.TraceWarning("Slow response - database01");

Se você preferir log4net ou NLog, use:

    logger.Warn("Slow response - database01");

Usar eventos EventSource

Você pode configurar eventos System.Diagnostics.Tracing.EventSource para serem enviados ao Application Insights como rastreamentos. Primeiro, instale o pacote NuGet Microsoft.ApplicationInsights.EventSourceListener. Em seguida, edite a TelemetryModules seção do arquivo ApplicationInsights.config .

    <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
      <Sources>
        <Add Name="MyCompany" Level="Verbose" />
      </Sources>
    </Add>

Para cada fonte, você pode definir os seguintes parâmetros:

  • O nome especifica o nome do EventSource a ser coletado.
  • Nível especifica o nível de log a coletar: Crítico, Erro, Informativo, LogAlways, Verbose ou Aviso.
  • Palavras-chave (opcional) especificam o valor inteiro das combinações de palavras-chave a serem usadas.

Usar eventos DiagnosticSource

Você pode configurar eventos System.Diagnostics.DiagnosticSource para serem enviados ao Application Insights como rastreamentos. Primeiro, instale o pacote NuGet Microsoft.ApplicationInsights.DiagnosticSourceListener. Em seguida, edite a seção "TelemetryModules" do arquivo ApplicationInsights.config .

    <Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
      <Sources>
        <Add Name="MyDiagnosticSourceName" />
      </Sources>
    </Add>

Para cada origem de diagnóstico que você deseja rastrear, adicione uma entrada com o conjunto de atributos Name para definir o nome de sua origem de diagnóstico.

Usar eventos ETW

É possível configurar os eventos ETW (Rastreamento de Eventos para Windows) a serem enviados ao Application Insights como rastreamentos. Primeiro, instale o pacote NuGet Microsoft.ApplicationInsights.EtwCollector. Em seguida, edite a seção "TelemetryModules" do arquivo ApplicationInsights.config .

Observação

Eventos ETW só poderão ser coletados se o processo que hospeda o SDK estiver em execução em uma identidade que seja membro dos administradores ou usuários de log de desempenho.

    <Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
      <Sources>
        <Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
      </Sources>
    </Add>

Para cada fonte, você pode definir os seguintes parâmetros:

  • ProviderName é o nome do provedor ETW a ser coletado.
  • ProviderGuid especifica o GUID do provedor de ETW a ser coletado. Ele poderá ser usado em lugar de ProviderName.
  • Nível define o nível de registros em log a ser coletado. Ele pode ser Crítico, Erro, Informativo, LogAlways, Detalhado ou Aviso.
  • Palavras-chave (opcional) definem o valor inteiro das combinações de palavras-chave a serem usadas.

Usar a API de rastreamento diretamente

Você pode chamar a API de rastreamento do Application Insights diretamente. Os adaptadores de log usam essa API.

Por exemplo:

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");

Uma vantagem de TrackTrace é que você pode colocar dados relativamente compridos na mensagem. Por exemplo, você pode codificar dados POST.

Você também pode adicionar um nível de severidade à mensagem. E, como ocorre com outros casos de telemetria, você pode adicionar valores de propriedade para ajudar a filtrar ou a pesquisar diferentes conjuntos de rastreamentos. Por exemplo:

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
                            SeverityLevel.Warning,
                            new Dictionary<string, string> { { "database", "db.ID" } });

Agora você pode filtrar facilmente na Pesquisa de Transações todas as mensagens de um nível de severidade específico relacionado a um banco de dados específico.

AzureLogHandler para OpenCensus Python

O Manipulador de Log do Azure Monitor permite exportar logs do Python para o Azure Monitor.

Instrumente seu aplicativo com o SDK do OpenCensus Python para Azure Monitor.

Este exemplo mostra como enviar um log de nível de aviso para Azure Monitor.

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string='InstrumentationKey=<your-instrumentation_key-here>'))
logger.warning('Hello, World!')

Explorar seus logs

Execute o aplicativo no modo de depuração ou implante-o em tempo real.

No painel de visão geral do aplicativo no portal do Application Insights, selecione Pesquisa de Transações.

Por exemplo, você pode:

  • Filtre rastreamentos de log ou itens com propriedades específicas.
  • Inspecionar um item específico em detalhes.
  • Encontre outros dados de log do sistema relacionados à mesma solicitação de usuário (tem a mesma ID de operação).
  • Salve a configuração de uma página como um favorito.

Observação

Se o aplicativo enviar muitos dados e você estiver usando o SDK do Application Insights para ASP.NET versão 2.0.0-beta3 ou posterior, o recurso de amostragem adaptável poderá operar e enviar apenas uma parte da telemetria. Saiba mais sobre amostragem.

Solução de problemas

Encontre respostas para dúvidas comuns.

O que causa telemetria atrasada, uma rede sobrecarregada e transmissão ineficiente?

System.Diagnostics.Tracing tem um recurso de autoflush. Esse recurso faz com que o SDK seja liberado com cada item de telemetria, o que é indesejável e pode causar problemas no adaptador de registro em log, como telemetria atrasada, uma rede sobrecarregada e transmissão ineficiente.

Como faço isso no Java?

Na instrumentação sem código Java, que é recomendada, os logs são coletados prontos para uso. Use o agente do Java 3.0.

O agente Java do Application Insights coleta logs de Log4j, Logback e java.util.logging prontos para uso.

Não há nenhuma opção do Application Insights no menu de contexto do projeto?

  • Verifique se o Developer Analytics Tools está instalado no computador de desenvolvimento. No Visual Studio, acesseExtensões e Atualizações de > e procure ferramentas de análise de desenvolvedor. Se não estiver na guia Instalado , abra a guia Online e instale-a.
  • Esse tipo de projeto pode ser um no qual o Developer Analytics Tools não dá suporte. Use a instalação manual.

Não há nenhuma opção de adaptador de log na ferramenta de configuração?

  • Instale primeiro a estrutura de registros.
  • Se você estiver usando System.Diagnostics.Trace, certifique-se de que o configurou no web.config.
  • Verifique se você tem a versão mais recente do Application Insights. No Visual Studio, acesseExtensões e Atualizações das > e abra a guia Atualizações. Se as Ferramentas de Análise de Desenvolvedores estiverem lá, selecione-a para atualizá-la.

Por que recebo a mensagem de erro "A chave de instrumentação não pode estar vazia"?

Você provavelmente instalou o pacote NuGet de adaptador de log sem instalar o Application Insights. No Gerenciador de Soluções, clique com o botão direito do mouse emApplicationInsights.confige selecione Atualizar o Application Insights. Você recebe uma solicitação para entrar no Azure e criar um recurso do Application Insights ou, alternativamente, reutilizar um recurso existente. Isso deve corrigir o problema.

Pode levar algum tempo para que todos os eventos e solicitações percorram o pipeline.

Que quantidade de dados é mantida?

Vários fatores afetam a quantidade dos dados retidos. Para obter mais informações, consulte a seção Limites da página de métricas de evento do cliente.

Por que não vejo algumas entradas de log que eu esperava?

Talvez seu aplicativo envie grandes quantidades de dados e você esteja usando o SDK do Application Insights para ASP.NET, versão 2.0.0-beta3 ou posterior. Nesse caso, o recurso de amostragem adaptável pode operar e enviar apenas uma parte da telemetria. Saiba mais sobre amostragem.

Próximas etapas