Поделиться через


Фильтрация Azure Monitor OpenTelemetry для приложений .NET, Java, Node.js и Python

В этой статье содержатся рекомендации по фильтрации OpenTelemetry для приложений с помощью Azure Monitor Application Insights.

Причины, по которым может потребоваться отфильтровать данные телеметрии:

  • Фильтрация данных телеметрии проверки работоспособности для снижения шума.
  • Обеспечение сбора персональных данных и учетных данных.
  • Фильтрация низкозначных данных телеметрии для оптимизации производительности.

Дополнительные сведения о концепциях OpenTelemetry см. в статье Обзор OpenTelemetry или Вопросы и ответы по OpenTelemetry.

Фильтрация телеметрии с помощью библиотек инструментирования

Список всех библиотек инструментирования, включенных в дистрибутив Azure Monitor OpenTelemetry, см. в статье "Добавление и изменение Azure Monitor OpenTelemetry для .NET", Java, Node.js и приложений Python.

Многие библиотеки инструментирования предоставляют вариант фильтрования. Инструкции см. в соответствующих файлах readme:

1 Мы включили инструментирование SqlClient в наш пакет, пока он еще находится в бета-версии. Когда он достигает стабильного выпуска, мы включаем его в качестве стандартной ссылки на пакет. До тех пор, чтобы настроить инструментирование SQLClient, добавьте OpenTelemetry.Instrumentation.SqlClient ссылку на пакет в проект и используйте его общедоступный API.

dotnet add package --prerelease OpenTelemetry.Instrumentation.SqlClient

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

Фильтрация телеметрии с помощью процессоров диапазона

  1. Использование пользовательского процессора:

    Совет

    Добавьте процессор, показанный здесь перед добавлением 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. Добавьте ActivityFilteringProcessor.cs в проект, используя следующий код:

    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;
            }
        }
    }
    

Если конкретный источник не добавляется явным образом с помощью AddSource("ActivitySourceName"), то никакие действия, созданные с помощью этого источника, экспортируются.

Следующие шаги