Che cos'è il monitoraggio dei database Azure?
Il monitoraggio dei database Azure si occupa del monitoraggio dei database basati su Azure. Questi includono non solo i database cloud-nativi come Azure Cosmos DB, ma anche le istanze completamente gestite dei database supportati dal cloud Azure. Il monitoraggio dei database Azure è un sottoinsieme del monitoraggio dei database cloud in generale, che comprende tutti i database in esecuzione su qualsiasi cloud. Il monitoraggio del cloud comprende tutti i vari database del cloud, quindi anche il monitoraggio dei database del cloud.
I servizi di database di Azure hanno diversi ambiti di applicazione e supportano diversi tipi di database. Oltre al Cosmos DB nativo di Azure, è possibile ospitare Microsoft SQL Server, MySQL, PostgreSQL e MariaDB. Tutti questi sono database SQL, quindi non ci sono differenze significative tra il loro monitoraggio. Questo semplifica in qualche modo il monitoraggio dei database di Azure e rende la nostra guida più breve. In seguito vedremo le differenze effettive tra i vari servizi di database di Azure in termini di monitoraggio, ma prima dobbiamo chiarire come avviene il monitoraggio dei database di Azure.
Come viene eseguito il monitoraggio dei database Azure?
La prima tappa per un amministratore del cloud che vuole monitorare i database di Azure è Azure Monitor. Si tratta del più importante strumento di monitoraggio integrato per i cloud Azure, che riassume i dati di tutti i servizi e le risorse del cloud Azure, compresi i database. Fornisce dashboard personalizzabili che consentono agli amministratori di avere uno sguardo immediato sull'andamento dei database. Per la risoluzione dei problemi e per approfondimenti, è disponibile Azure Database Insights per il monitoraggio dei database Azure SQL, che fornisce approfondimenti personalizzati sulle prestazioni, raccomandazioni sulle prestazioni e funzionalità di monitoraggio proattivo. Supporta tutti i database Azure SQL, sia completamente gestiti che non.
Ulteriori approfondimenti possono essere ottenuti con i dashboard di Azure SQL Analytics. Quest'ultimo si integra con Azure Monitor e fornisce una soluzione di monitoraggio basata sul cloud, in particolare per monitorare le prestazioni di tutti i database Azure SQL, attraverso più sottoscrizioni, in un'unica vista.
Utilizzando uno di questi dashboard aggiuntivi o semplicemente Azure Monitor, è possibile impostare regole di monitoraggio e avvisi personalizzati. Queste non sono personalizzabili come quelle di uno strumento di monitoraggio di terze parti, ma sono sufficienti per iniziare.
Se è necessario qualcosa di più, e questo sarà molto probabilmente il caso delle organizzazioni medio-grandi, è necessaria una soluzione di monitoraggio specifica che integri le funzionalità di monitoraggio dei database di Azure. Supportando il monitoraggio di Azure SQL e di Azure NoSQL, queste soluzioni offrono un aiuto più completo e personalizzabile agli amministratori del cloud per capire come si comportano i loro database e prevenire le interruzioni. L'uso di questi strumenti è possibile attraverso l'API REST di Azure o l'implementazione di agenti di monitoraggio personalizzati. Soprattutto questi ultimi possono offrire un ampio margine di personalizzazione e una serie di metriche accessibili, rappresentando quindi la soluzione giusta per molti casi estremi, come il monitoraggio di ambienti enormi, con un gran numero di componenti hardware o servizi da monitorare, o quando si hanno esigenze personalizzate che non sono soddisfatte da nessuno degli strumenti di monitoraggio dei database Azure disponibili.
Monitoraggio dei database SQL di Azure
Che si utilizzi Azure database per MySQL o Azure database per PostgreSQL, il monitoraggio di Azure SQL si basa su una serie di metriche simili. Queste possono essere suddivise in metriche di calcolo, di archiviazione e di richiesta (come lavoratori, sessioni e connessioni al database).
La prima categoria comprende i classici utilizzo della CPU e della memoria, ma non solo. Il monitoraggio di Azure SQL utilizza due modelli per calcolare l'utilizzo delle risorse e i relativi costi sostenuti. Il modello DTU (unità di transazione del database) fonde l'utilizzo del calcolo e dello storage dei database Azure in DTU. Questo modello diventa un'unità di misura che, a seconda del livello di servizio, addebita e limita l'utente una volta che l'utilizzo delle risorse sale abbastanza in alto. L'altro modello è quello dei vCores (core virtuali), che calcola i costi di calcolo dei database, con differenze tra quelli provvisti e quelli senza server.
Pertanto, tenere traccia delle metriche di calcolo è importante per capire come si stanno utilizzando le risorse del cloud Azure, se potrebbe essere necessario un diverso livello di utilizzo e controllare i costi. Il modello vCores si basa sulle tipiche metriche di calcolo relative all'utilizzo della memoria e della CPU, mentre quello DTU aggiunge metriche specifiche come la percentuale DTU e il limite DTU, che indicano la percentuale di DTU in uso rispetto al massimo consentito.
I database non sono solo carichi di lavoro di calcolo, ma lo spazio di archiviazione utilizzato è un aspetto importante del loro funzionamento efficiente. Pertanto, il monitoraggio di Azure SQL prevede la raccolta di metriche relative allo spazio di archiviazione totale disponibile, allo spazio di archiviazione utilizzato e alla percentuale di archiviazione XTP (percentuale di archiviazione in uso per l'elaborazione delle transazioni in-memory).
I lavoratori e le sessioni sono la parte successiva e importante delle metriche nel monitoraggio del database Azure SQL. La prima include le richieste a un database, sia le query che i login e i logout. La seconda è il totale delle connessioni attive. Entrambi sono limitati a seconda del livello di servizio dell'abbonamento al cloud Azure e sono utili per calcolare i costi e tenere traccia delle prestazioni dei servizi di database Azure.
Monitoraggio dei database NoSQL di Azure
Quando si passa ai database NoSQL di Azure, si parla di Azure Cosmos DB. Un servizio di database cloud-native che supporta la compatibilità con molti database SQL, ma anche con i database a valore-chiave, a colonne larghe e a grafico. Pertanto, quando si utilizza Cosmos DB come database SQL, si applicano le metriche di cui sopra, ma per i modelli di utilizzo. Azure Cosmos DB utilizza le RU (unità di richiesta) come metrica per misurare le risorse consumate per ogni operazione eseguita sul database. Le RU includono tutti i costi, compresi quelli di calcolo, memoria, archiviazione e trasferimento dei dati.
Azure Cosmos DB scala orizzontalmente, in quelle che vengono chiamate partizioni. Il monitoraggio delle relative metriche è importante per capire come il database sta scalando. Queste metriche includono la distribuzione delle chiavi, la distribuzione degli intervalli, la distribuzione dei valori delle chiavi delle partizioni e la distribuzione dei dati. Con queste informazioni a disposizione, gli amministratori del cloud possono monitorare la suddivisione del DB Cosmos tra le partizioni e le sue prestazioni.
Oltre a prestare attenzione a queste specifiche di Azure Cosmos DB, non ci sono grandi differenze nelle modalità di monitoraggio rispetto ad altri database Azure SQL.
Best practice per il monitoraggio dei database Azure
È consigliabile seguire alcune best practice per il monitoraggio dei database Azure, come per qualsiasi attività IT. Queste si aggiungono all'importanza di controllare tutte le metriche, e forse anche di più, di cui abbiamo appena parlato. Azure Monitor e qualsiasi altro strumento di monitoraggio di terze parti possono aiutarti a impostare una soglia desiderata e ad avvisarti quando questa sta per essere raggiunta o superata. Questa è la chiave per avere una configurazione di monitoraggio proattiva ed essere in grado di reagire prontamente quando necessario.
A proposito di soglie, è buona norma monitorare le connessioni attive e fallite ai database Azure e impostare un avviso se le connessioni attive superano l'80% del loro limite totale o se più di 10 sono fallite negli ultimi 30 minuti. Questo perché, a meno che non sia previsto, a seconda del carico di lavoro del database specifico, un numero eccessivo di connessioni attive può segnalare un database sovraccarico di lavoro, mentre un tasso di guasti troppo elevato indica la necessità di controllare i registri del database per individuarne il motivo.
Se tutto va bene per quanto riguarda le connessioni, prendete in considerazione il monitoraggio della latenza e dell'utilizzo della rete di tutti i tuoi servizi di database Azure. Questi ti informeranno anche sulle prestazioni effettive di questi servizi e se qualcuno si sta avvicinando ai limiti di utilizzo del livello.
Una volta che tutto questo viene controllato di routine, la percentuale più tipica di CPU, storage e I/O dovrebbe essere inclusa nella vostra soluzione di monitoraggio dei database Azure. Se molto elevate e per un periodo di tempo ragionevolmente lungo, possono significare qualsiasi cosa, da un aumento del carico di lavoro a una situazione prossima all'interruzione. Controlla i registri e la telemetria dei database interessati quando queste percentuali raggiungono stabilmente numeri elevati (90-100% è un buon range).
Tutte queste soglie devono essere monitorate e, come minimo, devono essere emessi avvisi quando vengono superate. La maggior parte degli strumenti di monitoraggio dei database Azure è in grado di farlo, ma non tutti con la granularità desiderata. Checkmk è in grado di coprire la maggior parte dei carichi di lavoro dei database Azure, fornendo un'alternativa avanzata ai dashboard di base di Azure Monitor. I database di Azure sono una parte fondamentale delle infrastrutture cloud e meritano di essere monitorati con un prodotto all'avanguardia, e Checkmk è pronto ad assumere questo ruolo.