Compartilhar via


Filtrar o OpenTelemetry do Azure Monitor para aplicativos .NET, Java, Node.js e Python

Este artigo fornece diretrizes sobre como filtrar o OpenTelemetry para aplicativos usando o Application Insights do Azure Monitor.

Motivos pelos quais você pode querer filtrar a telemetria:

  • Filtrar a telemetria de verificação de integridade para reduzir o ruído.
  • Garantir que PII e credenciais não sejam coletadas.
  • Filtrar a telemetria de baixo valor para otimizar o desempenho.

Para saber mais sobre os conceitos do OpenTelemetry, confira a Visão geral do OpenTelemetry ou as Perguntas frequentes sobre o OpenTelemetry.

Filtrar a telemetria usando bibliotecas de instrumentação

Para obter uma lista de todas as bibliotecas de instrumentação incluídas na Distribuição OpenTelemetry do Azure Monitor, confira Adicionar e modificar o OpenTelemetry do Azure Monitor para aplicativos .NET, Java, Node.js e Python.

Muitas bibliotecas de instrumentação fornecem uma opção de filtro. Para obter diretrizes, confira os arquivos leiame correspondentes:

1 Incluímos a instrumentação SqlClient em nosso pacote enquanto ainda está em versão beta. Quando ele atinge uma versão estável, nós o incluímos como uma referência de pacote padrão. Até lá, para personalizar a instrumentação SQLClient, adicione a referência do pacote OpenTelemetry.Instrumentation.SqlClient ao seu projeto e use sua API pública.

dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient

builder.Services.AddOpenTelemetry().UseAzureMonitor().WithTracing(builder =>
{
    builder.AddSqlClientInstrumentation(options =>
    {
        options.SetDbStatementForStoredProcedure = false;
    });
});

Filtrar telemetria usando processadores de intervalo

  1. Usar um processador personalizado:

    Dica

    Adicione o processador mostrado aqui antes de adicionar o Azure Monitor.

    // Create an ASP.NET Core application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Configure the OpenTelemetry tracer provider to add a new processor named ActivityFilteringProcessor.
    builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddProcessor(new ActivityFilteringProcessor()));
    // Configure the OpenTelemetry tracer provider to add a new source named "ActivitySourceName".
    builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddSource("ActivitySourceName"));
    // Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor();
    
    // Build the ASP.NET Core application.
    var app = builder.Build();
    
    // Start the ASP.NET Core application.
    app.Run();
    
  2. Adicione ActivityFilteringProcessor.cs ao seu projeto com o seguinte código:

    public class ActivityFilteringProcessor : BaseProcessor<Activity>
    {
        // The OnStart method is called when an activity is started. This is the ideal place to filter activities.
        public override void OnStart(Activity activity)
        {
            // prevents all exporters from exporting internal activities
            if (activity.Kind == ActivityKind.Internal)
            {
                activity.IsAllDataRequested = false;
            }
        }
    }
    

Se uma fonte específica não for explicitamente adicionada usando AddSource("ActivitySourceName"), nenhuma das atividades criadas usando essa fonte será exportada.

Próximas etapas