Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor

di Cristian Civera, in Application Insights,

Come abbiamo visto nello script precedente sull'integrazione tra ASP.NET Core, Application Insights e OpenTelemetry, Azure Monitor rappresenta la nostra piattaforma di osservabilità. In questo approfondimento ci concentriamo su un punto chiave: il controllo dei dati inviati. Con OpenTelemetry e il pacchetto Azure.Monitor.OpenTelemetry.AspNetCore non ci limitiamo a raccogliere telemetria, ma possiamo decidere in modo preciso cosa includere o escludere.

Il filtro della telemetria ci permette di non inviare ad Application Insights richieste irrilevanti, health check o dipendenze poco significative. Senza questa configurazione generiamo rumore nei grafici e aumentiamo i costi di ingestione; con un filtro mirato otteniamo invece dati più puliti e utili, facendo attenzione a non escludere informazioni importanti.

Dopo la configurazione base in Program.cs e il collegamento ad Azure Monitor, aggiungiamo direttamente una logica di filtro sulle richieste, ad esempio per escludere un endpoint come /health. Un esempio di configurazione con un processor personalizzato è il seguente:

builder.Services.AddOpenTelemetry()
    .UseAzureMonitor(options =>
    {
        options.ConnectionString = "InstrumentationKey=...";
    })
    .ConfigureOpenTelemetryTracerProvider((sp, builder).AddProcessor(new HealthCheckFilterProcessor()));

Definiamo quindi un processor personalizzato ereditando da BaseProcessor:

using OpenTelemetry;
using OpenTelemetry.Trace;
using System.Diagnostics;

public class HealthCheckFilterProcessor : BaseProcessor
{
    public override void OnEnd(Activity activity)
    {
        if (activity.DisplayName.Contains("/health"))
        {
            activity.IsAllDataRequested = false;
            return;
        }

        base.OnEnd(activity);
    }
}

In questo modo decidiamo esplicitamente di non tracciare le chiamate verso l'endpoint di health check. Possiamo applicare lo stesso principio anche alle dipendenze esterne o ad altre categorie di telemetria, modellando il comportamento in base alle esigenze del progetto.

Commenti

Visualizza/aggiungi commenti

| Condividi su: LinkedIn, Facebook

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi