Nello script #208 abbiamo visto come creare una web app per Azure usando ARM, il motore di deployment delle risorse della piattaforma. Intorno ad una web app ruotano molti servizi che possono essere utili, tra questi Application Insights. Associandolo possiamo automaticamente, senza toccare il codice, monitorare gli errori e le prestazioni delle richieste. Questo passaggio può essere fatto normalmente manualmente, ma come ci si può aspettare, può essere fatto in maniera totalmente automatizzata con ARM.
Nel nostro template JSON procediamo prima di tutto alla definizione base del componente Application Insights.
{ "type": "microsoft.insights/components", "apiVersion": "2020-02-02-preview", "name": "[variables('siteName')]", "location": "[variables('location')]", "kind": "web", "properties": { "Application_Type": "web" } }
Diamo per scontato la definizione di un paio di variabili per indicare rispettivamente il nome del sito e la location, usati per allineare i nomi delle risorse che andiamo a creare, anche se non necessario. Per collegare l'istanza di Application Insights alla Web App occorre impostare un paio di chiavi speciali che permettano anche al portale stesso di vedere le due risorse accoppiate, come nell'esempio seguente.
{ "type": "Microsoft.Web/sites", "apiVersion": "2018-11-01", "name": "[variables('siteName')]", "location": "[variables('location')]", "kind": "app", "dependsOn": [ "[variables('servicePlanId')]" ], "properties": { "serverFarmId": "[variables('servicePlanId')]", "siteConfig": { "appSettings": [ { "name": "APPINSIGHTS_INSTRUMENTATIONKEY", "value": "[reference(concat('microsoft.insights/components/', variables('siteName')), '2015-05-01').InstrumentationKey]" }, { "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", "value": "[reference(concat('microsoft.insights/components/', variables('siteName')), '2015-05-01').ConnectionString]" }, { "name": "ApplicationInsightsAgent_EXTENSION_VERSION", "value": "~2" } ] } }
Nell'esempio usiamo la funzione speciale reference che ci permette di ottenere il riferimento ad una specifica risorsa ed interrogare le proprietà da essa esposte, come la chiave e la stringa di connessione. Importante inoltre specificare la chiave ApplicationInsightsAgent_EXTENSION_VERSION per indicare l'ultima versione disponibile attualmente del motore. Segnaliamo infine le chiavi InstrumentationEngine_EXTENSION_VERSION e XDT_MicrosoftApplicationInsights_BaseExtensions che se impostate a ~1 abilitano anche il tracciamento dei comandi SQL.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Copiare automaticamente le secret tra più repository di GitHub
Utilizzare i nuovi piani dedicati di Azure Container Apps
Utilizzare la parola chiave nameof per referenziare i nomi dei parametri di un metodo in C#
Bloccare una pull request che arriva da branch non definiti in GitHub
Pubblicare la documentazione di un repository con GitHub Pages
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Creare applicazioni distribuite con Azure Container Apps e Dapr
Utilizzare la session affinity con Azure Container Apps
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Utilizzare la parola chiave file nel codice C#
Sfruttare il portale Azure per creare script di automazione
Migrare un repository git da Azure DevOps a GitHub
I più letti di oggi
- .NET Conference Italia 2023 - Milano e Online
- Utilizzare database e servizi con gli add-on di Container App
- Evitare la script injection nelle GitHub Actions
- Reactive form tipizzati con modellazione del FormBuilder in Angular
- Eseguire attività basate su eventi con Azure Container Jobs
- Utilizzare le collection expression in C#
- Registrare servizi multipli tramite chiavi in ASP.NET Core 8
- Eseguire query verso tipi non mappati in Entity Framework Core
- Reactive form tipizzati con FormBuilder in Angular
- Eseguire attività pianificate con Azure Container Jobs