Quando sviluppiamo un'applicazione ASP.NET Core e vogliamo monitorarla in Azure, il punto di riferimento è da sempre Application Insights, oggi parte integrante di Azure Monitor. In passato integravamo direttamente l'SDK dedicato all'interno del progetto, ma oggi per i nuovi sviluppi la direzione consigliata è adottare OpenTelemetry come standard di instrumentation, continuando comunque a usare Application Insights come destinazione dei dati.
In termini generali, Application Insights ci consente di raccogliere richieste HTTP, dipendenze, eccezioni, metriche personalizzate e log applicativi, permettendoci di analizzare performance e problemi direttamente dal portale Azure. Con il vecchio approccio basato su SDK proprietario, ad esempio Application Insights 3.x, integravamo librerie specifiche Microsoft che gestivano in modo diretto la telemetria. Questo modello funzionava bene, ma introduceva un certo grado di lock-in tecnologico e una minore uniformità rispetto ad altri strumenti di osservabilità.
Oggi con OpenTelemetry adottiamo uno standard open source e multipiattaforma. Continuiamo a inviare i dati ad Application Insights, ma lo facciamo tramite il pacchetto Azure.Monitor.OpenTelemetry.AspNetCore, che si integra perfettamente con Azure Monitor. Il vantaggio principale è la standardizzazione: possiamo riutilizzare lo stesso approccio anche su altri ambienti o esportare la telemetria verso sistemi differenti. In ottica di compatibilità, possiamo anche abilitare un exporter OTLP, inviando i dati verso endpoint compatibili con lo standard OpenTelemetry e mantenendo così la massima interoperabilità tra piattaforme diverse.
Per configurare un nuovo progetto ASP.NET Core iniziamo installando il pacchetto NuGet dedicato. Poi interveniamo nel file Program.cs registrando OpenTelemetry e collegandolo ad Azure Monitor tramite la connection string della risorsa Application Insights creata nel portale Azure. Un esempio pratico è il seguente:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry()
.UseAzureMonitor(options =>
{
options.ConnectionString = "InstrumentationKey=...";
});
var app = builder.Build();
app.MapControllers();
app.Run();La connection string la recuperiamo dalla sezione Overview della risorsa Application Insights nel portale Azure.
Questo approccio risolve il problema della frammentazione e ci prepara al futuro dell'osservabilità. Inoltre, con OpenTelemetry possiamo facilmente estendere o modificare la raccolta della telemetria e applicare filtri per controllare quali dati inviare ad Application Insights, riducendo rumore e costi. In questo modo uniamo la solidità della piattaforma Azure alla flessibilità di uno standard aperto, costruendo soluzioni moderne, scalabili e sostenibili nel tempo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Building Custom Developer Agents
From Data to Insight: Exploratory Data Analysis with Python, VS Code and SQL MCP Server
Il nuovo persistent state in Blazor
Usare i generics di C# con la clausola nameof in modo semplificato
Utilizzare il top layer in HTML
GitHub Copilot CLI in ambienti offline
Gestire trasferimenti cloud con Azure Storage Mover
Rendere affidabile lo scale out su Azure App Service
Impostare automaticamente l'altezza del font tramite CSS
Creare un indice su una colonna JSON in SQL Server
Response streaming con Blazor e .NET 10
Proteggere l'endpoint dell'agente A2A delle Logic App


