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

PostgreSQL-Datenbanküberwachung:Tipps zur Überwachung

Sobald Sie Ihre Datenbankinfrastruktur zum Laufen gebracht haben, müssen Sie die Vorgänge im Auge behalten. Die Überwachung ist ein Muss, wenn Sie sicher sein möchten, dass alles in Ordnung ist, oder wenn Sie möglicherweise etwas ändern müssen.

Für jede Datenbanktechnologie gibt es mehrere Dinge zu überwachen. Einige davon sind spezifisch für die Datenbank-Engine oder den Anbieter oder sogar für die spezifische Version, die Sie verwenden.

In diesem Blog werfen wir einen Blick darauf, was Sie in einer PostgreSQL-Umgebung überwachen müssen.

Was in PostgreSQL überwacht werden soll

Bei der Überwachung eines Datenbank-Clusters oder -Knotens müssen zwei Dinge berücksichtigt werden:das Betriebssystem und die Datenbank selbst. Sie müssen definieren, welche Metriken Sie von beiden Seiten überwachen und wie Sie dies tun werden. Sie müssen die Metrik immer im Kontext Ihres Systems überwachen und nach Änderungen am Verhaltensmuster suchen.

In den meisten Fällen müssen Sie mehrere Tools verwenden (da es fast unmöglich ist, eines zu finden, das alle gewünschten Messwerte abdeckt.) 

Beachten Sie, dass eine Beeinträchtigung einer Ihrer Metriken auch andere betreffen kann, wodurch die Fehlerbehebung des Problems komplexer wird. Ein gutes Überwachungs- und Warnsystem ist wichtig, um diese Aufgabe so einfach wie möglich zu gestalten.

Betriebssystemüberwachung

Eine wichtige Sache (die allen Datenbank-Engines gemeinsam ist und sogar allen systems) besteht darin, das Verhalten des Betriebssystems zu überwachen. Hier sind einige Punkte, die Sie hier überprüfen sollten.

CPU-Nutzung

Ein übermäßiger Prozentsatz der CPU-Auslastung könnte ein Problem darstellen, wenn es sich nicht um das übliche Verhalten handelt. In diesem Fall ist es wichtig, den Prozess/die Prozesse zu identifizieren, die dieses Problem verursachen. Wenn das Problem der Datenbankprozess ist, müssen Sie überprüfen, was in der Datenbank vor sich geht.

RAM-Speicher oder SWAP-Nutzung

Wenn Sie einen hohen Wert für diese Metrik sehen und sich an Ihrem System nichts geändert hat, müssen Sie wahrscheinlich Ihre Datenbankkonfiguration überprüfen. Parameter wie shared_buffers und work_mem können dies direkt beeinflussen, da sie die Speichermenge definieren, die für die PostgreSQL-Datenbank verwendet werden kann.

Festplattennutzung

Eine ungewöhnliche Erhöhung der Nutzung von Festplattenspeicher oder ein übermäßiger Verbrauch des Festplattenzugriffs sind wichtige Dinge, die überwacht werden müssen, da möglicherweise eine große Anzahl von Fehlern in der PostgreSQL-Protokolldatei oder eine fehlerhafte Cache-Konfiguration protokolliert werden Generieren Sie einen erheblichen Plattenzugriffsverbrauch, anstatt Speicher zum Verarbeiten der Abfragen zu verwenden.

Ladungsdurchschnitt

Es hängt mit den drei oben genannten Punkten zusammen. Ein hoher Lastdurchschnitt könnte durch eine übermäßige CPU-, RAM- oder Festplattennutzung erzeugt werden.

Netzwerk

Ein Netzwerkproblem kann alle Systeme betreffen, da die Anwendung keine Verbindung zur Datenbank herstellen kann (oder verlorene Pakete verbinden kann), daher ist dies eine wichtige Metrik, die es zu überwachen gilt. Sie können Latenz oder Paketverlust überwachen, und das Hauptproblem könnte eine Netzwerksättigung, ein Hardwareproblem oder einfach nur eine schlechte Netzwerkkonfiguration sein.

PostgreSQL-Datenbanküberwachung

Die Überwachung Ihrer PostgreSQL-Datenbank ist nicht nur wichtig, um zu sehen, ob Sie ein Problem haben, sondern auch um zu wissen, ob Sie etwas ändern müssen, um Ihre Datenbankleistung zu verbessern, das ist wahrscheinlich eines der wichtigsten Dinge, die in einer Datenbank überwacht werden sollen. Sehen wir uns einige Metriken an, die dafür wichtig sind.

Anfrageüberwachung

Standardmäßig ist PostgreSQL im Hinblick auf Kompatibilität und Stabilität konfiguriert, daher müssen Sie Ihre Abfragen und sein Muster kennen und Ihre Datenbanken je nach vorhandenem Datenverkehr konfigurieren. Hier können Sie mit dem EXPLAIN-Befehl den Abfrageplan für eine bestimmte Abfrage überprüfen, und Sie können auch die Anzahl von SELECT, INSERT, UPDATE oder DELETEs auf jedem Knoten überwachen. Wenn Sie eine lange Abfrage haben oder viele Abfragen gleichzeitig ausgeführt werden, kann dies ein Problem für alle Systeme darstellen.

Aktive Sitzungen überwachen

Sie sollten auch die Anzahl der aktiven Sitzungen überwachen. Wenn Sie sich dem Limit nähern, müssen Sie überprüfen, ob etwas nicht stimmt oder ob Sie nur den Wert max_connections erhöhen müssen. Der Unterschied in der Anzahl kann eine Zunahme oder Abnahme der Verbindungen sein. Schlechte Nutzung des Verbindungspools, Sperren oder Netzwerkprobleme sind die häufigsten Probleme im Zusammenhang mit der Anzahl der Verbindungen.

Datenbanksperren

Wenn Sie eine Abfrage haben, die auf eine andere Abfrage wartet, müssen Sie überprüfen, ob diese andere Abfrage ein normaler Prozess oder etwas Neues ist. In einigen Fällen, wenn beispielsweise jemand eine Aktualisierung an einer großen Tabelle vornimmt, kann diese Aktion das normale Verhalten Ihrer Datenbank beeinträchtigen und eine große Anzahl von Sperren erzeugen.

Replikation überwachen

Die Schlüsselmetriken, die für die Replikation überwacht werden müssen, sind die Verzögerung und der Replikationsstatus. Die häufigsten Probleme sind Netzwerkprobleme, Hardwareressourcenprobleme oder Unterdimensionierungsprobleme. Wenn Sie mit einem Replikationsproblem konfrontiert sind, müssen Sie dies so schnell wie möglich wissen, da Sie es beheben müssen, um die Hochverfügbarkeitsumgebung sicherzustellen.

Überwachung von Backups

Das Vermeiden von Datenverlust ist eine der grundlegenden DBA-Aufgaben, daher müssen Sie nicht nur das Backup erstellen, Sie sollten auch wissen, ob das Backup abgeschlossen und verwendbar ist. Normalerweise wird dieser letzte Punkt nicht berücksichtigt, aber es ist wahrscheinlich der wichtigste Check in einem Backup-Prozess.

Datenbankprotokolle überwachen

Sie sollten Ihr Datenbankprotokoll auf Fehler wie FATAL oder Deadlock oder sogar auf häufige Fehler wie Authentifizierungsprobleme oder lang andauernde Abfragen überwachen. Die meisten Fehler werden in die Protokolldatei mit detaillierten nützlichen Informationen zur Behebung geschrieben.

Einfluss der Überwachung auf die Leistung der PostgreSQL-Datenbank

Während Überwachung ein Muss ist, ist sie normalerweise nicht kostenlos. Abhängig davon, wie viel Sie überwachen, entstehen immer Kosten für die Datenbankleistung. Daher sollten Sie es vermeiden, Dinge zu überwachen, die Sie nicht verwenden werden.

Im Allgemeinen gibt es zwei Möglichkeiten, Ihre Datenbanken zu überwachen, aus den Protokollen oder von der Datenbankseite durch Abfragen.

Im Fall von Protokollen benötigen Sie, um sie verwenden zu können, ein hohes Protokollierungsniveau, das einen hohen Festplattenzugriff erzeugt und die Leistung Ihrer Datenbank beeinträchtigen kann.

Für den Abfragemodus verbraucht jede Verbindung zur Datenbank Ressourcen, daher kann dies je nach Aktivität Ihrer Datenbank und den zugewiesenen Ressourcen auch die Leistung beeinträchtigen.

PostgreSQL-Überwachungstools

Es gibt mehrere Tool-Optionen zur Überwachung Ihrer Datenbank. Es kann sich um ein integriertes PostgreSQL-Tool wie Erweiterungen oder um ein externes Tool handeln. Sehen wir uns einige Beispiele dieser Tools an.

Erweiterungen

  • Pg_stat_statements :Diese Erweiterung hilft Ihnen, das Abfrageprofil Ihrer Datenbank zu kennen. Es verfolgt alle ausgeführten Abfragen und speichert viele nützliche Informationen in einer Tabelle namens pg_stat_statements. Durch Abfragen dieser Tabelle können Sie neben anderen Informationen erfahren, welche Abfragen im System ausgeführt werden, wie oft sie ausgeführt wurden und wie viel Zeit sie verbraucht haben.
  • Pgbadger :Es handelt sich um eine Software, die eine Analyse von PostgreSQL-Protokollen durchführt und diese in einer HTML-Datei anzeigt. Es hilft Ihnen, das Verhalten Ihrer Datenbank zu verstehen und zu identifizieren, welche Abfragen optimiert werden müssen.
  • Pgstattuple :Es kann Statistiken für Tabellen und Indizes erstellen, die zeigen, wie viel Speicherplatz von jeder Tabelle und jedem Index verwendet wird, von aktiven Tupeln, gelöschten Tupeln verbraucht wird oder wie viel ungenutzter Speicherplatz in jeder Beziehung verfügbar ist.
  • Pg_buffercache :Damit können Sie in Echtzeit überprüfen, was im Shared Buffer Cache passiert, und anzeigen, wie viele Seiten derzeit im Cache gespeichert sind.

Externe Überwachungstools

  • ClusterControl :Es handelt sich um ein Verwaltungs- und Überwachungssystem, mit dem Sie Ihre Datenbanken über eine benutzerfreundliche Oberfläche bereitstellen, verwalten, überwachen und skalieren können. ClusterControl unterstützt die besten Open-Source-Datenbanktechnologien und Sie können viele der Datenbankaufgaben automatisieren, die Sie regelmäßig durchführen müssen, wie z. B. das Hinzufügen und Skalieren neuer Knoten, das Ausführen von Sicherungen und Wiederherstellungen und mehr.
  • Nagios :Es ist eine Open-Source-System- und Netzwerküberwachungsanwendung. Es überwacht Hosts oder Dienste und verwaltet Warnungen für verschiedene Zustände. Mit diesem Tool können Sie Netzwerkdienste, Hostressourcen und mehr überwachen. Zur Überwachung von PostgreSQL können Sie ein Plugin verwenden oder Ihr eigenes Skript erstellen, um Ihre Datenbank zu überprüfen.
  • Zabbix :Es ist eine Software, die sowohl Netzwerke als auch Server überwachen kann. Es verwendet einen flexiblen Benachrichtigungsmechanismus, der es Benutzern ermöglicht, Benachrichtigungen per E-Mail zu konfigurieren. Es bietet auch Berichte und Datenvisualisierung basierend auf den gespeicherten Daten. Alle Zabbix-Berichte und -Statistiken sowie Konfigurationsparameter werden über eine Webschnittstelle aufgerufen.

Dashboards

Sichtbarkeit ist nützlich für die schnelle Erkennung von Problemen. Es ist definitiv eine zeitaufwändigere Aufgabe, eine Befehlsausgabe zu lesen, als nur eine Grafik anzusehen. Die Verwendung eines Dashboards könnte also den Unterschied zwischen der Erkennung eines Problems jetzt oder in den nächsten 15 Minuten ausmachen, wobei die meisten sicher sind, dass Zeit für das Unternehmen wirklich wichtig sein könnte. Für diese Aufgabe könnten unter anderem Tools wie PMM oder Vividcortex der Schlüssel sein, um Ihr Datenbanküberwachungssystem transparenter zu machen.

Percona-Überwachung und -Management (PMM): Es ist eine Open-Source-Plattform zur Verwaltung und Überwachung Ihrer Datenbankleistung. Es bietet gründliche zeitbasierte Analysen für MySQL-, MariaDB-, MongoDB- und PostgreSQL-Server, um sicherzustellen, dass Ihre Daten so effizient wie möglich funktionieren.

VividCortex: Es handelt sich um eine in der Cloud gehostete Plattform, die eine umfassende Überwachung der Datenbankleistung bietet. Es bietet vollständigen Einblick in führende Open-Source-Datenbanken, einschließlich MySQL, PostgreSQL, AWS Aurora, MongoDB und Redis.

Warnung

Ein System nur zu überwachen, macht keinen Sinn, wenn Sie nicht zu jedem Problem eine Benachrichtigung erhalten. Ohne ein Warnsystem sollten Sie zum Überwachungstool gehen, um zu sehen, ob alles in Ordnung ist, und es könnte möglich sein, dass Sie seit vielen Stunden ein großes Problem haben. Diese Benachrichtigungsaufgabe kann mithilfe von E-Mail-Benachrichtigungen, Textbenachrichtigungen oder anderen Tool-Integrationen wie Slack ausgeführt werden.

Es ist wirklich schwierig, einige Tools zu finden, um alle notwendigen Metriken für PostgreSQL zu überwachen, im Allgemeinen müssen Sie mehr als eines verwenden und es müssen sogar einige Skripte erstellt werden. Eine Möglichkeit, die Überwachungs- und Alarmierungsaufgabe zu zentralisieren, ist die Verwendung von ClusterControl, das Ihnen Funktionen wie Sicherungsverwaltung, Überwachung und Alarmierung, Bereitstellung und Skalierung, automatische Wiederherstellung und weitere wichtige Funktionen bietet, die Sie bei der Verwaltung Ihrer Datenbanken unterstützen. Alle diese Funktionen auf demselben System.

Überwachung Ihrer PostgreSQL-Datenbank mit ClusterControl

ClusterControl ermöglicht es Ihnen, Ihre Server in Echtzeit zu überwachen. Es verfügt über einen vordefinierten Satz von Dashboards für Sie, um einige der häufigsten Metriken zu analysieren.

Es ermöglicht Ihnen, die im Cluster verfügbaren Diagramme anzupassen, und das können Sie Aktivieren Sie die agentenbasierte Überwachung, um detailliertere Dashboards zu erstellen.

Sie können auch Benachrichtigungen erstellen, die Sie über Ereignisse in Ihrem Cluster informieren, oder mit verschiedenen Diensten wie PagerDuty oder Slack integrieren.

Sie können auch den Abschnitt zur Abfrageüberwachung überprüfen, in dem Sie die Top-Abfragen, die laufenden Abfragen, Abfrageausreißer und die Abfragestatistiken.

Mit diesen Funktionen können Sie sehen, wie Ihre PostgreSQL-Datenbank läuft.

ClusterControl zentralisiert das Backup-Management, um Ihre Daten zu schützen, zu sichern und wiederherzustellen, und mit der Verifizierungs-Backup-Funktion können Sie bestätigen, ob das Backup in Ordnung ist.

Dieser Überprüfungssicherungsjob stellt die Sicherung auf einem separaten eigenständigen Host wieder her, also Sie können sich vergewissern, dass die Sicherung funktioniert.

Überwachung mit der ClusterControl-Befehlszeile

Für Skripterstellung und Automatisierung von Aufgaben oder auch wenn Sie einfach die Befehlszeile bevorzugen, verfügt ClusterControl über das s9s-Tool. Es ist ein Befehlszeilentool zum Verwalten Ihres Datenbank-Clusters.

Cluster-Liste

Knotenliste

Sie können alle Aufgaben (und noch mehr) über die ClusterControl-Benutzeroberfläche ausführen , und Sie können diese Funktion in einige externe Tools wie Slack integrieren, um sie von dort aus zu verwalten.

Fazit

In diesem Blog haben wir einige wichtige Metriken erwähnt, die Sie in Ihrer PostgreSQL-Umgebung überwachen sollten, sowie einige Tools, die Ihnen das Leben erleichtern, indem Sie Ihre Systeme unter Kontrolle haben. Sie können auch sehen, wie Sie ClusterControl für diese Aufgabe verwenden.

Wie Sie sehen können, ist Überwachung absolut notwendig, und die beste Vorgehensweise hängt von der Infrastruktur und dem System selbst ab. Sie sollten ein Gleichgewicht finden zwischen dem, was Sie überwachen müssen, und den Auswirkungen auf die Leistung Ihrer Datenbank.