PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Monitoraggio di PostgreSQL in un ambiente ibrido

Hybrid Cloud è un concetto recente che è stato ampliato per alcuni anni e ora è una topologia comune in qualsiasi azienda per un Disaster Recovery Plan (DRP) o anche per avere ridondanza sui tuoi sistemi.

Una volta che il tuo ambiente Hybrid Cloud è attivo e funzionante, dovrai sapere cosa sta succedendo tutto il tempo. Il monitoraggio è d'obbligo se vuoi essere sicuro che tutto vada bene o se potresti dover cambiare qualcosa. Per ogni tecnologia di database, ci sono diverse cose da monitorare. Alcuni di questi sono specifici del motore di database, del fornitore o persino della versione specifica che stai utilizzando.

In questo blog, vedremo cosa è necessario monitorare in un database PostgreSQL in esecuzione in un ambiente Hybrid Cloud e come ClusterControl può aiutarti in questa attività.

Cosa monitorare in PostgreSQL

Durante il monitoraggio di un cluster o nodo di database, ci sono due cose principali da tenere in considerazione:il sistema operativo e il database stesso. Dovrai definire quali metriche monitorare da entrambi i lati e come lo farai.

Tieni presente che quando una delle tue metriche è interessata, può interessare anche altre, rendendo più complessa la risoluzione del problema. Avere un buon sistema di monitoraggio e avviso è importante per rendere questo compito il più semplice possibile.

Monitoraggio del sistema operativo

Una cosa importante (che è comune a tutti i motori di database e anche a tutti i sistemi) è monitorare il comportamento del sistema operativo. Vediamo alcuni punti da verificare qui.

Utilizzo CPU

Una percentuale eccessiva di utilizzo della CPU potrebbe essere un problema se non è un comportamento normale. In questo caso, è importante identificare il processo/i processi che stanno generando questo problema. Se il problema è il processo del database, dovrai controllare cosa sta succedendo all'interno del database.

Memoria RAM o utilizzo SWAP

Se vedi un valore alto per questa metrica e non è cambiato nulla nel tuo sistema, probabilmente devi controllare la configurazione del tuo database. Parametri come shared_buffers e work_mem possono influire direttamente su questo dato che definiscono la quantità di memoria da utilizzare per il database PostgreSQL.

Utilizzo del disco

Un aumento anomalo dell'uso dello spazio su disco o un consumo eccessivo di accesso al disco sono cose importanti da monitorare poiché potresti avere un numero elevato di errori registrati nel file di registro di PostgreSQL o una configurazione della cache errata che potrebbe generare un consumo importante di accesso al disco invece di utilizzare la memoria per elaborare le query.

Carico medio

È correlato ai tre punti sopra menzionati. Un carico medio elevato potrebbe essere generato da un utilizzo eccessivo di CPU, RAM o disco.

Rete

Un problema di rete può interessare tutti i sistemi poiché l'applicazione non può connettersi (o connettere pacchetti persi) al database, quindi questa è una metrica importante da monitorare. Puoi monitorare la latenza o la perdita di pacchetti e il problema principale potrebbe essere una saturazione della rete, un problema hardware o semplicemente una cattiva configurazione di rete.

Monitoraggio database

Il monitoraggio del tuo database PostgreSQL non è solo importante per vedere se stai riscontrando un problema, ma anche per sapere se hai bisogno di cambiare qualcosa per migliorare le prestazioni del tuo database, questa è probabilmente una delle cose più importanti da monitorare in un database. Vediamo alcune metriche importanti per questo.

Monitoraggio query

In generale, i database sono configurati tenendo conto della compatibilità e della stabilità per impostazione predefinita, quindi è necessario conoscere le query e il loro modello e configurare i database in base al traffico di cui si dispone. Qui puoi utilizzare il comando EXPLAIN per controllare il piano di query per una query specifica e puoi anche monitorare la quantità di SELECT, INSERT, UPDATE o DELETE su ciascun nodo. Se hai una query lunga o un numero elevato di query in esecuzione contemporaneamente, potrebbe essere un problema per tutti i sistemi.

Sessioni attive

Dovresti anche monitorare il numero di sessioni attive. Se sei vicino al limite, devi controllare se qualcosa non va o se hai solo bisogno di incrementare il valore massimo di connessione nella configurazione del database. La differenza nel numero può essere un aumento o una diminuzione delle connessioni. Il cattivo utilizzo del pool di connessioni, il blocco oi problemi di rete sono i problemi più comuni relativi al numero di connessioni.

Blocchi database

Se hai una query in attesa di un'altra query, devi controllare se quell'altra query è un processo normale o qualcosa di nuovo. In alcuni casi, se qualcuno sta effettuando un aggiornamento su un grande tavolo, ad esempio, questa azione può influire sul normale comportamento del tuo database, generando un numero elevato di blocchi.

Stato della replica

Le metriche chiave da monitorare per la replica sono il ritardo e lo stato di replica. I problemi più comuni sono problemi di rete, problemi di risorse hardware o problemi di dimensionamento. Se stai affrontando un problema di replica, dovrai conoscerlo al più presto poiché dovrai risolverlo per garantire l'ambiente ad alta disponibilità.

Backup

Evitare la perdita di dati è una delle attività DBA di base, quindi non devi solo eseguire il backup, dovresti sapere se il backup è stato completato e se è utilizzabile. Di solito quest'ultimo punto non viene preso in considerazione, ma è probabilmente il controllo più importante in un processo di backup.

Registri del database

Dovresti monitorare il registro del database per errori, problemi di autenticazione o persino query di lunga durata. La maggior parte degli errori viene scritta nel file di registro con informazioni utili dettagliate per risolverli.

Notifiche e avvisi

Il solo monitoraggio di un sistema non è sufficiente se non ricevi una notifica su ogni problema. Senza un sistema di avviso, dovresti andare allo strumento di monitoraggio per vedere se tutto va bene e potrebbe essere possibile che tu abbia un grosso problema da molte ore. Questo lavoro di avviso può essere eseguito utilizzando avvisi e-mail, avvisi di testo o altri strumenti come Slack.

È davvero difficile trovare uno strumento per monitorare tutte le metriche necessarie per PostgreSQL, in generale sarà necessario utilizzarne più di uno e anche alcuni scripting dovranno essere effettuati. Un modo per centralizzare l'attività di monitoraggio e avviso è utilizzare ClusterControl, che fornisce funzionalità come gestione del backup, monitoraggio e avvisi, distribuzione e ridimensionamento, ripristino automatico e funzionalità più importanti per la gestione dei database. Tutte queste funzionalità sullo stesso sistema.

Un punto importante qui è che ClusterControl funziona sul cloud, in locale o anche su una combinazione di entrambi. Il requisito qui è avere l'accesso SSH ai nodi, quindi ClusterControl si prenderà cura di loro.

Monitoraggio del database PostgreSQL con ClusterControl

ClusterControl è un sistema di gestione e monitoraggio che aiuta a distribuire, gestire, monitorare e ridimensionare i database da un'interfaccia intuitiva. Supporta le migliori tecnologie di database open source e puoi automatizzare molte delle attività del database che devi eseguire regolarmente, come l'aggiunta e il ridimensionamento di nuovi nodi, l'esecuzione di backup e ripristini e altro ancora.

ClusterControl ti consente di monitorare i tuoi server in tempo reale con un set predefinito di dashboard per analizzare alcune delle metriche più comuni.

Ti permette di personalizzare i grafici disponibili nel cluster e puoi abilitare il monitoraggio basato su agenti per generare dashboard più dettagliati.

Puoi anche creare avvisi, che ti informano di eventi nel tuo cluster, o integrarti con diversi servizi come PagerDuty o Slack.

Nella sezione di monitoraggio delle query, puoi trovare le query principali, le query in esecuzione, i valori anomali delle query e le statistiche delle query per monitorare il traffico del database.

Con queste funzionalità, puoi vedere come sta andando il tuo database PostgreSQL.

Per la gestione del backup, ClusterControl lo centralizza per proteggere, proteggere e recuperare i tuoi dati e, con la funzione di backup di verifica, puoi confermare se il backup è pronto.

Questo processo di backup di verifica ripristinerà il backup in un host autonomo separato, così puoi assicurarti che il backup funzioni.

Infine, non è necessario accedere al nodo del database per controllare i log, puoi trovare tutti i log del database centralizzati nella sezione Log di ClusterControl.

Come puoi vedere, puoi gestire tutte le cose menzionate dallo stesso sistema centralizzato:ClusterControl.

Monitoraggio con la riga di comando ClusterControl

Per lo scripting e l'automazione delle attività, o anche se preferisci semplicemente la riga di comando, ClusterControl ha lo strumento s9s. È uno strumento da riga di comando per la gestione o il monitoraggio del cluster di database.

Elenco cluster

Elenco nodi

Puoi eseguire tutte le attività (e anche di più) disponibili nell'interfaccia utente di ClusterControl e puoi integrare questa funzionalità con alcuni strumenti esterni come slack, per gestirla da lì.

Conclusione

Come puoi vedere, il monitoraggio è assolutamente necessario, indipendentemente dal fatto che sia in esecuzione on-premise, sul cloud o anche su un mix di essi, e il modo migliore per farlo dipende dall'infrastruttura e dal sistema stesso. In questo blog, abbiamo menzionato alcuni parametri importanti da monitorare nel tuo ambiente PostgreSQL, come utilizzare ClusterControl per svolgere il lavoro.