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

Sådan overvåger du PostgreSQL, der kører inde i en Docker-container:Anden del

Dette er den anden del af multi-serien Sådan overvåger du PostgreSQL, der kører inde i en Docker Container. I del 1 præsenterede jeg en oversigt over docker-containere, politikker og netværk. I denne del vil vi fortsætte med docker-konfiguration og endelig aktivere overvågning via ClusterControl.

PostgreSQL er en gammeldags, open source-database, hvis popularitet stadig er stigende, og den bliver meget brugt og accepteret i de fleste cloud-miljøer i dag.

Når det bruges inde i en container, kan det nemt konfigureres og administreres af Docker, ved at bruge forskellige tags til oprettelsen og sendes til enhver computer i verden med Docker installeret, men dette handler om Docker.

Nu vil vi diskutere om PostgreSQL, og for at starte, lad os liste deres seks hovedprocesser, der kører samtidigt inde i en container af OS-brugeren kaldet "postgres", som er en anden end "postgres"-brugeren inde i databasen, den ene er en superbruger.

Husk, at den blå pil på billederne viser kommandoer indtastet inde i en beholder.

$ ps auxww
PostgreSQL-hovedprocesser

Den første proces på listen er PostgreSQL-serveren, og de andre startes af ham. Deres opgaver er dybest set at analysere, hvad der foregår på serveren, idet de er underprocesser, der udfører statistikinput, skriver logs og den slags ting.

Vi vil bruge ClusterControl til at overvåge aktiviteten inde i denne container med PostgreSQL-serveren, og for at gøre det skal vi have SSH installeret for at kunne forbinde dem sikkert.

Secure Shell Server (SSH)

For at indsamle oplysningerne om PostgreSQL-beholderen er intet bedre end SSH. Det giver fjernadgang til en IP-adresse til en anden, og det er alt, hvad ClusterControl skal bruge for at udføre jobbet.

SSH skal downloades fra depotet, og for at gøre det skal vi være inde i containeren.

$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Installation af SSH i containeren "postgres-2"

Efter installationen redigerer vi konfigurationen, starter tjenesten, opsætter en adgangskode til root-brugeren og forlader til sidst containeren:

$ 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
Konfiguration af SSH i "postgres-2"-beholderen, del 1/2

Overvågning med ClusterControl

ClusterControl har et dybdegående integrationssystem, der er i stand til at overvåge alle PostgreSQL-processerne i realtid, og det kommer også med et bibliotek af rådgivere for at holde dataene sikre, spore databasens ydeevne og selvfølgelig give advarsler, når der opstår uregelmæssigheder.

Med SSH konfigureret kan ClusterControl overvåge operativsystemets hardwareaktivitet og give indsigt om både databasen og det ydre lag.

Vi kører en ny container og udgiver den til port 5000 på vores computer, så vil vi være i stand til at få adgang til systemet via vores browser.

$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Kørsel af containeren "s9s-ccontrol" for Severalnines ClusterControl

Når først de er implementeret, forbliver kun SSH-konfigurationen, og vi har gode nyheder, fordi vi er i et brugerdefineret bronetværk, kan vi bruge DNS!

$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Konfiguration af SSH i "postgres-2"-beholderen, del 2/2

Efter at have indtastet "ja" og angivet det tidligere angivne kodeord, er det muligt at få adgang til "postgres-2"-beholderen som root ved hjælp af SSH:

$ ssh postgres-2
Sådan kontrolleres SSH-forbindelsen korrekt

Denne nye farve, lyseblå, vil blive brugt i det følgende til at repræsentere aktiviteten inde i databasen. I eksemplet ovenfor har vi fået adgang til "postgres-2"-beholderen fra "s9s-ccontrol", men det er stadig root-brugeren. Hold din opmærksomhed og kritik hos mig.

Så det næste trin er at gå til browseren og få adgang til http://localhost:5000/clustercontrol/users/welcome/ og registrer en konto, eller hvis du allerede har en, besøg http://localhost:5000/clustercontrol/users/login .

Derefter "Importer eksisterende server/klynge" og indtast den tidligere konfiguration. Fanen "PostgreSQL &TimescaleDB" skal vælges. I feltet "SSH User" for denne demonstration skal du blot skrive "root". Indtast derefter til sidst "Klyngenavnet", og det kan være et hvilket som helst navn, du ønsker, er simpelthen hvem der skal indeholde så mange nødvendige PostgreSQL-containere, som du vil importere og overvåge.

Import af "postgres-2"-databasen, del 1/2

Nu er det tid til at indtaste oplysningerne om PostgreSQL-containeren, brugeren "postgres", adgangskoden "5af45Q4ae3Xa3Ff4" og de ønskede containere. Det er ekstremt vigtigt at huske, at SSH-tjenesten skal være aktiv inde i PostgreSQL-beholderen.

Importering af "postgres-2"-beholderen, del 2/2

Efter at have trykket på "Importer"-knappen, vil ClusterControl begynde at administrere PostgreSQL-beholderen "postgres-2" inde i klyngen kaldet "PostgreSQL", og den vil informere, når processen med at importere er færdig.

Log om processen med at importere containeren "postgres-2"

Når det er færdigt, vil systemet blive vist under fanen Clusters, vores senest oprettede Cluster og forskellige muligheder adskilt i sektioner

Vores første visualiseringstrin vil være i indstillingen Oversigt.

PostgreSQL-klynge importeret med succes

Som du kan forestille dig, er vores database tom, og vi har ikke noget kaos her for vores sjove skyld, men grafikken fungerer stadig ved at være engageret i en lille skala indeholdende statistik om SQL- og databaseprocesserne.

Visning af statistik om SQL- og databaseaktiviteten

Senariosimulering fra den virkelige verden

For at give lidt handling har jeg oprettet en CSV-fil ved hjælp af Python, hvor jeg har udforsket GitHub-lageret i Socratica, som tilbyder fantastiske kurser på YouTube, og de gør disse filer tilgængelige gratis.

Sammenfattende har den oprettede CSV-fil 9 millioner, 999 tusinder og 999 registreringer om personer, hver med ID, fornavn, efternavn og fødselsdag. Filens størrelse er 324 MB:

$ du -s -h persons.csv
Tjekker størrelsen af ​​CSV-filen

Vi kopierer denne CSV-fil ind i PostgreSQL-containeren, kopierer den derefter igen, men denne gang ind i databasen, og kontrollerer til sidst statistikkerne i 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
Overførsel af CSV-filen til containeren og indtastning i databasen

Ok, så vi er i databasen nu, som superbrugeren “postgres”, bemærk venligst de forskellige farver i pilene.

Nu skal vi oprette databasen, tabellen og udfylde den med de data, der er indeholdt i CSV-filen, og til sidst kontrollere, om alt fungerer fint.

$ 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;
Opretter forbindelse til den nye database og importerer CSV-filen

Denne proces tager nogle minutter at fuldføre.

Ok, så lad os nu indtaste nogle forespørgsler:

Forespørgsler i databasen "severalnines"

Hvis du ser på ClusterControl nu, skete der en bevægelse i statistikken om hardwaren:

Visning af statistik om CPU'en inde i ClusterControl

En hel sektion til at overvåge forespørgslerne er forsynet med brugervenlighed UI:

Visning af statistik om forespørgslerne inde i ClusterControl

Statistikker om PostgreSQL-databasen tjener de bedste DBA'er til at udføre hele deres potentiale på deres hovedopgaver, og ClusterControl er et komplet system til at analysere enhver aktivitet, der sker i realtid, og giver information baseret på alle data indsamlet fra databaseprocesserne.

Med ClusterControl kan DBA også nemt udvide deres færdigheder ved hjælp af et komplet sæt værktøjer til at skabe sikkerhedskopier lokalt eller i skyen, replikeringer, belastningsbalancere, integrationer med tjenester, LDAP, ChatOps, Prometheus og meget mere.

Konklusion

Gennem denne artikel har vi konfigureret PostgreSQL inde i Docker og integreret med ClusterControl ved hjælp af User-Defined Bridge Network og SSH, simuleret et scenario, der udfylder databasen med en CSV-fil, og derefter foretaget et overordnet hurtigt tjek i ClusterControl-brugergrænsefladen .


  1. 2 måder at sammenkæde strenge og tal i MariaDB

  2. PostgreSQL 9.6:Parallel sekventiel scanning

  3. Tilpas Spotlight Cloud Alarmer

  4. hvordan kalder man en lagret proc fra støvknapper og ændrer refcursor, der returneres?