Monitorare in modo continuo applicazioni e servizi
In questa unità si apprenderà come:
- Come il monitoraggio continuo consente di verificare l'integrità, le prestazioni e l'affidabilità dell'applicazione e dell'infrastruttura.
- Come l'osservabilità rende disponibili i dati dei sistemi che è necessario monitorare.
- Come Monitoraggio di Azure e Application Insights consentono di implementare il monitoraggio continuo.
- Come Connettore di Gestione dei servizi IT può essere utile per implementare un sistema di creazione di ticket.
Che cos'è il monitoraggio continuo?
Il team vuole monitorare il sito Web e l'infrastruttura durante il test beta. Tim ha eseguito qualche ricerca e ha imparato qualcosa.
Il monitoraggio continuo si riferisce ai processi e alle tecnologie che è possibile usare per monitorare ogni fase del ciclo di vita dell'applicazione. Il monitoraggio continuo consente di verificare l'integrità, le prestazioni e l'affidabilità dell'applicazione e dell'infrastruttura mentre le modifiche passano dallo sviluppo alla produzione.
Il monitoraggio continuo è basato sui concetti CI/CD che consentono di sviluppare e fornire software in modo più rapido e affidabile per offrire agli utenti un valore continuo.
Che cos'è l'osservabilità?
L'osservabilità si riferisce alla capacità di rendere disponibili i dati del sistema che si vuole monitorare. Il monitoraggio è l'attività effettiva di raccolta e visualizzazione di questi dati.
Che cos'è Monitoraggio di Azure?
Monitoraggio di Azure è un servizio di Azure che fornisce l'osservabilità completa delle applicazioni e dell'infrastruttura sia nel cloud che a livello locale.
Monitoraggio di Azure funziona con strumenti di sviluppo come Visual Studio e Visual Studio Code ed è quindi possibile usarlo durante le fasi di sviluppo e test. Si integra con Azure DevOps per fornire funzionalità di gestione del rilascio e di gestione degli elementi di lavoro durante le fasi di distribuzione.
Monitoraggio di Azure si integra anche con Gestione dei servizi IT e con gli strumenti relativi alle informazioni di sicurezza e alla gestione degli eventi, che consentono di tenere traccia dei problemi e degli eventi imprevisti nei processi IT esistenti.
Abilitare il monitoraggio per le applicazioni
Le applicazioni sono complesse e includono molti componenti interconnessi. Per visualizzare le transazioni end-to-end e le connessioni in tutto il sistema, è necessario abilitare il monitoraggio per tutti i servizi e le applicazioni Web.
Se non si dispone di un progetto esistente in Azure DevOps, è possibile iniziare con Azure Developer CLI. Azure Developer CLI (azd
) è uno strumento open source che riduce il tempo necessario per trasferire un'applicazione da un ambiente di sviluppo locale ad Azure. azd
offre agli sviluppatori comandi intuitivi basati su procedure consigliate per le principali fasi del flusso di lavoro, sia che si lavori nel terminale, in un editor o un ambiente di sviluppo integrato (IDE) oppure CI/CD (integrazione continua/distribuzione continua).
È quindi possibile aggiungere il monitoraggio continuo alla pipeline di versione combinando Azure Pipelines con Application Insights di Azure. Application Insights è una funzionalità di Monitoraggio di Azure che consente di monitorare le applicazioni attive. Application Insights verrà esaminata a breve in modo più dettagliato.
Abilitare il monitoraggio per l'infrastruttura
Le applicazioni sono solo affidabili come la relativa infrastruttura sottostante. Il monitoraggio abilitato nell'intera infrastruttura consente di raggiungere un'osservabilità completa e facilita l'individuazione delle cause radice di eventuali errori.
Monitoraggio di Azure consente di tenere traccia dell'integrità e delle prestazioni dell'intera infrastruttura ibrida, inclusi contenitori, macchine virtuali, risorse di archiviazione e reti.
Con Monitoraggio di Azure è possibile raccogliere:
- Metriche di piattaforma, log attività e log di diagnostica generati dalla maggior parte delle risorse di Azure senza la necessità di configurazioni aggiuntive.
- Dati di monitoraggio delle macchine virtuali. (Monitoraggio di Azure per le macchine virtuali)
- Dati di monitoraggio dei cluster del servizio Azure Kubernetes. (Monitoraggio di Azure per i contenitori)
L'infrastruttura come codice consente di descrivere, tramite il codice, l'infrastruttura necessaria per l'applicazione. Poiché l'infrastruttura viene descritta usando il codice, è possibile seguire gli stessi schemi di sviluppo, test e controllo delle versioni usati dai team DevOps per le applicazioni.
Per abilitare il monitoraggio usando l'approccio di infrastruttura come codice, è possibile usare:
- Modelli di Resource Manager per abilitare il monitoraggio e configurare gli avvisi tramite un ampio set di risorse.
- Criteri di Azure per applicare regole diverse in base alle risorse. Criteri di Azure garantisce la conformità di tali risorse agli standard aziendali e ai contratti di servizio.
Usare i gruppi di risorse di Azure per combinare le risorse
Un'applicazione tipica in Azure include risorse di calcolo, ad esempio macchine virtuali, il Servizio app di Azure, microservizi, cluster del servizio Azure Kubernetes e Service Fabric di Azure. Queste applicazioni dipendono spesso dai servizi dati e di rete quali Hub eventi di Azure, Archiviazione di Azure, il database Microsoft SQL e il bus di servizio di Azure.
In Azure un gruppo di risorse include le risorse di Azure correlate. Combinare le risorse in un gruppo di risorse di Azure per ottenere l'osservabilità completa di tutte le risorse che costituiscono le diverse applicazioni. Il Monitoraggio di Azure per i gruppi di risorse offre una modalità di base per tenere traccia dell'integrità e delle prestazioni dell'intera applicazione e consente di eseguire il drill-down dei singoli componenti per poter risolvere gli errori.
Garantire la qualità tramite la distribuzione continua
CI/CD consente di integrare e distribuire automaticamente le modifiche del codice all'applicazione, in base ai risultati di test automatizzati. CI/CD semplifica il processo di distribuzione e verifica la qualità del codice prima che le modifiche vengano trasferite nell'ambiente di produzione.
Ecco alcuni modi consigliati per garantire la qualità durante il processo di distribuzione:
Usare Azure Pipelines per implementare una pipeline CI/CD che consenta di automatizzare l'intero processo, inclusa l'esecuzione di test automatizzati, dal momento in cui si esegue il commit del codice fino alla produzione.
Usare i controlli di distribuzione per aggiungere il monitoraggio negli ambienti di pre- e post-distribuzione.
I controlli di distribuzione assicurano che vengano soddisfatte le metriche di integrità e prestazioni chiave (KPI) mentre le applicazioni vengono trasferite dall'ambiente di sviluppo a quello di produzione. I controlli di distribuzione contribuiscono anche a garantire che le eventuali differenze nell'ambiente dell'infrastruttura o nella modalità di dimensionamento non influiscano negativamente sugli indicatori KPI.
Mantenere le istanze di monitoraggio separate nei diversi ambienti di distribuzione, ad esempio quello di sviluppo, test, staging e produzione.
La separazione delle istanze di monitoraggio garantisce che tutti i dati raccolti siano pertinenti per tutte le applicazioni e l'infrastruttura. Se è necessario correlare i dati negli ambienti, è possibile usare i grafici a più risorse in Esplora metriche oppure creare query tra risorse in Analisi dei log.
Creare avvisi su cui è possibile agire
Per assicurarsi che le attività di monitoraggio siano efficaci, è necessario notificare agli amministratori gli eventuali problemi attivi, nonché i problemi che si prevede possano verificarsi. Ecco alcuni modi per eseguire questa operazione:
Creare avvisi in Monitoraggio di Azure in base ai log e alle metriche per identificare gli stati di errore prevedibili.
L'obiettivo è quello di assicurare che ogni avviso rappresenti una condizione critica su cui è possibile agire. Un falso positivo si verifica quando il monitoraggio segnala un problema che non esiste effettivamente. Usare le soglie dinamiche per calcolare automaticamente le regole di base nei dati di metrica, piuttosto che definire le soglie statiche.
Definire le azioni per gli avvisi che vengono notificati più efficacemente agli amministratori.
Le azioni disponibili per la notifica includono SMS (Short Message Service), messaggi di posta elettronica, notifiche push o chiamate vocali.
Usare azioni più avanzate per connettersi allo strumento Gestione dei servizi IT oppure altri sistemi di gestione degli avvisi tramite webhook.
Usare runbook o webhook di Automazione di Azure per monitorare e aggiornare le condizioni di avviso.
Usare la scalabilità automatica per modificare dinamicamente le risorse di calcolo in base alle metriche raccolte.
Creare dashboard e cartelle di lavoro
Assicurandosi che i team operativi e di sviluppo possano accedere agli stessi dati di telemetria e strumenti, è possibile per loro visualizzare gli schemi disponibili nell'intero ambiente e ridurre il tempo medio di rilevamento e il tempo medio di ripristino. Ecco alcuni modi per eseguire questa operazione:
Creare dashboard personalizzati basati su metriche e log comuni per i diversi ruoli all'interno dell'organizzazione.
I dashboard possono combinare i dati provenienti da più risorse di Azure.
Creare cartelle di lavoro di Monitoraggio di Azure per condividere le informazioni tra i team di sviluppo e quelli operativi.
È possibile preparare una cartella di lavoro come report dinamico contenente grafici e riepiloghi dei log. Gli sviluppatori possono creare apposite guide per aiutare il supporto tecnico o gli addetti operativi nella risoluzione dei problemi.
Ottimizzare in modo continuativo
Il monitoraggio è uno degli aspetti fondamentali della celebre filosofia Creazione- Misurazione - Apprendimento, secondo la quale è consigliabile tenere traccia continuamente degli indicatori KPI e delle metriche di comportamento degli utenti per poter ottimizzare i dati attraverso esercizi di pianificazione iterativi. Monitoraggio di Azure consente di raccogliere metriche e log pertinenti per l'azienda e aggiungere nuovi punti dati nella distribuzione successiva.
- Usare gli strumenti in Application Insights per tenere traccia del comportamento e dell'engagement degli utenti finali.
- Usare Analisi di impatto per assegnare la priorità alle aree su cui concentrarsi per migliorare gli indicatori KPI più importanti.
Che cos'è Azure Application Insights?
Application Insights è un servizio di gestione delle prestazioni applicative per sviluppatori Web. Con questa app è possibile:
- Monitorare l'applicazione Web attiva.
- Rilevare automaticamente anomalie nelle prestazioni.
- Diagnosticare errori e comprendere le operazioni che gli utenti effettivamente eseguono con l'applicazione.
Application Insights funziona con .NET, Node.js, Java e molti altri framework e linguaggi di programmazione. Funziona con applicazioni ospitate nel cloud o in locale.
Application Insights fornisce punti di connessione che è possibile usare per l'integrazione con i processi e gli strumenti DevOps esistenti. Application Insights si integra anche con Visual Studio App Center, consentendo di monitorare e analizzare i dati di telemetria dalle applicazioni per dispositivi mobili.
Come funziona Application Insights?
Per iniziare, aggiungere all'applicazione un piccolo pacchetto di strumentazione. Creare quindi una risorsa di Application Insights nel portale di Azure. La strumentazione monitora l'app e invia i dati di telemetria ad Azure, a cui è possibile accedere dal portale. Tenere presente che l'applicazione può essere eseguita ovunque, senza che sia necessariamente ospitata in Azure.
Oltre alle applicazioni Web, è possibile instrumentare praticamente qualsiasi tipo di componente in background. È possibile instrumentare perfino il codice JavaScript.
Di seguito è riportato un diagramma che illustra il flusso dei dati di monitoraggio dai servizi attivi ad Application Insights. Application Insights può quindi generare avvisi o eseguire il push dei dati a un altro strumento, in modo da consentire la visualizzazione e la comprensione delle tendenze.
È anche possibile eseguire il pull dei dati di telemetria dagli ambienti host. Questi dati includono contatori delle prestazioni, log di Diagnostica di Azure e di Docker. È anche possibile configurare test di monitoraggio sintetico. Il monitoraggio sintetico usa un set di transazioni per valutare le prestazioni e la disponibilità. Le transazioni sintetiche sono test prevedibili che consentono di confrontare i risultati da una versione all'altra.
Informazioni sul sovraccarico L'impatto sulle prestazioni dell'app è in genere ridotto. Le chiamate di rilevamento non sono bloccanti e vengono raggruppate in batch e inviate in un thread separato.
Quali sono gli elementi monitorati da Application Insights?
Application Insights aiuta i team di sviluppo a comprendere le prestazioni dell'app e le modalità con cui tale app viene usata.
Elementi monitorati da Application Insights:
Frequenza delle richieste, tempi di risposta e percentuali di errore.
Consente di trovare le pagine più visitate, gli orari di visita e la posizione degli utenti. Vedere quali pagine abbiano prestazioni migliori. Confrontare i tempi di risposta e i tassi di errore con i livelli di traffico.
Servizi esterni per verificare se sono responsabili di rallentamenti.
Eccezioni di applicazione.
Consente di analizzare le statistiche aggregate o selezionare istanze specifiche ed esaminare l'analisi dello stack per individuare le richieste correlate. Application Insights segnala le eccezioni che si verificano sia nel server che nel client.
Prestazioni di caricamento delle pagine Web, come segnalato dal Web browser dell'utente.
Chiamate AJAX dalle pagine Web, inclusi tempi di risposta e percentuali di errore.
Numeri di utenti e sessioni.
Contatori delle prestazioni dai computer server Windows o Linux, ad esempio l'uso di CPU, memoria e rete.
Diagnostica host da Docker o Azure.
Log di traccia diagnostici dall'app. In questo modo, è possibile correlare gli eventi di traccia alle richieste.
Metriche ed eventi personalizzati scritti dallo sviluppatore nel codice del client o del server. Ad esempio, articoli venduti o partite vinte.
Dove è possibile visualizzare i dati di telemetria?
Ecco i modi in cui è possibile visualizzare e tenere traccia dei dati di telemetria:
-
Gli avvisi automatici si adattano ai modelli normali di telemetria dell'app e si attivano quando i dati si discostano dal modello consueto. È anche possibile impostare avvisi per determinati livelli di metriche standard o personalizzate.
-
La mappa delle applicazioni consente di individuare i colli di bottiglia delle prestazioni o le aree sensibili agli errori in tutti i componenti dell'applicazione distribuita.
-
È possibile eseguire Profiler per app ASP.NET e ASP.NET Core che sono in esecuzione nel Servizio app di Azure e che utilizzano il livello di servizio Basic o superiore.
-
Questa funzionalità consente di analizzare la segmentazione degli utenti e la conservazione dei dati.
-
Ricerca consente di trovare ed esplorare elementi singoli di telemetria, ad esempio visualizzazioni pagina, eccezioni o richieste Web.
-
Esplora metriche consente di tracciare grafici, correlare visivamente tendenze e analizzare picchi e flessioni nelle metriche.
-
Quando viene distribuita una nuova build, controllare gli indicatori di prestazioni in tempo quasi reale per assicurarsi che tutto funzioni come previsto.
-
È possibile rispondere a domande difficili sulle prestazioni e sull'utilizzo dell'app usando un linguaggio di query avanzato.
-
È possibile raccogliere uno snapshot di debug dall'applicazione Web attiva.
-
Integrare le metriche di uso con altra business intelligence.
-
Esporta dati non elaborati nell'archivio appena arrivano.
Che cos'è il Connettore di Gestione dei servizi IT?
Il Connettore di Gestione dei servizi IT per Azure offre un'integrazione bidirezionale tra gli strumenti di monitoraggio di Azure e gli strumenti di Gestione dei servizi IT, tra cui:
- ServiceNow
- Provance
- Cherwell
- System Center Service Manager
È possibile integrare gli strumenti di monitoraggio di Azure con il Connettore di Gestione dei servizi IT per:
- Creare o aggiornare elementi di lavoro negli strumenti di Gestione dei servizi IT in base agli avvisi di Azure.
- Eseguire il pull dei dati degli eventi imprevisti e delle richieste di modifica dagli strumenti di Gestione dei servizi IT in Azure Log Analytics.
Gli strumenti di monitoraggio di Azure consentono di identificare, analizzare e risolvere i problemi. Tuttavia, gli elementi di lavoro correlati a un problema vengono in genere archiviati in uno strumento di Gestione dei servizi IT. Con il Connettore di Gestione dei servizi IT è più opportuno implementare un sistema di creazione di ticket. In questo modo, anziché andare avanti e indietro tra lo strumento di Gestione dei servizi IT e gli strumenti di monitoraggio di Azure, è possibile ottenere tutte le informazioni necessarie in un'unica posizione. Il Connettore di Gestione dei servizi IT migliora l'esperienza di risoluzione dei problemi riducendo il tempo necessario per risolvere i problemi stessi.