Introduzione a Log Analytics in Azure Monitor
Azure Log Analytics è uno strumento essenziale per monitorare e gestire in modo efficiente le vostre risorse cloud e on-premises. Fa parte di Azure Monitor, che vi consente di raccogliere, analizzare e agire sui dati provenienti dalle vostre infrastrutture IT, applicazioni e servizi, migliorando l’affidabilità e le prestazioni delle vostre operazioni.
Azure Log Analytics vi permette di raccogliere dati da diverse risorse, inclusi server, macchine virtuali, dispositivi di rete, applicazioni e servizi cloud. Potete raccogliere log e metriche non solo dalle risorse di Azure, ma anche dalle vostre infrastrutture on-premises. Questo significa che avrete una visione centralizzata di tutto l’ambiente IT, con la possibilità di monitorare in tempo reale le condizioni delle risorse, diagnosticare problemi e ottimizzare le prestazioni.
Come funziona?
Una delle caratteristiche più importanti di Log Analytics è l’uso del Kusto Query Language (KQL). Questo linguaggio vi permette di eseguire query sui log raccolti per estrarre informazioni dettagliate e ottenere insight su performance, errori o minacce alla sicurezza. Potete ad esempio interrogare i log delle macchine virtuali per monitorare lo stato della CPU, identificare colli di bottiglia nelle prestazioni o scoprire errori nelle applicazioni.
KQL è semplice da usare, ma potente, e vi consente di eseguire operazioni complesse come aggregare dati, filtrare in base a criteri specifici o creare visualizzazioni grafiche per comprendere meglio i vostri dati. Ad esempio, potete facilmente creare una query per monitorare l’utilizzo della CPU sulle vostre macchine virtuali e creare avvisi per essere notificati quando l’uso supera una soglia critica.
Visualizzazione dei dati
Uno degli aspetti più utili di Log Analytics è la possibilità di visualizzare i dati raccolti in dashboard personalizzabili. Queste dashboard vi permettono di creare grafici e tabelle che mostrano le metriche più rilevanti per il vostro ambiente IT. Utilizzando gli strumenti di visualizzazione come Azure Monitor Workbooks, potete creare rappresentazioni grafiche dei vostri dati in tempo reale, monitorando costantemente lo stato della vostra infrastruttura e delle vostre applicazioni.
In questo modo, avrete sempre sotto controllo lo stato delle vostre risorse e sarete in grado di reagire rapidamente in caso di problemi. Le dashboard vi permettono di visualizzare informazioni come l’utilizzo delle risorse, i tempi di risposta delle applicazioni, e persino la sicurezza dei vostri sistemi.
Notifiche e allarmi
Un’altra funzionalità chiave di Azure Log Analytics è la capacità di creare allarmi e notifiche automatiche. Potete configurare avvisi per essere informati immediatamente quando qualcosa va storto, come un sovraccarico della CPU o un tentativo di accesso non autorizzato. Potete ricevere notifiche tramite email, SMS o utilizzare integrazioni con strumenti di gestione come Azure Automation per eseguire azioni correttive automatiche.
Questa capacità di monitoraggio proattivo vi consente di ridurre i tempi di inattività e intervenire prima che piccoli problemi si trasformino in gravi interruzioni. Potete anche creare flussi di lavoro automatici che rispondano a certe condizioni, ottimizzando la gestione delle vostre risorse.
Sicurezza
La sicurezza è una delle aree in cui Log Analytics eccelle. Potete integrarlo con Microsoft Defender for Cloud per monitorare e proteggere le vostre risorse dalle minacce. Con Log Analytics, potete raccogliere log di sicurezza da firewall, reti e applicazioni, identificare comportamenti sospetti e ricevere avvisi su possibili violazioni. A proposito, avete già dato un’occhiata alla mia guida Introduzione a Microsoft Defender for Cloud – ICT Power?
Questa integrazione con gli strumenti di sicurezza vi consente di migliorare la protezione del vostro ambiente IT e di rispondere rapidamente alle minacce. Inoltre, potete utilizzare Log Analytics per soddisfare requisiti di conformità e creare report dettagliati sulla sicurezza delle vostre operazioni.
Come iniziare con Azure Log Analytics
Per iniziare, dovrete creare un Log Analytics Workspace nel portale di Azure. Questo spazio di lavoro vi permetterà di raccogliere, organizzare e analizzare i vostri dati. Una volta creato, potrete collegare facilmente le vostre risorse Azure, come macchine virtuali e database, nonché risorse on-premise utilizzando agenti specifici. Potrete quindi eseguire query KQL per esplorare i dati raccolti e configurare dashboard personalizzate e allarmi.
Log Analytics supporta un’ampia gamma di integrazioni con altri servizi, come Power BI per la visualizzazione avanzata dei dati e strumenti di terze parti per il monitoraggio di ambienti non Azure.
Figura 1: Creazione di un nuovo workspace in Log Analytics
Figura 2: Schermata riassuntiva del wizard di creazione di un nuovo workspace in Log Analytics
Figura 3: Nuovo workspace in Log Analytics creato con successo
Pricing tier di Azure Log Analtytics
I pricing tier di Azure Log Analytics offrono diverse opzioni per adattarsi alle esigenze di monitoraggio e analisi dei log. Potete scegliere tra vari modelli di prezzo, a seconda del volume di dati raccolti e della durata di conservazione richiesta.
Con il modello Pay-As-You-Go (Addebito a consumo) pagate in base alla quantità di dati raccolti e allo spazio di archiviazione utilizzato. In questo caso il costo per ingestione è addebitato per ogni gigabyte (GB) di dati raccolti, mentre il costo per retention si applica solo se superate il periodo gratuito di conservazione di 31 giorni. È una soluzione ideale se avete volumi di dati variabili e preferite un approccio flessibile.
Se avete una gestione dei dati più prevedibile e costante, il Capacity Reservation può essere più conveniente. Con questo piano prenotate una capacità fissa di ingestione su base giornaliera o mensile, risparmiando rispetto al modello Pay-As-You-Go. Potete riservare capacità da 100 GB al giorno fino a vari terabyte, e qualsiasi eccesso viene addebitato a consumo. Questo approccio vi offre risparmi a lungo termine quando i volumi di dati sono stabili.
Per esigenze minime o di test, c’è il Free Tier (Livello gratuito). Potete raccogliere fino a 500 MB di dati al giorno, con una conservazione massima di 7 giorni. È perfetto per piccole configurazioni o per verificare il servizio prima di un uso più esteso.
Connect to a data source in Azure Log Analytics
Dopo aver creato il workspace di Log Analytics potete procedere a collegare le fonti di dati per iniziare a raccogliere e analizzare i log. Azure Log Analytics supporta una vasta gamma di fonti di dati che vi permettono di monitorare e analizzare sia risorse in Azure che in ambienti on-premises o in altre piattaforme cloud. Potete raccogliere log e metriche dalle vostre infrastrutture, come le macchine virtuali Windows e Linux, utilizzando l’Azure Monitor Agent (AMA). Questo agente vi consente di catturare dati come eventi di sistema, syslog e contatori delle prestazioni dal sistema operativo e dalle applicazioni che vi girano sopra. È possibile configurare il monitoraggio di container e cluster Kubernetes attraverso Container Insights, che vi fornisce dati relativi all’utilizzo e alle prestazioni dei container.
Inoltre, potete configurare log diagnostici per raccogliere dati dalle risorse di Azure, come App Services, SQL Database, o altre risorse. Questi dati includono informazioni su eventi specifici o configurazioni di sistema per supportare il monitoraggio delle operazioni eseguite sulle risorse. Se utilizzate Application Insights, potete monitorare le vostre applicazioni, raccogliendo log operativi, metriche e tracce che vi aiuteranno a capire meglio le prestazioni e l’integrità delle applicazioni stesse.
Se avete necessità di monitorare dati personalizzati, potete definire dei log personalizzati che raccolgono log specifici da file di testo o da applicazioni che generano log in formati particolari. Azure Log Analytics vi consente anche di raccogliere e analizzare dati di rete, come il traffico o i problemi di diagnostica, tramite Azure Monitor per reti, aiutandovi a monitorare la comunicazione e il traffico tra le risorse all’interno delle reti virtuali.
Figura 4: Connessione dei data source a Log Analytics
Per il monitoraggio delle macchine virtuali in Azure si utilizzano le Data Collection Rules (DCR). Le DCR definiscono quali dati vengono raccolti dalle VM e inviati a un workspace di Log Analytics. Con l’introduzione dell’Azure Monitor Agent (AMA), le Data Collection Rules sono diventate fondamentali per configurare la raccolta di dati come log di eventi di Windows, syslog di Linux, e contatori delle prestazioni.
Le Data Collection Rules offrono un maggiore controllo e flessibilità nella raccolta dei dati rispetto al precedente Log Analytics Agent, permettendo di configurare esattamente quali dati devono essere raccolti, da quali risorse, e come devono essere trattati prima dell’invio al workspace. Con le DCR, potete anche applicare trasformazioni ai dati prima che vengano inviati a Log Analytics, riducendo i costi di ingestione e ottimizzando l’efficienza.
In pratica, quando create una DCR, specificate le fonti di dati da cui raccogliere log o metriche e stabilite le condizioni per il monitoraggio delle macchine virtuali. Questo include la definizione del tipo di log da raccogliere, come ad esempio i Windows Event Logs o i log di sistema Linux, e la configurazione di quali log inviare al workspace di Log Analytics per l’analisi.
Vi rimando alla lettura dell’articolo Configurare le Data Collection Rule in Azure Monitor per il monitoraggio delle macchine virtuali – ICT Power per maggiori approfondimenti.
Il monitoraggio delle macchine virtuali in Azure può essere abilitato in due modi:
- Direttamente dalla macchina virtuale (VM): Potete selezionare la VM specifica nel portale di Azure e accedere al nodo Monitoring | Logs per configurare il monitoraggio. Questa opzione permette di collegare la VM a un workspace di Log Analytics e configurare rapidamente quali log raccogliere, come gli eventi di sistema o le metriche delle prestazioni. Questa è la strada più semplice e immediata per abilitare il monitoraggio di base direttamente da una risorsa.
- Modificando o creando una Data Collection Rule (DCR): Se desiderate avere un controllo più granulare o monitorare diverse risorse con criteri specifici, potete creare o modificare una Data Collection Rule (DCR). La DCR consente di definire quali dati raccogliere da una o più VM e di applicare trasformazioni o filtrare i dati prima che vengano inviati al workspace di Log Analytics. Le DCR vi permettono anche di configurare la raccolta di dati avanzata, come l’integrazione di log personalizzati o specifici contatori di prestazioni.
Figura 5: Abilitazione del monitoraggio direttamente dalla macchina virtuale
Figura 6: Scelta della Data Collection rule da utilizzare o eventuale creazione di una nuova regola
Figura 7: Aggiunta della macchina virtuale da monitorare modificando le risorse di una Data Collection Rule esistente
Figura 8: Macchina virtuale aggiunta alla Data Collection Rule e inizio dell’installazione dell’estensione di monitoraggio
Nella VM verrà installata l’estensione AzureMonitorWindowsAgent per garantire che i dati di monitoraggio possano essere raccolti in tempo reale. Dopo l’installazione dell’estensione, i log configurati nella DCR inizieranno a essere raccolti e inviati al workspace per analisi e visualizzazioni.
Figura 9: Nella Azure VM è stata installata l’estensione AzureMonitorWindowsAgent
Analisi dei log
L’analisi dei log è uno degli usi più potenti di Azure Log Analytics, in quanto consente di monitorare, diagnosticare e ottenere informazioni dettagliate sul comportamento delle risorse cloud e on-premises. Utilizzando Kusto Query Language (KQL) potete eseguire query sui dati raccolti per identificare problemi di prestazioni, errori, attività sospette e molto altro.
Figura 10: Analisi dei log utilizzando Kusto Query Language (KQL)
Se non siete pratici del linguaggio KQL e volete iniziare ad utilizzarlo, potete cominciare dal Community Git Repo. All’interno del repository Azure Monitor Community troverete una serie di risorse utili che vi permetteranno di sfruttare al massimo Azure Monitor per il monitoraggio delle vostre risorse e applicazioni. Quando navigate nel repository, vi imbatterete in diverse query Kusto (KQL) che sono state progettate per affrontare scenari comuni come l’analisi delle performance, il monitoraggio della sicurezza o la gestione delle risorse in ambienti cloud. Queste query vi permetteranno di interrogare i log raccolti e ottenere rapidamente informazioni utili per migliorare l’efficienza delle vostre operazioni.
Un altro elemento chiave del repository sono i workbooks personalizzati, strumenti potenti per creare dashboard interattive e visualizzare i dati raccolti in modo più comprensibile. Utilizzando questi workbooks, potrete monitorare in tempo reale l’andamento delle risorse, tenere sotto controllo i livelli di utilizzo o individuare problemi critici nelle vostre applicazioni o infrastrutture. Sono pensati per coprire diversi scenari, dall’analisi delle performance applicative alla gestione di eventi di sicurezza.
Troverete anche soluzioni per facilitare la configurazione e l’automazione del monitoraggio. Questi strumenti vi permetteranno di implementare rapidamente Azure Monitor nelle vostre architetture, automatizzando la creazione di alert, la raccolta delle metriche e l’integrazione con altri servizi Azure. Potrete così risparmiare tempo ed evitare configurazioni manuali complesse, sfruttando al meglio le best practice che altri membri della community hanno già messo a punto.
Il repository è costruita per essere un punto di incontro per i contributi della community. Voi stessi potrete contribuire, condividendo le vostre esperienze, le vostre query personalizzate o migliorando i workbooks esistenti. La filosofia alla base di questo progetto è quella di creare uno spazio collaborativo in cui sviluppatori, amministratori e ingegneri possano trovare e condividere soluzioni pronte all’uso per ottimizzare il monitoraggio con Azure Monitor.
Figura 11: Repository Azure Monitor Community
Con che frequenza i log vengono inviati a Log Analytics?
Il tempo necessario affinché l’Azure Monitor Agent (AMA) o il vecchio Log Analytics Agent (che vi ricordo non è più supportato dal 31/08/2024 Migrazione di Log Analytics Agent verso Azure Monitoring Agent per continuare la log collection in Microsoft Sentinel – ICT Power) invii le informazioni al Log Analytics Workspace dipende dal tipo di dati raccolti e dalla configurazione dell’agente stesso. In generale, i tempi di invio dei dati possono variare, ma qui ci sono alcune indicazioni:
1. Log diagnostici e Eventi: Per quanto riguarda log di eventi di sistema o log di diagnostica raccolti da risorse come VM o Web App, l’agente invia i dati a Log Analytics con un ritardo generalmente compreso tra 5 e 15 minuti. Questo tempo include il processo di raccolta dei log, l’invio al workspace e la loro disponibilità per le query.
2. Metriche di Performance: Le metriche di performance come l’uso della CPU, la memoria, il disco o la rete di una macchina virtuale possono avere un ritardo simile. In media, le metriche di performance vengono inviate ogni 1-5 minuti, a seconda della configurazione dell’agente e della frequenza con cui le metriche vengono raccolte.
3. Configurazione delle soglie di invio: Potete configurare il comportamento dell’agente in termini di frequenza di raccolta e invio dei dati:
- Log di Eventi e diagnostica: generalmente raccolti ogni 5-15 minuti.
- Metriche di performance: la raccolta può essere configurata per invii più frequenti (ogni minuto) o meno frequenti (ogni 5 minuti).
- Dati di sicurezza: i dati legati a eventi di sicurezza possono essere inviati quasi in tempo reale, con un ritardo minimo.
4. Application Insights (per le Web App): Se utilizzate Application Insights per monitorare una Web App i dati di telemetria (come richieste HTTP, eccezioni e dipendenze) sono inviati quasi in tempo reale con un ritardo di 2-5 minuti, a seconda del carico e delle configurazioni di campionamento.
5. Query e visualizzazione nelle dashboard: Dopo che l’agent invia i dati a Log Analytics, questi sono generalmente disponibili per le query entro pochi minuti. Potreste notare un leggero ritardo prima che le dashboard o i report mostrino i dati più recenti, ma questo ritardo è di solito limitato a pochi minuti.
Eseguire query con KQL per monitorare le Azure VM
KQL (Kusto Query Language) è un linguaggio di query sviluppato da Microsoft per lavorare con i dati in Azure Data Explorer, un servizio cloud per l’analisi di grandi quantità di informazioni. Lo usate per analizzare rapidamente dati di log, telemetria o monitoraggio e ottenere risposte rapide a domande complesse. Lo trovate anche in altri strumenti Microsoft, come Azure Monitor e Log Analytics, che servono per il monitoraggio delle prestazioni e la gestione dei log.
La sintassi di KQL è simile a SQL, ma è ottimizzata per l’analisi di dati logici e di telemetria. Potete utilizzarlo per filtrare, aggregare e trasformare i dati in modo efficiente, specialmente quando lavorate su dataset di grandi dimensioni, come quelli usati per monitorare infrastrutture o applicazioni.
Una volta che l’agent inizia a raccogliere i dati, potete eseguire query in Azure Log Analytics utilizzando il Kusto Query Language (KQL) per analizzare le performance della VM. Ecco alcuni esempi di query utili:
- Monitorare l’utilizzo della CPU:
1 2 3 4 |
Perf | where ObjectName == "Processor" and CounterName == "% Processor Time" | summarize avgCPU = avg(CounterValue) by Computer | order by avgCPU desc |
Questa query mostra l’utilizzo medio della CPU per ogni macchina virtuale monitorata.
- Monitorare la memoria disponibile:
1 2 3 4 |
Perf | where ObjectName == "Memory" and CounterName == "Available MBytes" | summarize avgAvailableMemory = avg(CounterValue) by Computer | order by avgAvailableMemory asc |
Vi permette di monitorare quanta memoria è disponibile sulla vostra VM.
- Verificare gli eventi di riavvio della VM:
1 2 3 |
Event | where EventID == 1074 | project TimeGenerated, Computer, UserName, EventData |
Questa query permette di vedere quando la VM è stata riavviata e da chi.
Figura 12: Esempio di esecuzione di una query KQL
Creare allarmi per condizioni critiche
Uno degli strumenti più potenti di Azure Log Analytics è la possibilità di creare allarmi basati su query KQL. Potete configurare un allarme che vi avvisa quando le prestazioni della VM raggiungono determinate soglie.
Ad esempio se volete creare un allarme per l’utilizzo della CPU oltre il 90%, andate al vostro Log Analytics Workspace e aprite Alerts. Cliccate su Create e quindi Alert rule e scegliete la query KQL che avete eseguito in precedenza per monitorare la CPU:
1 2 3 4 |
Perf | where ObjectName == "Processor" and CounterName == "% Processor Time" | where CounterValue > 90 | summarize avgCPU = avg(CounterValue) by Computer |
Impostate una condizione per attivare l’allarme quando il valore è maggiore di 90 e configurate l’azione dell’allarme, come inviare un’email, un SMS o eseguire un’azione automatizzata. Questo allarme vi notificherà immediatamente se la CPU della vostra VM supera il limite critico del 90%, permettendovi di intervenire tempestivamente.
La stessa operazione si può fare anche da interfaccia grafica, come mostrato nella figura sotto:
Figura 13: Creazione di una nuova Alert rule
Dopo aver creato una alert rule su Azure Monitor, potrete visualizzare gli alert generati direttamente nella schermata dedicata agli alert all’interno del portale di Azure.
Una volta che l’alert rule è attiva e le condizioni definite nella regola sono soddisfatte (ad esempio, il superamento di una soglia di CPU o la generazione di un evento specifico), la schermata “Alert” mostrerà gli alert attivi e lo storico degli alert precedenti. Potrete visualizzare informazioni dettagliate su ogni alert, come:
- Nome dell’alert: Il nome che avete assegnato alla regola dell’alert.
- Gravità: Un’indicazione del livello di urgenza dell’alert, che varia da critico (Sev0) a informativo (Sev4).
- Stato: Se l’alert è attivo o è stato risolto.
- Descrizione e Dettagli: Ulteriori dettagli su cosa ha attivato l’alert (ad esempio, superamento della soglia di CPU o di memoria).
- Data e ora: Il momento in cui l’alert è stato generato.
Se volete gestire gli alert, potrete filtrare la schermata per visualizzare solo gli alert attivi o storici, modificare lo stato di un alert (ad esempio, impostarlo come “closed” una volta risolto) o configurare azioni automatiche in risposta all’alert, come inviare notifiche via email o SMS.
Figura 14: Creazione dell’alert rule completata
Cliccando su Alert rules potrete visualizzare l’elenco completo delle regole di allarme che avete creato. Da questa schermata, avrete la possibilità di rivedere i dettagli di ciascuna regola e, se necessario, modificarla.
Ogni alert rule può essere aperta per esaminare i parametri specifici che sono stati configurati, come la condizione di attivazione (ad esempio, il superamento di una soglia di CPU), la frequenza di valutazione e le azioni associate (come l’invio di notifiche o l’esecuzione di automazioni). Se dovete cambiare una soglia, una metrica o modificare le azioni di risposta all’alert, potete farlo direttamente modificando la regola dalla stessa schermata. Inoltre, potrete aggiungere nuove azioni o aggiornare le configurazioni esistenti, come cambiare la destinazione delle notifiche o impostare integrazioni con strumenti di gestione IT. Questa flessibilità vi consente di ottimizzare il comportamento degli alert senza doverli ricreare da zero.
Figura 15: Visualizzazione e modifica dell’alert rule creata
Come già scritto prima, la schermata Alerts mostrerà gli alert attivi e lo storico degli alert precedenti. Nella figura sottostante viene visualizzato un esempio di alert generato dalla regola appena creata. Questo alert è stato attivato quando le condizioni definite nella regola sono state soddisfatte (ad esempio, il superamento di una soglia di utilizzo della CPU). Potete vedere il nome della regola che ha generato l’alert, la risorsa interessata e il livello di gravità dell’alert.
Da questa schermata, potrete anche cliccare sull’alert per esaminare ulteriori dettagli, come il tipo di evento che ha scatenato l’alert e le azioni intraprese (come notifiche inviate via email o esecuzione di script automatici).
Figura 16: Schermata Alerts con una panoramica degli alert attivi e lo storico di quelli precedenti
Oltre alla visualizzazione degli alert nel portale di Azure, quando viene generato un alert a seguito di una alert rule, viene inviata anche un’email di notifica agli indirizzi configurati durante la creazione della regola. L’email conterrà informazioni dettagliate sull’alert, come:
- Nome della regola che ha generato l’alert.
- Dettagli della risorsa monitorata (ad esempio, il nome della VM, applicazione o servizio che ha superato una soglia).
- Condizione che ha attivato l’alert (come il superamento di una soglia di CPU o memoria).
- Livello di gravità dell’alert, per aiutare a determinare la priorità della risposta.
- Data e ora dell’evento.
Questa notifica email vi permette di essere informati in tempo reale anche se non state attivamente monitorando la schermata degli alert nel portale di Azure. Grazie a questa funzionalità, potete reagire rapidamente e intraprendere le azioni necessarie, come investigare l’alert o intervenire sulla risorsa interessata.
Inoltre, è possibile personalizzare l’email di notifica e inviarla a più destinatari o integrarla con strumenti di gestione incidenti, come Microsoft Teams, in modo da garantire una risposta tempestiva agli alert critici.
Figura 17: Ricezione di una mail a seguito di un Alert
Conclusioni
Azure Log Analytics è uno strumento fondamentale per monitorare, analizzare e gestire in modo efficace le risorse IT in ambienti cloud, ibridi e on-premise. Grazie alla sua capacità di raccogliere e centralizzare dati provenienti da varie fonti, come macchine virtuali, applicazioni, servizi e reti, offre una visione completa dell’infrastruttura.
Attraverso l’uso del Kusto Query Language (KQL), consente di eseguire query avanzate per ottenere informazioni dettagliate sui log e le metriche raccolte, permettendo di diagnosticare rapidamente problemi e ottimizzare le prestazioni delle risorse. Le dashboard personalizzate e i workbooks offrono visualizzazioni intuitive e interattive che aiutano a monitorare lo stato delle risorse in tempo reale, mentre la possibilità di creare allarmi proattivi consente di reagire tempestivamente a eventi critici.
Azure Log Analytics, integrato con strumenti come Azure Monitor e Microsoft Defender for Cloud, è particolarmente utile per il monitoraggio della sicurezza e il rilevamento delle minacce, offrendo una protezione avanzata contro vulnerabilità e attacchi. Inoltre, la sua scalabilità e flessibilità lo rendono ideale per aziende di ogni dimensione, fornendo un livello di controllo e automazione che aiuta a migliorare la gestione delle risorse IT e a garantire un’elevata disponibilità e affidabilità.