Monitorare e configurare un server di database

Completato

Dopo aver eseguito la migrazione dei database locali a Database di Azure per MySQL/PostgreSQL, una società deve comunque disporre di un modo per monitorarne le prestazioni.

Lo sviluppatore di database è abituato a usare gli strumenti specifici dei database e il monitoraggio delle macchine virtuali locali. Ora che i database sono in esecuzione in Azure, è possibile sfruttare il portale per usare un singolo strumento per monitorare tutti i vari database.

In questa unità, verrà illustrato il modo in cui Monitoraggio di Azure è in grado di supportare il monitoraggio dell'integrità dei database di cui si è responsabili. Una volta individuati i problemi, si vedrà come modificare la configurazione dei database per risolverli.

Come usare Monitoraggio di Azure per visualizzare l'integrità dei database

Usare Monitoraggio di Azure per tenere traccia dell'uso delle risorse in Database di Azure per MySQL/PostgreSQL. La pagina Metrica relativa al server nel portale di Azure consente di creare grafici utili per rilevare le tendenze nelle prestazioni e per individuare eventuali anomalie.

Metriche per Database di Azure per MySQL/PostgreSQL

Le metriche disponibili per il monitoraggio di un server rientrano in quattro categorie generali:

  • Metriche di archiviazione
  • Metriche di connessione
  • Metriche di utilizzo delle risorse per l'elaborazione dati
  • Metriche di replica

Metriche di archiviazione

Le metriche di archiviazione tengono traccia delle dimensioni totali dei database nel server (Spazio di archiviazione usato) e della quantità corrente di spazio di archiviazione nel server (Limite di archiviazione). In un sistema attivo, probabilmente si noterà che la metrica Spazio di archiviazione usato cresce nel tempo. Se per il server è selezionata l'opzione di aumento automatico, la metrica Limite di archiviazione aumenta occasionalmente quando diminuisce la quantità di spazio libero. Viene aggiunta una risorsa di archiviazione aggiuntiva ogni volta che la quantità di spazio libero scende al di sotto del 5% dell'utilizzo corrente. Per visualizzare la percentuale di spazio usato per liberare spazio nel server, usare la metrica relativa alla percentuale di archiviazione.

Se il server impiega regolarmente del tempo nell'aumentare lo spazio di archiviazione, è consigliabile assegnare più spazio manualmente. Eseguire questa operazione nel portale di Azure selezionando la pagina Piano tariffario relativa al server e usare il dispositivo di scorrimento Archiviazione. Tenere presente che lo spazio di archiviazione viene addebitato, quindi evitare di iniziare impostando lo spazio di archiviazione disponibile su Elevato.

La metrica relativa allo spazio di archiviazione usato per il backup mostra la quantità di spazio occupata dai backup. Questa metrica è importante dal punto di vista dei costi. Non viene addebitato alcun costo per l'archiviazione dei backup, purché rimanga al di sotto delle dimensioni dello spazio di archiviazione allocato al server, come specificato dal piano tariffario. Quando si supera questo limite, vengono addebitati i costi per l'archiviazione dei backup.

Metriche di connessione

La metrica Connessioni attive indica il numero di connessioni simultanee attualmente supportate dal server. Questo numero potrebbe non corrispondere a quello degli utenti simultanei, a seconda di come sono stati configurati i pool di connessioni. Database di Azure per MySQL/PostgreSQL non fornisce attualmente alcuna funzionalità di pool di connessioni, ma è possibile usare un servizio proxy come PgBouncer* (per PostgreSQL) per implementare questa funzionalità. Per altre informazioni, vedere Performance best practices for using Azure Database for PostgreSQL – Connection Pooling (Procedure consigliate per le prestazioni per l'uso di Database di Azure per PostgreSQL - Pool di connessioni).

La metrica Connessioni non riuscite mostra la frequenza con cui gli utenti hanno specificato credenziali non valide. Un numero elevato di questi eventi in un breve periodo di tempo può indicare un attacco di forza bruta.

Metriche di utilizzo delle risorse per l'elaborazione dati

Queste metriche consentono di monitorare la modalità di gestione del carico di lavoro da parte del server.

La metrica relativa alla percentuale di CPU indica il modo in cui la CPU è occupata. Un utilizzo elevato della CPU non è un problema, a meno che non si sia verificato un aumento nel tempo. Un utilizzo della CPU superiore al 90% e in continuo aumento indica che il sistema sta per raggiungere la capacità di elaborazione. È consigliabile prendere in considerazione il ridimensionamento a un piano tariffario con più risorse.

La metrica relativa alla percentuale della memoria indica la quantità di memoria occupata. Database di Azure per MySQL/PostgreSQL usa la memoria per la memorizzazione nella cache dei dati e per l'esecuzione dei processi avviati da ogni richiesta client. Un utilizzo elevato della memoria non è un problema finché non diventa eccessivo, in genere è superiore al 95%, a seconda della quantità effettiva di memoria disponibile. Una disponibilità di memoria molto bassa può causare errori di connessione e rallentare le prestazioni a causa della frammentazione della memoria. È necessario monitorare questa metrica per determinare se l'occupazione di memoria cresce nel tempo e ridimensionare il server di conseguenza.

La metrica relativa alla percentuale I/O tiene traccia della quantità di attività del disco eseguita dal server. Questo valore dovrebbe essere il più basso possibile. L'I/O del disco è un'operazione lenta. Un valore elevato per questa metrica, in combinazione con un valore elevato per la metrica relativa alla percentuale di memoria, può indicare che il server non dispone di risorse sufficienti per memorizzare i dati nella cache e deve quindi leggere e scrivere i dati nell'archiviazione su disco. Un livello di attività I/O è inevitabile, perché i dati devono essere salvati in modo permanente su disco in un determinato momento e i log delle transazioni devono essere mantenuti. Nella maggior parte dei server di database, questa scrittura viene eseguita da un processo o un thread separato eseguito in modo asincrono.

Le metriche Rete in ingresso e Rete in uscita mostrano il volume di traffico in ingresso e in uscita dal server tra connessioni attive. I limiti per questi valori sono determinati dalla larghezza di banda del percorso tra le applicazioni client e il server.

Metriche di replica

Database di Azure per PostgreSQL offre le metriche relative al ritardo massimo tra le repliche e al ritardo di replica per consentire di determinare come aggiornare le repliche disponibili. Queste metriche sono significative solo se sono state configurate repliche di sola lettura.

La metrica relativa al ritardo massimo tra le repliche indica i byte di ritardo della replica più lenta rispetto alla replica master. È possibile monitorare questa metrica solo dalla replica master.

La metrica relativa al ritardo di replica mostra il tempo, espresso in secondi, in cui la transazione più recente è stata ricevuta dalla replica master e applicata a una replica. Questa metrica è utile solo se visualizzata in una replica.

Database di Azure per MySQL dispone della metrica Intervallo di replica in secondi. Questa metrica, che è possibile monitorare solo da una replica, mostra il numero di secondi per cui la replica è in ritardo rispetto alla replica master.

Creare grafici e avvisi per monitorare le prestazioni

La pagina Metrica relativa a un server nel portale di Azure consente di creare grafici che tengono traccia dei valori delle metriche. Le metriche vengono raccolte a intervalli di un minuto. Per ogni metrica, è necessario specificare un'aggregazione che determini come segnalare tale metrica.

  • Medio genera un valore medio per la metrica in ogni minuto
  • Massimo indica il valore massimo che si raggiunge durante ogni minuto
  • Minimo indica il valore più piccolo
  • Somma esegue il totale della metrica
  • Numero valori indica quante volte si è verificato l'evento che ha generato la metrica

Non tutte le aggregazioni sono necessariamente significative per ogni metrica.

Il grafico di esempio seguente ha acquisito i valori medi minuto per minuto per le metriche relative a percentuale CPU, percentuale memoria, percentuale I/O e connessioni attive. Si noterà che sono in esecuzione contemporaneamente 101 connessioni attive. L'utilizzo della CPU e della memoria è stabile e la percentuale I/O è pari a 0. In questo esempio, le applicazioni client eseguono carichi di lavoro a utilizzo intensivo di operazioni di lettura e i dati necessari vengono memorizzati nella cache in memoria.

Image of the chart showing the values captured for the CPU percent, Memory percent, IO percent, and Active connections metrics

Si noti che esiste un ritardo di un massimo di cinque minuti tra le metriche acquisite e i risultati visualizzati in un grafico.

Se una metrica indica che una risorsa sta per raggiungere un punto critico, è possibile impostare un avviso per inviare una notifica a un amministratore. Nell'esempio seguente viene inviato un messaggio di posta elettronica a un amministratore se l'utilizzo della memoria è superiore al 90%.

Image of the alerts page, showing a new alert that sends an email if memory utilization exceeds 90%

Configurare i parametri del server

I server MySQL e PostgreSQL nativi sono altamente configurabili perché entrambi usano le impostazioni di configurazione archiviate in file di parametri. Per PostgreSQL, queste informazioni sono contenute nel file postgresql.conf. Per MySQL, i dati di configurazione vengono archiviati in vari file my.cnf. In Database di Azure per MySQL/PostgreSQL non è possibile accedere direttamente a questi file. Al contrario, è possibile visualizzare e modificare i parametri del server usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Visualizzare e impostare parametri usando il portale di Azure

I parametri di configurazione del server sono disponibili nella pagina Parametri del server relativa al server nel portale di Azure. È possibile modificare i valori dei parametri nel modo appropriato per il server in uso. L'immagine seguente mostra la pagina dei parametri del server per Database di Azure per PostgreSQL. La pagina corrispondente per Database di Azure per MySQL è simile.

Image of the Server parameters page for Azure Database for PostgreSQL

Non tutti i parametri di configurazione del server sono disponibili perché una parte importante della configurazione del server è controllata da Azure. Ad esempio, mancano i parametri associati all'allocazione di memoria. Inoltre, Database di Azure per MySQL non supporta l'archiviazione ISAM, quindi i parametri myisam non sono presenti.

Le modifiche apportate ai parametri contrassegnati come Dinamici diventano immediatamente effettive. Per i parametri contrassegnati come Statici è necessario riavviare il server. A tale scopo, accedere alla pagina Panoramica relativa al server.

Image of the Overview page for Azure Database for PostgreSQL. The Restart button is highlighted

Visualizzare e impostare parametri usando l'interfaccia della riga di comando di Azure

È possibile visualizzare e modificare i parametri a livello di codice con i comandi az mysql/postgres server configuration. Visualizzare le impostazioni di ogni parametro di configurazione con az mysql/postgres server configuration list e vedere un solo parametro usando az mysql/postgres server configuration show [parameter-name]. Il frammento di codice seguente illustra un esempio di Database di Azure per PostgreSQL:

az postgres server configuration show \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age

L'output dovrebbe essere simile al seguente:

{
  "allowedValues": "0-1000000",
  "dataType": "Integer",
  "defaultValue": "0",
  "description": "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any.",
  "id": "**********************",
  "name": "vacuum_defer_cleanup_age",
  "resourceGroup": "northwindrg",
  "source": "system-default",
  "type": "Microsoft.DBforPostgreSQL/servers/configurations",
  "value": "0"
}

L'elemento importante nell'output è il campo del valore, che mostra l'impostazione corrente per il parametro.

Usare il comando az mysql/postgres server configuration set per modificare il valore di un parametro di configurazione, come indicato di seguito:

az postgres server configuration set \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age \
    --value 5

Se è necessario riavviare un server dopo la modifica di un parametro statico, eseguire il comando az mysql/postgres server restart:

az postgres server restart \
    --resource-group northwindrg \
    --name northwind101