PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So überwachen Sie PostgreSQL, das in einem Docker-Container ausgeführt wird:Teil Zwei

Dies ist der zweite Teil der mehrteiligen Serie How to Monitor PostgreSQL Running Inside a Docker Container. In Teil 1 habe ich einen Überblick über Docker-Container, Richtlinien und Netzwerke gegeben. In diesem Teil werden wir mit der Docker-Konfiguration fortfahren und schließlich die Überwachung über ClusterControl aktivieren.

PostgreSQL ist eine Open-Source-Datenbank der alten Schule, deren Popularität immer noch zunimmt und die in den meisten Cloud-Umgebungen von heute weit verbreitet und akzeptiert ist.

Wenn es innerhalb eines Containers verwendet wird, kann es einfach von Docker konfiguriert und verwaltet werden, indem verschiedene Tags für die Erstellung verwendet und an jeden Computer auf der Welt mit installiertem Docker gesendet werden, aber hier dreht sich alles um Docker.

Jetzt werden wir über PostgreSQL sprechen, und zu Beginn listen wir ihre sechs Hauptprozesse auf, die gleichzeitig in einem Container des Betriebssystembenutzers namens „postgres“ ausgeführt werden, der sich von dem „postgres“-Benutzer innerhalb der Datenbank unterscheidet ist ein Superuser.

Denken Sie daran, dass der blaue Pfeil in den Bildern Befehle anzeigt, die in einen Container eingegeben wurden.

$ ps auxww
PostgreSQL-Hauptprozesse

Der erste Prozess auf der Liste ist der PostgreSQL-Server, die anderen werden von ihm gestartet. Ihre Aufgaben bestehen im Wesentlichen darin, zu analysieren, was auf dem Server vor sich geht, indem sie Unterprozesse sind, die Statistikeingaben durchführen, Protokolle schreiben und solche Dinge.

Wir werden ClusterControl verwenden, um die Aktivität innerhalb dieses Containers mit dem PostgreSQL-Server zu überwachen, und dazu müssen wir SSH installiert haben, um sie sicher zu verbinden.

Secure Shell-Server (SSH)

Um die Informationen über den PostgreSQL-Container zu sammeln, ist nichts besser als SSH. Es gibt Fernzugriff für eine IP-Adresse auf eine andere, und das ist alles, was die ClusterControl benötigt, um den Job auszuführen.

SSH muss aus dem Repository heruntergeladen werden, und dazu müssen wir uns im Container befinden.

$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Installation von SSH im Container "postgres-2"

Nach der Installation bearbeiten wir die Konfiguration, starten den Dienst, richten ein Passwort für den Root-Benutzer ein und verlassen schließlich den Container:

$ 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
Konfigurieren von SSH im "postgres-2"-Container, Teil 1/2

Überwachung mit ClusterControl

ClusterControl verfügt über ein tiefgreifendes Integrationssystem, das in der Lage ist, alle Prozesse von PostgreSQL in Echtzeit zu überwachen, und wird außerdem mit einer Bibliothek von Advisors geliefert, um die Daten zu sichern, die Datenbankleistung zu verfolgen und natürlich Warnungen bereitzustellen, wenn Anomalien auftreten. P>

Wenn SSH konfiguriert ist, kann ClusterControl die Hardwareaktivität des Betriebssystems überwachen und Einblicke sowohl in die Datenbank als auch in die Außenschicht geben.

Wir werden einen neuen Container ausführen und ihn auf dem Port 5000 unseres Computers veröffentlichen, dann können wir über unseren Browser auf das System zugreifen.

$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Ausführen des Containers "s9s-ccontrol" für Multiplenines ClusterControl

Nach der Bereitstellung bleibt nur die SSH-Konfiguration übrig, und wir haben gute Neuigkeiten, da wir uns in einem benutzerdefinierten Bridge-Netzwerk befinden, können wir DNS verwenden!

$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
SSH-Konfiguration im "postgres-2"-Container, Teil 2/2

Nachdem Sie „yes“ eingegeben und das zuvor bereitgestellte Passwort angegeben haben, können Sie als root mit SSH auf den „postgres-2“-Container zugreifen:

$ ssh postgres-2
Überprüfen der SSH-Verbindung erfolgreich

Diese neue Farbe, hellblau, wird im Folgenden verwendet, um die Aktivität innerhalb der Datenbank darzustellen. Im obigen Beispiel haben wir von „s9s-ccontrol“ aus auf den Container „postgres-2“ zugegriffen, aber es ist immer noch der Root-Benutzer. Behalten Sie Ihre Aufmerksamkeit und Kritik bei mir.

Der nächste Schritt ist also, zum Browser zu gehen und auf http://localhost:5000/clustercontrol/users/welcome/ zuzugreifen und registrieren Sie ein Konto oder besuchen Sie http://localhost:5000/clustercontrol/users/login, falls Sie bereits eines haben .

Dann „Vorhandenen Server/Cluster importieren“ und die frühere Konfiguration eingeben. Der Reiter „PostgreSQL &TimescaleDB“ muss ausgewählt sein. Geben Sie für diese Demonstration im Feld „SSH-Benutzer“ einfach „root“ ein. Geben Sie dann schließlich den „Cluster-Namen“ ein, und es kann ein beliebiger Name sein, der einfach so viele notwendige PostgreSQL-Container enthält, die Sie importieren und überwachen möchten.

Importieren der „postgres-2“-Datenbank, Teil 1/2

Jetzt ist es an der Zeit, die Informationen zum PostgreSQL-Container, den Benutzer „postgres“, das Passwort „5af45Q4ae3Xa3Ff4“ und die gewünschten Container einzugeben. Denken Sie unbedingt daran, dass der SSH-Dienst innerhalb des PostgreSQL-Containers aktiv sein muss.

Importieren des "postgres-2"-Containers, Teil 2/2

Nachdem Sie auf die Schaltfläche „Importieren“ geklickt haben, beginnt ClusterControl mit der Verwaltung des PostgreSQL-Containers „postgres-2“ innerhalb des Clusters namens „PostgreSQL“ und informiert Sie, wenn der Importvorgang abgeschlossen ist.

Protokoll zum Importvorgang des Containers "postgres-2"

Sobald Sie fertig sind, wird das System unter der Registerkarte Cluster angezeigt, unser zuletzt erstellter Cluster und verschiedene Optionen, die in Abschnitte unterteilt sind

Unser erster Visualisierungsschritt wird in der Übersichtsoption sein.

PostgreSQL-Cluster erfolgreich importiert

Wie Sie sich vorstellen können, ist unsere Datenbank leer und wir haben hier zu unserem Spaß kein Chaos, aber die Grafik funktioniert immer noch, indem sie sich in einem kleinen Maßstab mit Statistiken über die SQL- und Datenbankprozesse beschäftigt.

Anzeigen von Statistiken über die SQL- und Datenbankaktivität

Simulation realer Szenarien

Um etwas Action zu bieten, habe ich eine CSV-Datei mit Python erstellt und das GitHub-Repository von Socratica durchsucht, das erstaunliche Kurse auf YouTube anbietet und diese Dateien kostenlos zur Verfügung stellt.

Zusammenfassend enthält die erstellte CSV-Datei 9 Millionen, 999 Tausend und 999 Datensätze zu Personen, die jeweils ID, Vorname, Nachname und Geburtstag enthalten. Die Größe der Datei beträgt 324 MB:

$ du -s -h persons.csv
Überprüfen der Größe der CSV-Datei

Wir werden diese CSV-Datei in den PostgreSQL-Container kopieren, dann erneut kopieren, diesmal jedoch in die Datenbank, und schließlich die Statistiken in ClusterControl überprüfen.

$ docker container cp persons.csv postgres-2:/persons.csv
$ docker container exec -it postgres-2 bash
$ du -s -h persons.csv
$ su - postgres
$ psql
Übertragen der CSV-Datei in den Container und Eintragen in die Datenbank

Ok, wir sind jetzt also in der Datenbank, als Superuser „postgres“, bitte beachten Sie die unterschiedlichen Farben in den Pfeilen.

Jetzt müssen wir die Datenbank und die Tabelle erstellen und mit den in der CSV-Datei enthaltenen Daten füllen und schließlich prüfen, ob alles einwandfrei funktioniert.

$ 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;
Herstellen einer Verbindung mit der neuen Datenbank und Importieren der CSV-Datei

Dieser Vorgang dauert einige Minuten.

Ok, jetzt geben wir ein paar Abfragen ein:

Abfragen in der Datenbank "severalnines"

Wenn Sie sich jetzt ClusterControl ansehen, hat sich etwas in der Statistik über die Hardware bewegt:

Anzeigen von Statistiken über die CPU innerhalb von ClusterControl

Ein ganzer Abschnitt zur Überwachung der Abfragen wird mit einer benutzerfreundlichen Benutzeroberfläche bereitgestellt:

Anzeigen von Statistiken über die Abfragen innerhalb von ClusterControl

Statistiken über die PostgreSQL-Datenbank dienen den besten DBAs dazu, ihr gesamtes Potenzial bei ihren Hauptaufgaben auszuschöpfen, und ClusterControl ist ein komplettes System zur Analyse aller Aktivitäten, die in Echtzeit stattfinden, und liefert Informationen basierend auf allen Daten, die von den Datenbankprozessen gesammelt wurden.

Mit ClusterControl kann der DBA auch seine Fähigkeiten mit einem vollständigen Satz von Tools erweitern, um Backups lokal oder in der Cloud, Replikationen, Load Balancer, Integrationen mit Diensten, LDAP, ChatOps, Prometheus und vielem mehr zu erstellen.

Schlussfolgerung

In diesem Artikel haben wir PostgreSQL innerhalb von Docker konfiguriert und mit ClusterControl mithilfe von User-Defined Bridge Network und SSH integriert, ein Szenario simuliert, in dem die Datenbank mit einer CSV-Datei gefüllt wird, und dann eine allgemeine Schnellprüfung in der ClusterControl-Benutzeroberfläche durchgeführt .