Articoli

In questo articolo mostriamo una panoramica di alcune interessanti feature introdotte recentemente nel servizio Azure Monitor, che ci consentono con pochi semplici passaggi di avere a disposizione un ricco set di informazioni e metriche per le nostre VM, facilmente gestibili dal portale.

Fino a non molto tempo fa, la gestione del monitoraggio di risorse “Infrastructure as a Service” su Azure, nonostante esistessero già appositi servizi sulla piattaforma, presentava alcune difficoltà: oggi invece, le feature offerte dal servizio Azure Monitor consentono di gestire in maniera centralizzata la configurazione e offrono un’esperienza d’uso notevolmente migliorata, aiutandoci a ottimizzare l’operatività e le performance.

Se parliamo essenzialmente di Azure Virtual Machine, servizio su cui ci focalizzeremo in questo articolo, i primi strumenti consentivano infatti di raccogliere un insieme di metriche e log che non aveva un livello di completezza paragonabile a quello delle piattaforme on premise: sin dall’inizio sono state ad esempio disponibili molte metriche relative allo stato dell’host (ovvero il server fisico nel datacenter dove è in esecuzione la Virtual Machine) ma un insieme invece molto limitato per quanto riguardava le metriche del sistema operativo (a livello denominato “Guest”).

Inoltre, l’estrazione e correlazione dei dati dai log era talvolta piuttosto macchinosa e la reportistica a disposizione piuttosto basilare.

Mostriamo quindi in questo articolo come negli ultimi anni il servizio Azure Monitor si sia arricchito di interessanti funzionalità che consentono in molti casi una gestione completa, dalla raccolta dei log fino all’attivazione di allarmi e notifiche, direttamente dal portale Azure, offrendo anche dashboard e report avanzati e personalizzabili.

Le basi: il servizio Azure Monitor, le origini dati e i loro archivi

Azure Monitor è un servizio che aiuta a ottimizzare l’operatività e le performance di applicazioni e servizi e permette di raccogliere, analizzare ed eseguire operazioni sui dati di telemetria in ambienti sia cloud che on premise.

Il servizio Monitor si basa su diverse origini dati supportate (applicazioni, sistemi operativi, risorse varie sia Azure che on premise, sottoscrizioni e tenant Azure) che vanno a popolare degli archivi dati (divisi tra Metriche e Log).

Le Metriche sono valori numerici che vengono raccolti a intervalli regolari e che descrivono un aspetto di un sistema o servizio in un determinato momento (es. nel caso delle Virtual Machine: carico della CPU, utilizzo della banda, dei dischi, ecc.).

I Log sono eventi che avvengono nel sistema e che possono contenere diversi tipi di dati, strutturati oppure in un formato di testo libero con un riferimento temporale collegato.

Il servizio Azure Monitor mette quindi a disposizione diverse funzioni che si basano su questi archivi dati, e consentono attività di visualizzazione, analisi e azioni di risposta sui dati raccolti. Oltre alla raccolta dei dati abbiamo anche alcune funzionalità che consentono di metterli in correlazione e ricevere avvisi o notifiche in modo proattivo se si verificano determinati eventi.

I dati raccolti possono essere salvati in diverse tipologie di archivio in Azure, ma il metodo più indicato e che illustreremo negli esempi è il salvataggio all’interno di un’area di lavoro (detta “workspace”) del servizio Azure Log Analytics.

Per la creazione di un Log Analytics Workspace rimandiamo per brevità a questo documento (inserire questo link Create a Log Analytics workspace in the Azure portal – Azure Monitor | Microsoft Docs)

Azure Monitor inizia a raccogliere dati non appena viene creata una sottoscrizione, ma per usufruire di tutte le funzionalità, determinate feature richiedono alcune attività di configurazione.

In sintesi, la configurazione di Azure Monitor avviene combinando la configurazione delle componenti dell’Azure Monitor stesso con alcune configurazioni specifiche delle risorse Azure che ci interessa monitorare, in modo che queste possano generare i dati di monitoraggio da raccogliere: vedremo delle interessanti applicazioni pratiche applicate alle Virtual Machine negli esempi che seguono.

Monitoraggio avanzato Virtual Machine: VM Insights

Di default, nel menu di una Virtual Machine, selezionando la voce Overview abbiamo a disposizione un apposito tab denominato Monitoring che mostra le metriche più importanti come CPU, uso della Network e del Disco.

Il servizio VM Insights permette invece di customizzare ulteriormente il monitoraggio con feature aggiuntive specifiche per le VM come i Workbook (report avanzati), l’installazione semplificata di agenti che raccolgono dati dal sistema guest (Log Analytics agent e Dependency agent) e la mappa delle dipendenze che mostra come i processi in esecuzione sulla VM interagiscono con componenti esterne.

Per abilitare VM Insights per prima cosa è necessario creare un Log Analytics Workspace seguendo i passaggi mostrati ad esempio nel link della sezione precedente.

Quindi nel menu della VM sotto la sezione Monitoring, scegliamo Insights e nella schermata successiva facciamo click su Enable: nel caso la VM non fosse ancora collegata a un Log Analytics Workspace, nella schermata che segue possiamo selezionare il workspace che abbiamo appositamente creato e scegliere Enable.

A questo punto l’installazione è completata e nella sezione Monitor del menu della VM, alla voce Insights potremo iniziare a visualizzare e gestire i dati, raggruppati in diversi tab.

Questo è il tab Performance, che ci permette di tracciare l’evoluzione nel tempo di alcune importanti metriche per le VM:

Nella schermata Performance, ora visibile nel pannello di destra, vediamo che è possibile visualizzare direttamente nel portale delle metriche dettagliate che di solito vengono rilevate configurando dei performance counter all’interno delle macchine: in questo caso gli IOPS (operazioni Input/Output per secondo) e il throughtput (ovvero la portata del flusso dati in MB/s), due importanti metriche relative all’uso del disco.

Un ulteriore strumento per analisi avanzate lo troviamo invece nel tab Map, dove possiamo visualizzare i processi e le dipendenze della VM, comprese anche le connessioni di rete.

Nel menu di destra della sezione Map è possibile, inoltre, accedere a diversi tab con una serie dettagliata di informazioni (Log Events, Alerts, Connection, Changes), ad esempio navigando nel primo tab Properties possiamo accedere a questa sezione “Machine Properties” che mostra un riepilogo di tutte le info fondamentali sulla configurazione della VM (indirizzi, nome DNS, dotazione HW ecc.):

Monitoraggio avanzato Virtual Machine: raccogliere log dal Sistema Operativo

Sempre con VM Insights, possiamo fare un ulteriore passo avanti aggiungendo la raccolta dei log a livello di sistema operativo guest. Per fare questo è necessario effettuare una configurazione aggiuntiva tramite un’apposita regola – Data collection rule – a livello del servizio Azure Monitor stesso.

È sufficiente, nella sezione Settings del menu del servizio Azure Monitor, aprire Data Collection Rules e lanciare +Create per fare partire il wizard di configurazione della regola.

Una regola di data collection ci consente di specificare le categorie di dati da raccogliere e a quali destinazioni inviarle: dopo avere selezionato le nostre VM nella sezione Resources, alla sezione Collect and deliver lanciamo +Add data source e nel tab Data source come valore di Data source type dal relativo menu scegliamo Windows event logs, e avremo così la possibilità di catturare gli eventi direttamente dall’event viewer della VM selezionando il registro e il livello di criticità:

Infine, ci spostiamo nel tab Destination e aggiungiamo una nuova destinazione con Add destination, scegliendo come tipologia Azure Monitor Logs per fare in modo di inviare i dati raccolti al nostro Log Analytics Workspace precedentemente creato, il cui nome specifichiamo nel campo Account or namespace.

A questo punto abbiamo la possibilità di gestire i dati raccolti dal sistema operativo direttamente nella sezione Monitoring nel menu delle VM.

Se nel menu scegliamo Log accediamo all’editor di Log Analytics che ci consente di lanciare delle query nel linguaggio KQL (Kusto Query Language), con la possibilità di partire anche da un ricco set di query già pronte: ad esempio sarà sufficiente digitare Events nel codice della query, specificare un intervallo di tempo nell’apposito filtro Time Range e lanciare Run, per visualizzare nei risultati gli eventi dell’Event Viewer delle VM raccolti dall’agente di Monitor.

Per un approfondimento su come analizzare i dati di Log Analytics scrivendo delle query in KQL, che andrebbe oltre gli scopi di questo articolo, vi consigliamo il documento “Log Analytics tutorial” (aggiungere questo link Log Analytics tutorial – Azure Monitor | Microsoft Docs)

Monitoraggio avanzato Virtual Machine: ricevere alert in caso di problemi

Per gestire in maniera proattiva il monitoraggio, spesso è utile essere anche avvisati allo scattare di determinate condizioni con degli allarmi personalizzati. A tale scopo Azure Monitor mette a disposizione la configurazione di Alert Rules.

Vediamo per esempio come configurare un alert di tipo Log  basato sempre su VM Insights, in modo da potere specificare delle condizioni logiche, anche complesse, basate sul contenuto dei log. Ad esempio, possiamo intercettare la situazione in cui la macchina non sia disponibile.

Se nella sezione Map di Insights scegliamo il tab Log Events, possiamo selezionare l’evento di tipo Heartbeat che è il segnale periodico che ci indica se la macchina risponde o meno.

Verremo così portati all’editor di query di Log Analytics dove troveremo la query preimpostata (ma che possiamo modificare) che rileva gli eventi di tipo Heartbeat.

Possiamo creare la regola di alert direttamente dall’editor lanciando + New alert rule dal menu in alto.

Entreremo quindi nel wizard di creazione della regola: qui, sotto la sezione Condition, facciamo click sul link Whenever the average custom log search…. sotto il Condition name in modo da aprire la sezione Configure signal logic sulla destra, configurandola come mostrato nella figura:

In sintesi, abbiamo impostato una logica che fa scattare un alert quando la query restituisce 0 risultati, quindi l’Heartbeat è assente e la VM non sta rispondendo, e facciamo valutare la condizione ogni 5 minuti sulla finestra temporale dei 5 minuti precedenti.

Il secondo elemento fondamentale di un alert sono le Actions che possiamo specificare nell’apposita sezione: in pratica rappresentano il tipo di notifica da inviare allo scattare delle condizioni.

Scegliamo Add action groups: un action group consente di definire delle combinazioni di destinatari e tipologie di notifiche utilizzabili per gli avvisi (per es. e-mail e SMS).

Quindi, specificando altri dettagli come, ad esempio, il livello di gravità (Severity) dell’allarme, si conclude la creazione della regola.

A questo punto entrando nella sezione Alerts del menu del servizio Monitoring possiamo visualizzare gli eventuali alert che dovessero scattare: nella schermata principale vediamo un raggruppamento di tutti gli alert in base alla Severity (vediamo subito se ce ne sono di nuovi in base al valore 1 nella colonna New), quindi facendo click sulla Severity che ci interessa (es. Severity 1), possiamo visualizzare l’elenco degli alert relativi e ritrovare quello da noi configurato, che viene mostrato insieme alle risorse impattate, l’ora dell’evento che lo ha fatto scattare e ulteriori dettagli.

Contestualmente, i contatti che erano stati specificati nell’Action Group riceveranno un messaggio via mail o SMS in base alle tipologie di notifiche configurate, contenente gli stessi dettagli dell’alert visualizzato nel portale.

Conclusioni

Spesso in passato gli amministratori di sistema, nei casi in cui si rendeva necessario implementare un monitoraggio avanzato e personalizzabile, si trovavano a scegliere di integrare i servizi della piattaforma Azure con strumenti di monitoraggio di terze parti, rendendo però più frammentaria la gestione della piattaforma e talvolta incrementando i costi e la complessità di gestione.

Gli esempi mostrati sono solo una piccola parte di ciò che il servizio offre ma ci auguriamo abbiano dato un’idea utile a valutare l’adozione di Azure Monitor come strumento principale per il monitoraggio dell’infrastruttura Azure.

 

 

Fonti:

Azure Monitor overview – Azure Monitor | Microsoft Docs

What is monitored by Azure Monitor – Azure Monitor | Microsoft Docs

https://docs.microsoft.com/en-us/azure/azure-monitor/best-practices-data-collection#monitor-virtual-machines

Monitor virtual machines with Azure Monitor: Alerts – Azure Monitor | Microsoft Docs

 

Link di approfondimento o altri link:

Create a Log Analytics workspace in the Azure portal – Azure Monitor | Microsoft Docs

Log Analytics tutorial – Azure Monitor | Microsoft Docs

 

Microsoft Azure è una piattaforma di Cloud Computing accessibile tramite un portale online che consente di accedere e gestire i servizi e le risorse cloud forniti da Microsoft

 

Azure Engineer