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

Dynamische Überwachung von PostgreSQL-Instanzen mit pg_top

Die Überwachung von PostgreSQL kann manchmal wie der Versuch sein, Vieh in einem Gewitter zu streiten. Anwendungen stellen so schnell eine Verbindung her und stellen Abfragen, dass es schwierig ist, zu sehen, was vor sich geht, oder sich sogar einen guten Überblick über die Leistung des Systems zu verschaffen, außer dem typischen Entwickler, der sich über Anfragen wie „Die Dinge sind langsam, Hilfe!“ beschwert.

In früheren Artikeln haben wir besprochen, wie man zur Quelle gelangt, wenn PostgreSQL langsam reagiert, aber wenn es sich bei der Quelle speziell um Abfragen handelt, reicht eine einfache Überwachung möglicherweise nicht aus, um zu beurteilen, was in einer aktiven Live-Umgebung vor sich geht.

Geben Sie pg_top ein, ein PostgreSQL-spezifisches Programm, um Echtzeitaktivitäten in einer Datenbank zu überwachen und grundlegende Informationen für den Datenbankhost selbst anzuzeigen. Ähnlich wie beim Linux-Befehl „top“ bringt seine Ausführung den Benutzer in eine interaktive Live-Anzeige der Datenbankaktivität auf dem Host, die automatisch in Intervallen aktualisiert wird.

Installation

Die Installation von pg_top kann auf die allgemein erwarteten Arten erfolgen:Paketmanager und Quellinstallation. Die aktuellste Version zum Zeitpunkt dieses Artikels ist 3.7.0.

Paketmanager

Suchen Sie basierend auf der fraglichen Linux-Distribution nach pgtop oder pg_top im Paketmanager, es ist wahrscheinlich in gewisser Hinsicht für die installierte Version von PostgreSQL auf dem System verfügbar.

Red Hat-basierte Distributionen:

# sudo yum install pg_top

Gentoo-basierte Distributionen:

# sudo apt-get install pgtop

Quelle

Falls gewünscht, kann pg_top über die Quelle aus dem PostgreSQL-Git-Repository installiert werden. Dadurch wird jede gewünschte Version bereitgestellt, sogar neuere Builds, die noch nicht in den offiziellen Releases enthalten sind.

Funktionen

Nach der Installation fungiert pg_top als sehr genaue Echtzeitansicht der Datenbank, die es überwacht, und wenn Sie „pg_top“ über die Befehlszeile ausführen, wird das interaktive PostgreSQL-Überwachungstool gestartet.

Das Tool selbst kann helfen, Licht auf alle Prozesse zu werfen, die derzeit mit der Datenbank verbunden sind.

pg_top wird ausgeführt

Das Starten von pg_top ist dasselbe wie der Befehl „top“ im Unix-/Linux-Stil selbst, zusammen mit Verbindungsinformationen zur Datenbank.

So führen Sie pg_top auf einem lokalen Datenbankhost aus:

pg_top -h localhost -p 5432 -d severalnines -U postgres

Um pg_top auf einem Remote-Host auszuführen, ist das Flag -r oder --remote-mode erforderlich und die pg_proctab-Erweiterung muss auf dem Host selbst installiert sein:

pg_top -r -h 192.168.1.20 -p 5432 -d severalnines -U postgres

Was auf dem Bildschirm angezeigt wird

Beim Start von pg_top sehen wir eine Anzeige mit ziemlich vielen Informationen.

Standardausgabe von pg_top unter Linux

Lastdurchschnitt:
Wie der Standard-Top-Befehl wird dieser Lastdurchschnitt für 1-, 5- und 15-Minuten-Intervalle berechnet.

Betriebszeit:
Die Gesamtzeit, die das System seit dem letzten Neustart online war.

Prozesse:
Die Gesamtzahl der verbundenen Datenbankprozesse, mit Angabe, wie viele laufen und wie viele schlafen.

CPU-Statistiken:
Die Statistik der CPU, die die prozentuale Auslastung für Benutzer, System und Leerlauf anzeigt, nette Informationen sowie iowait-Prozentsätze.

Speicher:
Die Gesamtmenge an verwendetem Speicher, frei, in Puffern und zwischengespeichert.

DB-Aktivität:
Die Statistiken für die Datenbankaktivität wie Transaktionen pro Sekunde, Anzahl der Rollbacks pro Sekunde, gelesene Puffer pro Sekunde, getroffene Puffer pro Sekunde, Anzahl gelesener Zeilen pro Sekunde und geschriebener Zeilen pro Sekunde.

DB-I/O-Aktivität:
Die Aktivität für Input Output auf dem System, die zeigt, wie viele Lese- und Schreibvorgänge pro Sekunde sowie die Menge an Lese- und Schreibvorgängen pro Sekunde.

DB Disk Stats:
Die Gesamtgröße der Datenbankfestplatte sowie wie viel freier Speicherplatz.

Swap:
Die Informationen über den verwendeten Swap-Speicherplatz, falls vorhanden.

Prozesse:
Eine Liste von Prozessen, die mit der Datenbank verbunden sind, einschließlich aller Autovacuum-Typen interner Prozesse. Die Liste enthält die PID, die Priorität, die nette Menge, den verwendeten residenten Speicher, den Status der Verbindung, die Anzahl der verwendeten CPU-Sekunden, den CPU-Prozentsatz und den aktuellen Befehl, den der Prozess ausführt.

Nützliche interaktive Funktionen

Es gibt eine Handvoll interaktiver Funktionen in pg_top, auf die während der Ausführung zugegriffen werden kann. Eine vollständige Liste finden Sie, indem Sie ein ? eingeben, wodurch ein Hilfebildschirm mit allen verfügbaren Optionen angezeigt wird.

Planerinformationen

E - Ausführungsplan
Bei Eingabe von E wird eine Aufforderung zur Eingabe einer Prozess-ID bereitgestellt, für die ein Erklärungsplan angezeigt werden soll. Dies entspricht der Ausführung von „EXPLAIN ;“ manuell in die Datenbank eintragen.

A - EXPLAIN ANALYZE (UPDATE/DELETE safe)
Durch Eingabe von A wird eine Eingabeaufforderung für eine Prozess-ID angezeigt, für die ein EXPLAIN ANALYZE-Plan angezeigt werden soll. Dies entspricht der Ausführung von „EXPLAIN ANALYZE ;“ manuell in die Datenbank eintragen.

Laden Sie noch heute das Whitepaper PostgreSQL-Verwaltung und -Automatisierung mit ClusterControl herunterErfahren Sie, was Sie wissen müssen, um PostgreSQL bereitzustellen, zu überwachen, zu verwalten und zu skalierenLaden Sie das Whitepaper herunter

Prozessinformationen

Q - Aktuelle Abfrage eines Prozesses anzeigen
Wenn Sie Q eingeben, werden Sie aufgefordert, eine Prozess-ID einzugeben, für die die vollständige Abfrage angezeigt werden soll.

I - Zeigt E/A-Statistiken pro Prozess (nur Linux)
Die Eingabe von I schaltet die Prozessliste auf eine E/A-Anzeige um, die jeden Prozess anzeigt, der auf die Festplatte liest, schreibt usw.

L - Zeigt Sperren an, die von einem Prozess gehalten werden.
Die Eingabe von L liefert eine Aufforderung zur Eingabe einer Prozess-ID, für die gehaltene Sperren angezeigt werden sollen. Dazu gehören die Datenbank, die Tabelle, die Art der Sperre und ob die Sperre gewährt wurde oder nicht. Nützlich beim Untersuchen lang laufender oder wartender Prozesse.

Beziehungsinformationen

R – Benutzertabellenstatistiken anzeigen.
Die Eingabe von R zeigt Tabellenstatistiken, einschließlich sequenzieller Scans, Indexscans, INSERTs, UPDATEs und DELETEs, die alle für die letzte Aktivität relevant sind.

X – Benutzerindexstatistiken anzeigen
Die Eingabe von X zeigt Indexstatistiken, einschließlich Indexscans, Indexlesevorgänge und Indexabrufe, die alle für die letzte Aktivität relevant sind.

Sortierung

Die Sortierung der Anzeige kann nach einem der folgenden Zeichen erfolgen.
M - Sortieren nach Speicherauslastung
N - Sortieren nach PID
P - Sortieren nach CPU-Auslastung
T - Sortieren nach Zeit

Das Folgende sind Einträge, die nach dem Drücken von o angegeben werden, was auch das Sortieren der Index-, Tabellen- und E/A-Statistikseiten ermöglicht.
o - Geben Sie die Sortierreihenfolge an (CPU, Größe, Auflösung, Zeit, Befehl)
Indexstatistiken (idx_scan, idx_tup_fetch, idx_tup_read)
         Tabellenstatistiken (seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, n_tup_ins, n_tup_upd, n_tup_del)
         E/A-Statistiken (pid, rchar, rchar, read, syscw, wchar , schreibt, cwrites, Befehl)

Verbindungs-/Abfragemanipulation

k - Angegebene Prozesse beenden
Die Eingabe von k liefert eine Eingabeaufforderung für einen Prozess oder eine Liste von Datenbankprozessen, die beendet werden sollen.

r - einen Prozess neu erstellen (nur lokale Datenbank, nur root)
Die Eingabe von r liefert eine Eingabeaufforderung für einen netten Wert, gefolgt von einer Liste von Prozessen, die auf diesen neuen netten Wert gesetzt werden sollen. Dadurch ändert sich die Priorität wichtiger Prozesse im System.

Beispiel:„renice 1 7004“

Verschiedene Verwendungen von pg_top

Reaktive Nutzung von pg_top

Die allgemeine Verwendung für pg_top ist der interaktive Modus, der es uns ermöglicht, zu sehen, welche Abfragen auf einem System mit Langsamkeitsproblemen ausgeführt werden, Erklärungspläne für diese Abfragen auszuführen, wichtige Abfragen zu ändern, damit sie schneller abgeschlossen werden, oder alle Abfragen zu beenden, die zu erheblichen Verlangsamungen führen . Im Allgemeinen ermöglicht es dem Datenbankadministrator, viele der Dinge zu tun, die manuell auf dem System erledigt werden können, jedoch schneller und mit einer einzigen Option.

Proaktive Nutzung von pg_top

Obwohl dies nicht allzu üblich ist, kann pg_top im „Batch-Modus“ ausgeführt werden, der die Hauptinformationen anzeigt, die standardmäßig besprochen werden, und dann beendet wird. Dies kann per Skript so festgelegt werden, dass es in bestimmten Intervallen ausgeführt wird, dann an jeden gewünschten benutzerdefinierten Prozess gesendet, analysiert und Warnungen generiert werden, je nachdem, worüber der Administrator möglicherweise benachrichtigt werden möchte. Wenn zum Beispiel die Last des Systems zu hoch wird, wenn der Wert der Transaktionen pro Sekunde höher als erwartet ist, kann ein kreatives Programm alles herausfinden.

Im Allgemeinen gibt es andere Tools zum Sammeln und Berichten über diese Informationen, aber mehr Optionen zu haben ist immer eine gute Sache, und mit mehr verfügbaren Tools können die besten Optionen gefunden werden.

Historische Nutzung von pg_top

Ähnlich wie bei der vorherigen Verwendung, der proaktiven Verwendung, können wir pg_top in einem Stapelmodus skripten, um Momentaufnahmen davon zu protokollieren, wie die Datenbank im Laufe der Zeit aussieht. Dies kann so einfach sein wie das Schreiben in eine Textdatei mit einem Zeitstempel oder das Analysieren und Speichern des Datums in einer relationalen Datenbank, um Berichte zu erstellen. Dies würde es ermöglichen, nach einem größeren Vorfall, wie z. B. einem Datenbankabsturz um 4 Uhr morgens, mehr Informationen zu finden. Je mehr Daten verfügbar sind, desto wahrscheinlicher können Probleme gefunden werden.

Weitere Informationen

Die Dokumentation für das Projekt ist ziemlich begrenzt, und die meisten Informationen sind auf der Linux-Manpage verfügbar, die Sie finden, wenn Sie „man pg_top“ ausführen. Die PostgreSQL-Community kann bei Fragen oder Problemen über die PostgreSQL-Mailinglisten oder den offiziellen IRC-Chatroom auf freenode, Kanalname #postgresql, helfen.