Ogni applicativo ha bisogno di essere monitorato e nel tempo dare le informazioni necessarie ad effettuare eventuali diagnostiche. Application Insights della piattaforma Microsoft Azure è il servizio ideale perché mette a disposizione moltissimi strumenti per analizzare i comportamenti degli utenti, le metriche e gli errori, anche partendo da piani gratuiti.
Quando installiamo l'SDK per collezionare i dati nelle nostre applicazioni web, però, otteniamo il tracciamento di tutte le richieste, anche di quelle poco significative. Poiché le nostre applicazioni sono esposte su internet, è facile trovare moltissime richieste HTTP, in molti casi anche sotto forma di tentativi di hacking, che sperperano spazio e rovinano la qualità delle informazioni. Tra le cose più utili rientra quindi la necessità di escludere gli errori 404.
Per farlo, se ci troviamo nel mondo .NET, è necessario scrivere un telemetry processor personalizzato, un layer che si pone ad ogni richiesta e ci permette di indicare se proseguire nella pipeline di logging oppure no. E' sufficiente creare una classe come la seguente, che implementa ITelemetryProcessor, per evitare di chiamare il layer successivo.
public class SkipTelemetryProcessor : ITelemetryProcessor { private readonly ITelemetryProcessor _next; public SkipTelemetryProcessor(ITelemetryProcessor next) { _next = next; } public void Process(ITelemetry item) { RequestTelemetry requestTelemetry = item as RequestTelemetry; // Escludo i 404 if (requestTelemetry != null && int.Parse(requestTelemetry.ResponseCode) == (int)HttpStatusCode.NotFound) { return; } _next.Process(item); } }
Successivamente dobbiamo configurare il nostro telemetry. Il file ApplicationInsights.config è la soluzione più comoda poiché è sufficiente inserire un nuovo nodo.
<ApplicationInsights> <Add Type="MyWebApp.SkipTelemetryProcessor, MyWebApp" /> <!-- ... --> </ApplicationInsights>
Possiamo a questo punto pubblicare la nostra applicazione e non doverci più preoccupare degli errori 404. Ovviamente questa tecnica può essere usata anche per escludere altre richieste o metriche, poiché è sufficiente guardare il contenuto di ITelemetry.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare politiche di resiliency con Azure Container App
Creare gruppi di client per Event Grid MQTT
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Eseguire attività con Azure Container Jobs
Utilizzare il trigger SQL con le Azure Function
Creare alias per tipi generici e tuple in C#
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare gli snapshot con Azure File shares
Come migrare da una form non tipizzata a una form tipizzata in Angular
Controllare gli accessi IP alle app con Azure Container Apps
Eseguire query verso tipi non mappati in Entity Framework Core