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

Come monitorare PostgreSQL in esecuzione all'interno di un contenitore Docker:parte seconda

Questa è la seconda parte della multiserie How to Monitor PostgreSQL Running Inside a Docker Container. Nella parte 1, ho presentato una panoramica dei container Docker, delle policy e del networking. In questa parte continueremo con la configurazione della finestra mobile e infine abiliteremo il monitoraggio tramite ClusterControl.

PostgreSQL è un database open source della vecchia scuola la cui popolarità è ancora in aumento, essendo ampiamente utilizzato e accettato nella maggior parte degli ambienti cloud di oggi.

Quando viene utilizzato all'interno di un container può essere facilmente configurato e gestito da Docker, utilizzando tag diversi per la creazione e spedito a qualsiasi computer nel mondo con Docker installato, ma tutto ciò riguarda Docker.

Ora discuteremo di PostgreSQL e, per iniziare, elenchiamo i loro sei processi principali in esecuzione simultaneamente all'interno di un contenitore dall'utente del sistema operativo chiamato "postgres", che è diverso dall'utente "postgres" all'interno del database, quello è un super utente.

Ricorda che la freccia blu nelle immagini mostra i comandi inseriti all'interno di un contenitore.

$ ps auxww
Processi principali di PostgreSQL

Il primo processo nell'elenco è il server PostgreSQL e gli altri vengono avviati da lui. I loro compiti sono fondamentalmente di analizzare cosa sta succedendo nel server, essendo sottoprocessi che eseguono input di statistiche, scrittura di registri e questo genere di cose.

Utilizzeremo ClusterControl per monitorare l'attività all'interno di questo container con il server PostgreSQL e per farlo dovremo avere installato SSH per connetterli in sicurezza.

Secure Shell Server (SSH)

Per raccogliere le informazioni sul contenitore PostgreSQL, niente è meglio di SSH. Fornisce l'accesso remoto da un indirizzo IP a un altro e tutto ciò di cui ClusterControl ha bisogno per eseguire il lavoro.

SSH deve essere scaricato dal repository e per farlo dobbiamo trovarci all'interno del container.

$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Installazione di SSH nel contenitore "postgres-2"

Dopo l'installazione, modificheremo la configurazione, avvieremo il servizio, imposteremo una password per l'utente root e infine lasceremo il contenitore:

$ sed -i 's|^PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ service ssh start
$ passwd
$ exit
Configurazione dell'SSH nel contenitore "postgres-2", parte 1/2

Monitoraggio con ClusterControl

ClusterControl ha un sistema di integrazione approfondito in grado di monitorare tutti i processi di PostgreSQL in tempo reale, includendo anche una libreria di Advisor per proteggere i dati, tenere traccia delle prestazioni del database e, naturalmente, fornire avvisi quando si verificano anomalie.

Con SSH configurato, ClusterControl può monitorare l'attività hardware del sistema operativo e fornire informazioni dettagliate sia sul database che sul livello esterno.

Eseguiremo eseguendo un nuovo container e pubblicandolo sulla porta 5000 del nostro computer, quindi saremo in grado di accedere al sistema tramite il nostro browser.

$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Esecuzione del contenitore "s9s-ccontrol" per Multiplenines ClusterControl

Una volta implementato, rimane solo la configurazione SSH e abbiamo buone notizie, perché siamo in una rete bridge definita dall'utente, possiamo utilizzare il DNS!

$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Configurazione dell'SSH nel contenitore "postgres-2", parte 2/2

Dopo aver inserito "yes" e specificato la password fornita in precedenza, è possibile accedere al container "postgres-2" come root utilizzando SSH:

$ ssh postgres-2
Verifica riuscita della connessione SSH

Questo nuovo colore, azzurro, verrà utilizzato in seguito per rappresentare l'attività all'interno del database. Nell'esempio sopra abbiamo avuto accesso al contenitore "postgres-2" da "s9s-ccontrol", ma è ancora l'utente root. Mantieni la tua attenzione e le tue critiche con me.

Quindi il passaggio successivo è andare al browser e accedere a http://localhost:5000/clustercontrol/users/welcome/ e registra un account o, se ne hai già uno, visita http://localhost:5000/clustercontrol/users/login .

Quindi "Importa server/cluster esistente" e inserisci la configurazione precedente. È necessario selezionare la scheda "PostgreSQL &TimescaleDB". Nel campo "Utente SSH" per questa dimostrazione digita semplicemente "root". Quindi, infine, inserisci il "Nome cluster", e può essere qualsiasi nome desideri, è semplicemente chi conterrà tutti i contenitori PostgreSQL necessari che desideri importare e monitorare.

Importazione del database "postgres-2", parte 1/2

Ora è il momento di inserire le informazioni sul contenitore PostgreSQL, l'utente "postgres", la password "5af45Q4ae3Xa3Ff4" e i contenitori desiderati. È estremamente importante ricordare che il servizio SSH deve essere attivo all'interno del contenitore PostgreSQL.

Importazione del contenitore "postgres-2", parte 2/2

Dopo aver premuto il pulsante "Importa", ClusterControl inizierà a gestire il contenitore PostgreSQL "postgres-2" all'interno del Cluster chiamato "PostgreSQL", e informerà quando il processo di importazione è terminato.

Registra sul processo di importazione del contenitore "postgres-2"

Una volta terminato, il sistema verrà mostrato nella scheda Cluster, il nostro Cluster creato più di recente e diverse opzioni separate in sezioni

Il nostro primo passaggio di visualizzazione sarà nell'opzione Panoramica.

Cluster PostgreSQL importato correttamente

Come puoi immaginare, il nostro database è vuoto e non abbiamo caos qui per il nostro divertimento, ma la grafica funziona ancora essendo impegnata in una piccola scala contenente statistiche sui processi SQL e Database.

Visualizzazione di statistiche sull'attività SQL e database

Simulazione di scenari del mondo reale

Per fare un po' di azione, ho creato un file CSV utilizzando Python, esplorando il repository GitHub di Socratica, che offre fantastici corsi su YouTube, e li rendono disponibili gratuitamente.

In sintesi, il file CSV creato contiene 9 milioni, 999 migliaia e 999 record di persone, ciascuno contenente ID, nome, cognome e compleanno. La dimensione del file è 324 MB:

$ du -s -h persons.csv
Verifica della dimensione del file CSV

Copieremo questo file CSV nel contenitore PostgreSQL, quindi lo copieremo di nuovo, ma questa volta, nel database e infine controlleremo le statistiche in ClusterControl.

$ docker container cp persons.csv postgres-2:/persons.csv
$ docker container exec -it postgres-2 bash
$ du -s -h persons.csv
$ su - postgres
$ psql
Trasferire il file CSV nel contenitore ed entrare nel database

Ok, quindi ora siamo nel database, come super utente "postgres", per favore nota i diversi colori nelle frecce.

Ora dobbiamo creare il database, la tabella e popolarlo con i dati contenuti nel file CSV e infine verificare se tutto funziona correttamente.

$ CREATE DATABASE severalnines;
$ \c severalnines;
$ CREATE TABLE persons (id SERIAL NOT NULL, first_name VARCHAR(50), last_name VARCHAR(50), birthday DATE, CONSTRAINT persons_pkey PRIMARY KEY (id));
$ COPY persons (id, first_name, last_name, birthday) FROM '/persons.csv' DELIMITER ',' CSV HEADER;
Connessione al nuovo database e importazione del file CSV

Il completamento di questo processo richiede alcuni minuti.

Ok, quindi ora inseriamo alcune query:

Query nel database "diverselnines"

Se guardi ora ClusterControl, si sono verificati alcuni movimenti nelle statistiche sull'hardware:

Visualizzazione delle statistiche sulla CPU all'interno di ClusterControl

Un'intera sezione per monitorare le query è fornita con un'interfaccia utente di facile utilizzo:

Visualizzazione delle statistiche sulle query all'interno di ClusterControl

Le statistiche sul database PostgreSQL sono utili ai migliori DBA per svolgere il loro intero potenziale nei loro compiti principali e ClusterControl è un sistema completo per analizzare ogni attività in corso in tempo reale, fornendo informazioni basate su tutti i dati raccolti dai processi del database.

Con ClusterControl, inoltre, il DBA può ampliare facilmente le proprie competenze utilizzando un set completo di strumenti per creare backup in locale o nel cloud, repliche, bilanciamenti del carico, integrazioni con servizi, LDAP, ChatOps, Prometheus e molto altro ancora.

Conclusione

In questo articolo, abbiamo configurato PostgreSQL all'interno di Docker e integrato con ClusterControl utilizzando la rete bridge definita dall'utente e SSH, simulando uno scenario popolando il database con un file CSV e quindi effettuando un rapido controllo generale nell'interfaccia utente di ClusterControl .