Partilhar via


Migrar de SDKs do .NET Application Insights para o Azure Monitor OpenTelemetry

Este guia fornece instruções passo a passo para migrar vários aplicativos .NET do uso de SDKs (kits de desenvolvimento de software) do Application Insights para o Azure Monitor OpenTelemetry.

Espere ter uma experiência semelhante com a instrumentação OpenTelemetry do Azure Monitor àquela oferecida pelos SDKs do Application Insights. Para obter mais informações e uma comparação detalhada entre recursos, consulte o estado de lançamento das funcionalidades.

  • ASP.NET Migração principal para a Distro OpenTelemetry do Azure Monitor. Azure.Monitor.OpenTelemetry.AspNetCore(pacote NuGet)
  • migração de ASP.NET, de aplicações de consola e de WorkerService para o Azure Monitor OpenTelemetry Exporter. Azure.Monitor.OpenTelemetry.Exporter(pacote NuGet)

Se você estiver começando a usar o Application Insights e não precisar migrar da API clássica, consulte Habilitar o Azure Monitor OpenTelemetry.

Nota

Para Aplicativos de Função do Azure, consulte Usar OpenTelemetry com o Azure Functions.

Pré-requisitos

  • Um aplicativo Web ASP.NET Core já instrumentado com o Application Insights sem personalizações
  • Uma versão ativamente suportada do .NET

Gorjeta

O nosso grupo de produtos está ativamente à procura de feedback sobre esta documentação. Forneça feedback a otel@microsoft.com ou consulte a seção de Suporte.

Remover o SDK do Application Insights

Nota

Antes de continuar com essas etapas, você deve confirmar se tem um backup atual do seu aplicativo.

  1. Remover pacotes NuGet

    Remova o Microsoft.ApplicationInsights.AspNetCore pacote do seu csproj.

    dotnet remove package Microsoft.ApplicationInsights.AspNetCore
    
  2. Remover código de inicialização e personalizações

    Remova todas as referências aos tipos do Application Insights em sua base de código.

    Gorjeta

    Depois de remover o pacote do Application Insights, você pode reconstruir seu aplicativo para obter uma lista de referências que precisam ser removidas.

    • Remova o Application Insights do seu ServiceCollection excluindo a seguinte linha:

      builder.Services.AddApplicationInsightsTelemetry();
      
    • Remova a ApplicationInsights secção do seu appsettings.json.

      {
          "ApplicationInsights": {
              "ConnectionString": "<Your Connection String>"
          }
      }
      
  3. Limpar e construir

    Inspecione o diretório bin para validar se todas as referências a Microsoft.ApplicationInsights.* foram removidas.

  4. Teste a sua aplicação

    Verifique se seu aplicativo não tem consequências inesperadas.

Gorjeta

O nosso grupo de produtos está ativamente à procura de feedback sobre esta documentação. Forneça feedback a otel@microsoft.com ou consulte a seção de Suporte.

Ativar OpenTelemetry

Recomendamos criar um recurso de desenvolvimento e usar sua cadeia de conexão ao seguir estas instruções.

Captura de tela que mostra a visão geral do Application Insights e a cadeia de conexão.

Planeje atualizar a cadeia de conexão para enviar telemetria ao recurso original depois de confirmar que a migração foi bem-sucedida.

  1. Instalar a Distro do Azure Monitor

    Nossa Distro do Azure Monitor habilita a telemetria automática incluindo bibliotecas de instrumentação OpenTelemetry para coletar rastreamentos, métricas, logs e exceções, e permite coletar telemetria personalizada.

    A instalação da Distro do Azure Monitor traz o SDK do OpenTelemetry como uma dependência.

    dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore
    
  2. Adicionar e configurar o OpenTelemetry e o Azure Monitor

    O SDK do OpenTelemery deve ser configurado na inicialização do aplicativo como parte do seu ServiceCollection, normalmente no Program.cs.

    OpenTelemetry tem um conceito de três sinais: Traços, métricas e Logs. A Distro do Azure Monitor configura cada um desses sinais.

Program.cs

O exemplo de código a seguir demonstra o básico.

using Azure.Monitor.OpenTelemetry.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // Call AddOpenTelemetry() to add OpenTelemetry to your ServiceCollection.
        // Call UseAzureMonitor() to fully configure OpenTelemetry.
        builder.Services.AddOpenTelemetry().UseAzureMonitor();

        var app = builder.Build();
        app.MapGet("/", () => "Hello World!");
        app.Run();
    }
}

Recomendamos definir sua Cadeia de Conexão em uma variável de ambiente:

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

Mais opções para configurar a Cadeia de Conexão são detalhadas aqui: Configurar a Cadeia de Conexão do Application Insights.

Gorjeta

O nosso grupo de produtos está ativamente à procura de feedback sobre esta documentação. Forneça feedback a otel@microsoft.com ou consulte a seção de Suporte.

Instalar e configurar bibliotecas de instrumentação

As bibliotecas de instrumentação podem ser adicionadas ao seu projeto para coletar automaticamente telemetria sobre componentes ou dependências específicos.

As seguintes bibliotecas estão incluídas na Distro.

Personalizando bibliotecas de instrumentação

A Distro do Azure Monitor inclui instrumentação .NET OpenTelemetry para ASP.NET Core, HttpClient e SQLClient. Você pode personalizar essas instrumentações incluídas ou adicionar manualmente instrumentação extra por conta própria usando a API OpenTelemetry .

Aqui estão alguns exemplos de como personalizar a instrumentação:

Personalização das Opções de Instrumentação AspNetCoreTrace
builder.Services.AddOpenTelemetry().UseAzureMonitor();
builder.Services.Configure<AspNetCoreTraceInstrumentationOptions>(options =>
{
    options.RecordException = true;
    options.Filter = (httpContext) =>
    {
        // only collect telemetry about HTTP GET requests
        return HttpMethods.IsGet(httpContext.Request.Method);
    };
});
Personalizando HttpClientTraceInstrumentationOptions
builder.Services.AddOpenTelemetry().UseAzureMonitor();
builder.Services.Configure<HttpClientTraceInstrumentationOptions>(options =>
{
    options.RecordException = true;
    options.FilterHttpRequestMessage = (httpRequestMessage) =>
    {
        // only collect telemetry about HTTP GET requests
        return HttpMethods.IsGet(httpRequestMessage.Method.Method);
    };
});
Personalizando SqlClientInstrumentationOptions

Nós fornecemos a instrumentação do SQLClient no nosso pacote enquanto ainda está na fase beta. Quando atingir uma versão estável, iremos incluí-lo como uma referência de pacote padrão. Entretanto, para personalizar a instrumentação do SQLClient, adicione a referência ao pacote OpenTelemetry.Instrumentation.SqlClient ao seu projeto e utilize a sua API pública.

dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient
builder.Services.AddOpenTelemetry().UseAzureMonitor().WithTracing(builder =>
{
    builder.AddSqlClientInstrumentation(options =>
    {
        options.SetDbStatementForStoredProcedure = false;
    });
});

Configurar o Azure Monitor

O Application Insights oferecia muito mais opções de configuração via ApplicationInsightsServiceOptions.

Configuração do Application Insights Alternativa OpenTelemetry
AddAutoCollectedMetricExtractor (Adicionar Extrator de Métrica Coletada Automaticamente) N/A
Versão da Aplicação Definir "service.version" no recurso
ConnectionString Consulte as instruções sobre como configurar a Cadeia de Conexão.
Opções de Coleta de Dependências N/A. Para personalizar dependências, revise as opções de configuração disponíveis para bibliotecas de instrumentação aplicáveis.
Modo de Desenvolvedor N/A
AtivarConfiguraçãoDeTelemetriaAtiva N/A
Ativar Amostragem Adaptativa N/A. Apenas a amostragem com taxa fixa é suportada.
MóduloDeTelemetriaDeBatimentosDeServiçosDeAplicações N/A
AtivarJavaScriptDeSeguimentoDeAutenticação N/A
Ativar o módulo de telemetria de metadados da instância do Azure N/A
ModuloDeTelemetriaDeRastreamentoDeDependenciasHabilitado Veja instruções sobre como filtrar registos de rastreamento.
AtivarMóduloDeTelemetriaDeDiagnóstico N/A
AtivarMóduloDeColetaDeContadoresDeEventos (EnableEventCounterCollectionModule) N/A
AtivarSinalDeVida N/A
HabilitarMóduloDeColeçãoDeContadoresDeDesempenho N/A
AtivarFluxoMétricoPulsoRápido AzureMonitorOptions.EnableLiveMetrics
MóduloDeTelemetriaDeSeguimentoDePedidosAtivado Veja instruções sobre como filtrar registos de rastreamento.
Endereço do Endpoint Utilize ConnectionString.
Chave de Instrumentação Utilize ConnectionString.
Opções de Coleta de Pedidos N/A. Consulte as opções do OpenTelemetry.Instrumentation.AspNetCore.

Remover configurações personalizadas

Os cenários a seguir são opcionais e se aplicam apenas a usuários avançados.

  • Se houver mais referências ao TelemetryClient, que poderiam ser usadas para gravar manualmente a telemetria, elas devem ser removidas.

  • Se você adicionou qualquer filtragem ou enriquecimento personalizado na forma de um personalizado TelemetryProcessor ou TelemetryInitializer, eles devem ser removidos. Eles podem ser encontrados no seu ServiceCollection.

    builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
    
    builder.Services.AddApplicationInsightsTelemetryProcessor<MyCustomTelemetryProcessor>();
    
  • Remover trecho de JavaScript

    Se você usou o Snippet fornecido pelo SDK do .NET do Application Insights, ele também deverá ser removido. Para obter exemplos de código completo do que remover, revise o guia habilitar telemetria do lado do cliente para aplicativos Web.

    Se você adicionou o JavaScript SDK para coletar telemetria do lado do cliente, ele também pode ser removido, embora continue a funcionar sem o SDK do .NET. Para obter exemplos de código completo do que remover, consulte o guia de integração para o JavaScript SDK.

  • Remova todos os artefatos do Visual Studio

    Se você usou o Visual Studio para integrar ao Application Insights, poderá ter mais arquivos restantes em seu projeto.

    • Properties/ServiceDependencies pode ter uma referência ao seu recurso do Application Insights.

Gorjeta

O nosso grupo de produtos está ativamente à procura de feedback sobre esta documentação. Forneça feedback a otel@microsoft.com ou consulte a seção de Suporte.

Próximos passos

Gorjeta

O nosso grupo de produtos está ativamente à procura de feedback sobre esta documentação. Forneça feedback a otel@microsoft.com ou consulte a seção de Suporte.

Suporte

  • Para problemas de suporte do Azure, abra um ticket de suporte do Azure.
  • Para problemas de OpenTelemetria, entre em contato diretamente com a comunidade OpenTelemetry .NET.
  • Para obter uma lista de problemas em aberto relacionados ao Azure Monitor Exporter, consulte a página Problemas do GitHub.