sql >> Databáze >  >> RDS >> PostgreSQL

Jak monitorovat PostgreSQL běžící uvnitř kontejneru Docker:Část druhá

Toto je druhá část multi-seriálu Jak monitorovat běh PostgreSQL uvnitř kontejneru Docker. V 1. části jsem představil přehled dockerových kontejnerů, zásad a sítí. V této části budeme pokračovat v konfiguraci dockeru a nakonec povolíme monitorování přes ClusterControl.

PostgreSQL je stará škola, open-source databáze, jejíž popularita stále roste, je široce používána a přijímána ve většině dnešních cloudových prostředí.

Když se používá uvnitř kontejneru, může být snadno konfigurován a spravován pomocí Dockeru pomocí různých značek pro vytvoření a odeslán na jakýkoli počítač na světě s nainstalovaným Dockerem, ale to je vše o Dockeru.

Nyní budeme diskutovat o PostgreSQL a pro začátek si uveďme jejich šest hlavních procesů běžících současně uvnitř kontejneru uživatelem OS nazvaným „postgres“, který je odlišný od uživatele „postgres“ uvnitř databáze. je super uživatel.

Pamatujte, že modrá šipka na obrázcích zobrazuje příkazy zadané uvnitř kontejneru.

$ ps auxww
Hlavní procesy PostgreSQL

První proces na seznamu je PostgreSQL server a ostatní spouští on. Jejich povinností je v zásadě analyzovat, co se děje na serveru, jsou dílčími procesy, které provádějí statistické vstupy, zapisují protokoly a podobné věci.

K monitorování aktivity uvnitř tohoto kontejneru se serverem PostgreSQL použijeme ClusterControl a k tomu budeme muset mít nainstalované SSH, abychom je mohli bezpečně připojit.

Secure Shell Server (SSH)

Pro sběr informací o kontejneru PostgreSQL není nic lepšího než SSH. Poskytuje vzdálený přístup z jedné IP adresy na druhou, a to vše ClusterControl potřebuje k provedení úlohy.

SSH je třeba stáhnout z úložiště a k tomu musíme být uvnitř kontejneru.

$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Instalace SSH do kontejneru "postgres-2"

Po instalaci upravíme konfiguraci, spustíme službu, nastavíme heslo pro uživatele root a nakonec opustíme kontejner:

$ 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
Konfigurace SSH v kontejneru "postgres-2", část 1/2

Monitorování pomocí ClusterControl

ClusterControl má hloubkový integrační systém schopný monitorovat všechny procesy PostgreSQL v reálném čase a také přichází s knihovnou poradců, která udržuje data v bezpečí, sleduje výkon databáze a samozřejmě poskytuje upozornění, když nastanou anomálie.

S nakonfigurovaným SSH může ClusterControl monitorovat aktivitu hardwaru operačního systému a poskytovat informace o databázi i vnější vrstvě.

Spustíme spuštění nového kontejneru a publikujeme jej na portu 5000 našeho počítače, poté budeme moci přistupovat k systému prostřednictvím našeho prohlížeče.

$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Spuštění kontejneru "s9s-ccontrol" pro Somenines ClusterControl

Po nasazení zůstane pouze konfigurace SSH a máme dobrou zprávu, protože jsme v síti User-Defined Bridge Network, můžeme používat DNS!

$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Konfigurace SSH v kontejneru "postgres-2", část 2/2

Po zadání „yes“ a zadání dříve poskytnutého hesla je možné přistupovat ke kontejneru „postgres-2“ jako root pomocí SSH:

$ ssh postgres-2
Úspěšná kontrola připojení SSH

Tato nová barva, světle modrá, bude dále použita k reprezentaci aktivity uvnitř databáze. Ve výše uvedeném příkladu jsme přistoupili ke kontejneru „postgres-2“ z „s9s-ccontrol“, ale stále je to uživatel root. Udržujte se mnou svou pozornost a kritiku.

Dalším krokem je tedy přechod do prohlížeče a přístup k http://localhost:5000/clustercontrol/users/welcome/ a zaregistrujte si účet, nebo pokud jej již máte, navštivte http://localhost:5000/clustercontrol/users/login .

Poté „Importovat existující server/klastr“ a zadejte dřívější konfiguraci. Musí být vybrána karta „PostgreSQL &TimescaleDB“. Do pole „SSH User“ pro tuto ukázku zadejte „root“. Poté nakonec zadejte „Cluster Name“ a může to být jakýkoli název, který chcete, je to jednoduše ten, kdo bude obsahovat tolik nezbytných kontejnerů PostgreSQL, které chcete importovat a monitorovat.

Import databáze "postgres-2", část 1/2

Nyní je čas zadat informace o kontejneru PostgreSQL, uživatele „postgres“, heslo „5af45Q4ae3Xa3Ff4“ a požadované kontejnery. Je nesmírně důležité si uvědomit, že služba SSH musí být aktivní uvnitř kontejneru PostgreSQL.

Import kontejneru "postgres-2", část 2/2

Po stisknutí tlačítka „Importovat“ začne ClusterControl spravovat PostgreSQL kontejner „postgres-2“ uvnitř clusteru s názvem „PostgreSQL“ a bude informovat o dokončení procesu importu.

Protokol o procesu importu kontejneru "postgres-2"

Po dokončení se systém zobrazí na kartě Clustery, náš naposledy vytvořený Cluster a různé možnosti rozdělené do sekcí

Náš první krok vizualizace bude v možnosti Přehled.

Cluster PostgreSQL byl úspěšně importován

Jak si dokážete představit, naše databáze je prázdná a pro zábavu tu nemáme žádný chaos, ale grafika stále funguje a je zapojena v malém měřítku obsahující statistiky o procesech SQL a databáze.

Zobrazení statistik o aktivitě SQL a databáze

Simulace scénáře reálného světa

Abych provedl nějakou akci, vytvořil jsem soubor CSV pomocí Pythonu a prozkoumal jsem úložiště GitHub společnosti Socratica, která poskytuje úžasné kurzy na YouTube a tyto soubory zpřístupňuje zdarma.

Stručně řečeno, vytvořený soubor CSV má 9 milionů, 999 tisíc a 999 záznamů o osobách, z nichž každý obsahuje ID, jméno, příjmení a datum narození. Velikost souboru je 324 MB:

$ du -s -h persons.csv
Kontrola velikosti souboru CSV

Tento soubor CSV zkopírujeme do kontejneru PostgreSQL, poté jej zkopírujeme znovu, ale tentokrát do databáze, a nakonec zkontrolujeme statistiky v 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
Přenos souboru CSV do kontejneru a vložení do databáze

Dobře, takže jsme nyní v databázi jako super uživatel „postgres“, všimněte si prosím různých barev v šipkách.

Nyní musíme vytvořit databázi, tabulku a naplnit ji daty obsaženými v souboru CSV a nakonec zkontrolovat, zda vše funguje správně.

$ 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;
Připojování k nové databázi a import souboru CSV

Dokončení tohoto procesu trvá několik minut.

Dobře, takže teď zadáme nějaké dotazy:

Dotazů v databázi "několik desítek"

Pokud se nyní podíváte na ClusterControl, došlo k určitému pohybu ve statistikách o hardwaru:

Zobrazení statistik o CPU uvnitř ClusterControl

Celá sekce pro sledování dotazů je opatřena uživatelským rozhraním pro snadné použití:

Zobrazení statistik o dotazech uvnitř ClusterControl

Statistiky o databázi PostgreSQL slouží nejlepším správcům databází k tomu, aby mohli plně využít svůj potenciál při plnění svých hlavních povinností, a ClusterControl je kompletní systém pro analýzu každé aktivity probíhající v reálném čase a poskytuje informace založené na všech datech shromážděných z procesů databáze.

S ClusterControl může DBA také snadno rozšířit své dovednosti pomocí úplné sady nástrojů pro vytváření záloh lokálně nebo v cloudu, replikací, vyvažování zátěže, integrací se službami, LDAP, ChatOps, Prometheus a mnoha dalších.

Závěr

Prostřednictvím tohoto článku jsme konfigurovali PostgreSQL uvnitř Dockeru a integrovali se s ClusterControl pomocí User-Defined Bridge Network a SSH, simulovali scénář naplnění databáze souborem CSV a poté provedli celkovou rychlou kontrolu v uživatelském rozhraní ClusterControl. .


  1. Operace není platná pro stav chyby transakce a rozsah transakce

  2. Požadavek nastaven v Concurrent Manager

  3. Vyberte řádek s nejnovějším datem na uživatele

  4. sqlite:jak přidat celkový čas hh:mm:ss, kde je datový typ sloupce DATETIME?