Il monitoraggio e gli avvisi del database sono una parte particolarmente importante delle operazioni del database, poiché dobbiamo comprendere lo stato attuale del database. Se non disponi di un buon monitoraggio del database, non sarai in grado di trovare rapidamente i problemi nel database. Ciò potrebbe quindi causare tempi di inattività.
Uno strumento disponibile per il monitoraggio è pgDash, un'applicazione SaaS per il monitoraggio e gli avvisi per il database PostgreSQL.
Procedura di installazione di pgDash
La registrazione per pgDash può essere effettuata tramite il sito Web o può anche essere scaricata (auto-ospitata) come fornito da RapidLoop.
Il processo di installazione di pgDash è semplice, basta scaricare il pacchetto necessario da pgDash per essere configurato lato host/database server.
Puoi eseguire il processo come segue:
[[email protected] ~]$ curl -O -L https://github.com/rapidloop/pgmetrics/releases/download/v1.9.0/pgmetrics_1.9.0_linux_amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 647 100 647 0 0 965 0 --:--:-- --:--:-- --:--:-- 964
100 3576k 100 3576k 0 0 189k 0 0:00:18 0:00:18 --:--:-- 345k
[[email protected] ~]$ tar xvf pgmetrics_1.9.0_linux_amd64.tar.gz
pgmetrics_1.9.0_linux_amd64/LICENSE
pgmetrics_1.9.0_linux_amd64/README.md
pgmetrics_1.9.0_linux_amd64/pgmetrics
[[email protected] ~]$ curl -O -L https://github.com/rapidloop/pgdash/releases/download/v1.5.1/pgdash_1.5.1_linux_amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 644 100 644 0 0 1370 0 --:--:-- --:--:-- --:--:-- 1367
100 2314k 100 2314k 0 0 361k 0 0:00:06 0:00:06 --:--:-- 560k
[[email protected] ~]$ tar xvf pgdash_1.5.1_linux_amd64.tar.gz
pgdash_1.5.1_linux_amd64/LICENSE
pgdash_1.5.1_linux_amd64/README.md
pgdash_1.5.1_linux_amd64/pgdash
[[email protected] ~]$ ./pgmetrics_1.9.0_linux_amd64/pgmetrics --no-password -f json ccdb | ./pgdash_1.5.1_linux_amd64/pgdash -a NrxaHk3JH2ztLI06qQlA4o report myserver1
Oltre a pgDash avrai bisogno di un altro pacchetto, pgmetrics, da installare per il monitoraggio. pgmetrics è un'utilità open source il cui compito è raccogliere informazioni e statistiche nel database necessarie a pgDash, mentre il compito di pgdash è inviare tali informazioni al dashboard.
Se si desidera aggiungere più database alla piattaforma di monitoraggio, è necessario per ripetere la procedura sopra per ogni database.
Sebbene l'installazione di pgDash sia semplice, ci sono processi ripetitivi che possono diventare un problema se ci sono database aggiuntivi che devono essere monitorati. Molto probabilmente dovrai creare uno script di automazione per questo.
Metriche pgDash
Ci sono 3 funzioni principali in pgDash Dashboard, queste sono:
- Dashboard :è costituito da sottomenu come:Panoramica, Database, Query, Backend, Blocchi, Tablespace, Replica, File WAL, Scrittori BG, Vuoto, Ruoli, Configurazione.
- Strumenti :è costituito da sottomenu, come Gestione indice, Gestione tablespace, Diagnostica e Top-K.
- Avvisi :sono costituiti da sottomenu come Avvisi e Avvisi di modifica.
Monitoraggio PostgreSQL tramite ClusterControl
Il monitoraggio condotto da ClusterControl utilizza il metodo ssh e la connessione diretta dal nodo controller al nodo database di destinazione per raccogliere le informazioni necessarie da visualizzare sul dashboard.
ClusterControl ha anche una funzione di monitoraggio basato su agenti che può essere facilmente attivata. Puoi vederlo qui sotto...
ClusterControl eseguirà quindi il processo di installazione di prometheus, gli esportatori di nodi e PostgreSQL esportatori, nel database mirato che mira a raccogliere e raccogliere le informazioni richieste dalla dashboard per visualizzare le metriche.
Se il monitoraggio basato su agenti è attivo, qualsiasi nuovo database di destinazione verrà automaticamente aggiunto e monitorato da monitoraggio basato su agenti.
Dashboard ClusterControl
Qui puoi vedere le informazioni nelle schermate Panoramica del cluster PostgreSQL e Informazioni sul sistema. In questa funzione puoi visualizzare informazioni dettagliate come la versione db, l'ID transazione, l'ultimo checkpoint e la data e l'ora in cui il server è attivo. Queste informazioni sono illustrate di seguito:
Nella pagina Informazioni di sistema, possiamo ottenere informazioni come carico medio, Utilizzo della memoria, Utilizzo dello scambio, vedi l'immagine qui sotto:
- Banca dati :puoi ottenere informazioni come nome db, dimensione db, numero di tabelle, indice e anche tablespace.
- Query :puoi monitorare le chiamate, la scrittura del disco, la lettura del disco, il buffer Hit dalle query. Inoltre, puoi cercare qualsiasi query eseguita in un periodo di tempo specifico.
- Backend :puoi monitorare lo stato corrente del backend del database, all'interno di queste informazioni vengono forniti dettagli critici, come backend in attesa di lock, altri backend in attesa, transazione aperta troppo a lungo, backend inattivo nella transazione. Puoi anche vedere tutti i backend in esecuzione nel database.
- Blocchi :puoi controllare il numero di blocchi totali, blocchi non concessi e query bloccate.
- Tablespace :fornisce informazioni relative al tablespace, ad es. dimensione del tablespace, utilizzo di Disk e Inode.
- Replica :puoi monitorare lo stato della tua replica nel database PostgreSQL, iniziare da Slot di replica, Replica in ingresso, Replica in uscita, Pubblicazioni di replica e Sottoscrizioni di replica.
- File Wal :fornisce informazioni relative a WAL (Write Ahead Log) e anche statistiche, ad esempio: Conteggi file WAL, tasso di generazione WAL, file WAL generati ogni ora.
- Scrittori BG :fornisce informazioni relative al database del checkpoint, al buffer scritto e ai parametri relativi al Background Writer.
- Avanzamento del vuoto :contiene le informazioni relative al Vuoto che gira nel database, anche i parametri del vuoto.
- Ruoli :contiene informazioni relative ai ruoli che esistono nel database inclusi i privilegi.
- Configurazione :contiene parametri nel database PostgreSQL.
All'interno di Strumenti, ci sono sottomenu come Gestione indici che forniscono informazioni, ad es. Indice inutilizzato, Indice rigonfio, Indice dan con basso rapporto cache hit. Gestione tablespace fornisce informazioni relative al tablespace e ad altri oggetti disponibili in.
Diagnostica, per comprendere i potenziali problemi che possono verificarsi attraverso le prime 10 tabelle più gonfie, i primi 10 indici più gonfi, l'elenco degli slot di replica inattivi, le prime 10 transazioni più longeve, ecc.
ClusterControl ha diverse metriche in menu separati, ovvero Panoramica, Nodi, Dashboard, Query Monitor e Prestazioni, vedi l'immagine sotto:
Quando è abilitato il monitoraggio basato sugli agenti, quindi tutte le informazioni relative alle statistiche e altre informazioni relative al database verranno archiviate in un database di serie temporali (prometheus). Puoi vedere queste informazioni in ClusterControl come illustrato di seguito:
In Query Monitor, puoi trovare Query principali, Query in esecuzione, Query Menu Outliers o Query Statistics. Forniscono informazioni relative alla query in esecuzione, alla query principale e alle statistiche del database. Puoi anche configurare query lente e query senza indicizzazione.
In Performance, ci sono sottomenu come DB Growth che possono mostrare informazioni sul database e statistiche sulla dimensione della tabella. Schema Analyzer fornisce informazioni relative all'indice e alla tabella ridondanti senza chiave primaria.
Avvisi PostgreSQL
Ci sono due parti dell'avviso...
- Regole di avviso :le regole di avviso svolgono un ruolo importante, è possibile definire i limiti come parametri che possono attivare l'allarme per il DBA.
- Integrazione di terze parti :è un canale di integrazione con la piattaforma di gestione degli incidenti per la comunicazione e la collaborazione come:PagerDuty, OpsGenie, Slack o via e-mail.
PgDash ha molte opzioni di parametri del database che puoi impostare in relazione alla regola di avviso, divisi in diversi livelli a partire da Server, Database, Tabella, Indice, Tablespace e Query. Puoi vedere queste informazioni in pgDash come illustrato di seguito...
Per quanto riguarda il canale di integrazione di terze parti, pgDash supporta diversi canali come come Slack, Pagerduty, VictorOps, Xmatters, e-mail o creando i propri webhook in modo che possano essere utilizzati da altri servizi.
Quello che segue è l'aspetto dell'integrazione di terze parti di pgDash:
A differenza di pgDash, ClusterControl ha un'opzione di avviso eventi più ampia e generale , a partire dagli avvisi relativi all'host, alla rete, al cluster e al database stesso. Di seguito sono riportati esempi di opzioni di evento che possono essere selezionate:
ClusterControl può selezionare diversi cluster di database in un avviso di evento. L'integrazione di terze parti da ClusterControl supporta diversi strumenti di gestione degli incidenti e di comunicazione/collaborazione come PagerDuty, VictorOps, Telegram, OpsGenie, Slack, ServiceNow, oppure può creare il tuo webhook.
Nella sezione delle regole di avviso, sia pgDash che ClusterControl presentano vantaggi e svantaggi. Il vantaggio di pgDash è che puoi impostare avvisi di database molto dettagliati relativi a ciò che verrà inviato, mentre lo svantaggio è che devi eseguire queste impostazioni in ogni database (sebbene ci sia una funzione da importare da altre configurazioni di database.
ClusterControl non dispone di avvisi di eventi dettagliati, solo eventi generali del database, ma ClusterControl può inviare avvisi non solo relativi al database, ma può inviare avvisi di eventi da nodi, cluster, reti, ecc. Inoltre è possibile impostare questi avvisi per diversi cluster di database.
Nella sezione Integrazione di terze parti, pgDash e ClusterControl supportano entrambi vari canali di comunicazione e gestione degli incidenti di terze parti. Entrambi, infatti, possono creare il proprio webhook in modo che possa essere consumato da altri servizi (es. Grafana).