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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Esporre tool MCP da API REST con Azure App Service
Integrare Agenti A2A in Azure API Management
Gestire trasferimenti cloud con Azure Storage Mover
Evitare il cache poisoning nei workflow di GitHub
Gestione dei codeowners in GitHub
Ospitare n8n su Azure App Service
Utilizzare il top layer in HTML
DevSecOps per .NET: dalla teoria alla pratica
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Ottimizzare i costi con Smart tier in Azure Blob Storage
Referenziare un package NuGet in una file based app .NET
Integrare email esterne con Azure Functions e Managed Connectors


