Configurare OpenTelemetry per Application Insights su ASP.NET Core

di Cristian Civera, in Application Insights,

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

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