sql >> Database >  >> RDS >> PostgreSQL

Hoe PostgreSQL in een Docker-container te controleren:deel twee

Dit is het tweede deel van de multi-serie How to Monitor PostgreSQL die in een Docker-container wordt uitgevoerd. In deel 1 presenteerde ik een overzicht van dockercontainers, beleid en netwerken. In dit deel gaan we verder met de configuratie van de docker en tenslotte maken we monitoring via ClusterControl mogelijk.

PostgreSQL is een old school, open-source database waarvan de populariteit nog steeds toeneemt, en wordt op grote schaal gebruikt en geaccepteerd in de meeste cloudomgevingen van vandaag.

Wanneer het in een container wordt gebruikt, kan het eenvoudig worden geconfigureerd en beheerd door Docker, met behulp van verschillende tags voor het maken en verzonden naar elke computer ter wereld waarop Docker is geïnstalleerd, maar dit draait allemaal om Docker.

Nu zullen we het hebben over PostgreSQL, en laten we om te beginnen een lijst maken van hun zes hoofdprocessen die gelijktijdig in een container worden uitgevoerd door de OS-gebruiker genaamd "postgres", wat een andere is dan de "postgres" -gebruiker in de database, die ene is een supergebruiker.

Onthoud dat de blauwe pijl in de afbeeldingen opdrachten weergeeft die in een container zijn ingevoerd.

$ ps auxww
Hoofdprocessen van PostgreSQL

Het eerste proces op de lijst is de PostgreSQL-server en de andere worden door hem gestart. Hun taken zijn in feite om te analyseren wat er op de server gebeurt, als subprocessen die statistische invoer uitvoeren, logboeken schrijven en dit soort dingen.

We zullen ClusterControl gebruiken om de activiteit binnen deze container met de PostgreSQL-server te controleren, en om dit te doen, moeten we SSH hebben geïnstalleerd om ze veilig te kunnen verbinden.

Beveiligde Shell Server (SSH)

Om de informatie over de PostgreSQL-container te verzamelen, is niets beter dan SSH. Het geeft toegang op afstand van het ene IP-adres naar het andere, en dit alles wat de ClusterControl nodig heeft om de taak uit te voeren.

SSH moet worden gedownload van de repository en om dit te doen, moeten we in de container zijn.

$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
SSH installeren in de container "postgres-2"

Na de installatie zullen we de configuratie bewerken, de service starten, een wachtwoord instellen voor de rootgebruiker en uiteindelijk de container verlaten:

$ 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
De SSH configureren in de "postgres-2"-container, deel 1/2

Bewaking met ClusterControl

ClusterControl heeft een diepgaand integratiesysteem dat in staat is om alle processen van PostgreSQL in realtime te bewaken, en wordt ook geleverd met een bibliotheek met adviseurs om de gegevens veilig te houden, de databaseprestaties te volgen en natuurlijk waarschuwingen te geven wanneer er afwijkingen optreden.

Als SSH is geconfigureerd, kan ClusterControl de hardwareactiviteit van het besturingssysteem volgen en inzicht geven in zowel de database als de buitenste laag.

We zullen een nieuwe container uitvoeren en deze publiceren op poort 5000 van onze computer, dan hebben we toegang tot het systeem via onze browser.

$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
De container "s9s-ccontrol" voor ClusterControl van ClusterControl uitvoeren

Eenmaal geïmplementeerd, blijft alleen de SSH-configuratie over en we hebben goed nieuws, omdat we ons in een User-Defined Bridge-netwerk bevinden, kunnen we DNS gebruiken!

$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
De SSH configureren in de "postgres-2"-container, deel 2/2

Na het invoeren van "ja" en het opgeven van het eerder verstrekte wachtwoord, is het mogelijk om als root toegang te krijgen tot de "postgres-2"-container met SSH:

$ ssh postgres-2
Controleer de SSH-verbinding met succes

Deze nieuwe kleur, lichtblauw, zal in het volgende worden gebruikt om de activiteit in de database weer te geven. In het bovenstaande voorbeeld hebben we toegang gekregen tot de "postgres-2" -container van "s9s-ccontrol", maar het is nog steeds de rootgebruiker. Houd je aandacht en kritiek bij me.

Dus de volgende stap is om naar de browser te gaan en toegang te krijgen tot http://localhost:5000/clustercontrol/users/welcome/ en registreer een account, of als u er al een heeft, gaat u naar http://localhost:5000/clustercontrol/users/login .

Vervolgens “Import Existing Server/Cluster” en voer de eerdere configuratie in. Het tabblad "PostgreSQL &TimescaleDB" moet worden geselecteerd. Typ in het veld "SSH-gebruiker" voor deze demonstratie gewoon "root". Voer vervolgens de "Clusternaam" in en het kan elke gewenste naam zijn, het is gewoon wie zoveel noodzakelijke PostgreSQL-containers zal bevatten die u wilt importeren en controleren.

Importeren van de "postgres-2"-database, deel 1/2

Nu is het tijd om de informatie over de PostgreSQL-container, de gebruiker "postgres", het wachtwoord "5af45Q4ae3Xa3Ff4" en de gewenste containers in te voeren. Het is uiterst belangrijk om te onthouden dat de SSH-service actief moet zijn in de PostgreSQL-container.

Importeren van de "postgres-2"-container, deel 2/2

Nadat u op de knop "Importeren" hebt gedrukt, begint ClusterControl met het beheren van de PostgreSQL-container "postgres-2" in de Cluster met de naam "PostgreSQL", en geeft aan wanneer het importproces is voltooid.

Log over het proces van het importeren van de container "postgres-2"

Eenmaal voltooid, wordt het systeem weergegeven onder het tabblad Clusters, onze meest recent gemaakte Cluster en verschillende opties, gescheiden in secties

Onze eerste visualisatiestap bevindt zich in de optie Overzicht.

PostgreSQL-cluster geïmporteerd

Zoals je je kunt voorstellen, is onze database leeg en hebben we hier geen chaos voor onze lol, maar de afbeelding werkt nog steeds op kleine schaal met statistieken over de SQL- en databaseprocessen.

Statistieken weergeven over de SQL- en database-activiteit

Echte wereldscenariosimulatie

Om wat actie te ondernemen, heb ik een CSV-bestand gemaakt met Python, waarbij ik de GitHub-repository van Socratica verken, die geweldige cursussen op YouTube biedt, en ze stellen die bestanden gratis beschikbaar.

Samengevat, het gemaakte CSV-bestand heeft 9 miljoen, 999 duizenden en 999 records over personen, elk met ID, voornaam, achternaam en verjaardag. De grootte van het bestand is 324 MB:

$ du -s -h persons.csv
De grootte van het CSV-bestand controleren

We zullen dit CSV-bestand naar de PostgreSQL-container kopiëren, het dan opnieuw kopiëren, maar deze keer naar de database, en ten slotte de statistieken in ClusterControl controleren.

$ docker container cp persons.csv postgres-2:/persons.csv
$ docker container exec -it postgres-2 bash
$ du -s -h persons.csv
$ su - postgres
$ psql
Het CSV-bestand overbrengen naar de container en invoeren in de database

Ok, dus we zijn nu in de database, als de supergebruiker "postgres", let op de verschillende kleuren in de pijlen.

Nu moeten we de database en tabel maken en deze vullen met de gegevens in het CSV-bestand, en ten slotte controleren of alles goed werkt.

$ 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;
Verbinding maken met de nieuwe database en het CSV-bestand importeren

Dit proces duurt enkele minuten.

Oké, laten we nu wat vragen invoeren:

Zoekopdrachten in de database "severalnines"

Als je nu naar ClusterControl kijkt, is er wat beweging in de statistieken over de hardware:

Statistieken weergeven over de CPU in ClusterControl

Een hele sectie om de vragen te controleren wordt geleverd met een gebruiksvriendelijke gebruikersinterface:

Statistieken weergeven over de query's in ClusterControl

Statistieken over de PostgreSQL-database dienen de beste DBA's om hun volledige potentieel voor hun hoofdtaken uit te voeren, en ClusterControl is een compleet systeem om elke activiteit in realtime te analyseren en informatie te geven op basis van alle gegevens die zijn verzameld uit de databaseprocessen.

Met ClusterControl kan de DBA ook eenvoudig hun vaardigheden uitbreiden met behulp van een volledige set tools om back-ups lokaal of in de cloud te maken, replicaties, load balancers, integraties met services, LDAP, ChatOps, Prometheus en nog veel meer.

Conclusie

Via dit artikel hebben we PostgreSQL in Docker geconfigureerd en met ClusterControl geïntegreerd met behulp van User-Defined Bridge Network en SSH, een scenario gesimuleerd waarin de database wordt gevuld met een CSV-bestand en vervolgens een algemene snelle controle uitgevoerd in de gebruikersinterface van ClusterControl .


  1. Eerste openbare preview van SQL Server 2019:CTP 2.0

  2. Heroku en Rails:Gem Load Error met Postgres, maar het is gespecificeerd in GEMFILE

  3. postgresql-fout PANIC:kan geen geldig controlepuntrecord vinden

  4. Een tabel met een specifieke kolom vinden in postgresql