Zum Hauptinhalt springen
Datenbanken & Anwendungen

PostgreSQL-Zustand

Prüfe Erreichbarkeit, Verbindungszeit, aktive Sitzungen und Datenbankgröße eines PostgreSQL-Servers.

Der Check PostgreSQL-Zustand verbindet sich als gewöhnlicher Client mit einem PostgreSQL-Server und meldet, ob die Verbindung klappt, wie lange der Verbindungsaufbau dauert, wie viele Sitzungen gerade aktiv sind und wie groß die verbundene Datenbank ist. Der Check läuft auf dem Agent-Gerät, dem du ihn zuweist, und verbindet sich von dort über TCP mit dem eingetragenen Host. Er läuft unter Windows, Linux und macOS (jeweils x64 und Arm64), standardmäßig alle 5 Minuten. Der Datenbankserver selbst muss kein Agent-Gerät sein; es genügt ein Agent-Gerät, das ihn über das Netzwerk erreicht.

Voraussetzungen

  • Eine Login-Rolle und eine host-Zeile in pg_hba.conf, die diese Rolle von der Adresse des Agent-Geräts aus zulässt. Auch mit dem Host 127.0.0.1 kommt die Verbindung per TCP an, local-Zeilen greifen also nicht.
  • Für eine aussagekräftige Zahl aktiver Sitzungen braucht die Rolle pg_monitor (oder pg_read_all_stats). Ohne sie sieht die Rolle nur den Zustand der eigenen Sitzung, und der Check meldet dauerhaft eine aktive Sitzung.

Wie du die Monitoring-Rolle und den Eintrag in pg_hba.conf anlegst, erfährst du unter Das Monitoring-Konto für Datenbank-Checks einrichten.

Schritte

  1. Gehe zu Geräte und öffne das Gerät.
  2. Klicke auf den Tab Checks → Check hinzufügen → PostgreSQL-Zustand.

Einstellungen

FeldTypErforderlichStandardBeschreibung
HostTextJa—Hostname oder IP-Adresse des PostgreSQL-Servers, aus Sicht des Agent-Geräts
PortGanzzahlNein5432TCP-Port des Servers. Werte außerhalb von 1–65535 ersetzt der Check durch 5432
DatenbankTextNeinpostgresDatenbank, mit der sich der Check verbindet und deren Größe er meldet. Ein leeres Feld wird als postgres behandelt
BenutzernameTextJa—Rolle, mit der sich der Check anmeldet. Verwende eine Rolle mit reinen Leserechten
PasswortTextNein—Passwort der Rolle
SSL-ModusAuswahlNeinPreferPrefer verschlüsselt, wenn der Server es anbietet; Require verlangt eine verschlüsselte Verbindung; Disable verbindet unverschlüsselt
Warnung Verbindungszeit (ms)GanzzahlNein1000Dauer des Verbindungsaufbaus, ab der eine Warnung gemeldet wird
Fehler Verbindungszeit (ms)GanzzahlNein3000Dauer des Verbindungsaufbaus, ab der ein kritisches Ergebnis gemeldet wird

Die beiden Verbindungszeit-Felder stehen im Formular unter Schwellenwerte Verbindungszeit.

Ergebnisse

SituationErgebnis
Verbindung aufgebaut, Verbindungszeit unter Warnung Verbindungszeit (ms)OK
Verbindungszeit mindestens Warnung Verbindungszeit (ms)Warnung
Verbindungszeit mindestens Fehler Verbindungszeit (ms)Kritisch
Anmeldung abgewiesen (Authentifizierung fehlgeschlagen)Kritisch
Server nicht erreichbar, Serverfehler oder ZeitüberschreitungKritisch
Kein Host eingetragenWarnung
Unerwarteter Fehler im CheckFehler

Die Schwellenwerte greifen auch bei Gleichheit. Ist Warnung Verbindungszeit (ms) größer als Fehler Verbindungszeit (ms), vertauscht der Check die beiden Werte vor der Auswertung. Die Anzahl aktiver Sitzungen und die Datenbankgröße werden nur angezeigt und lösen keinen Alarm aus. Verbindungsaufbau und Abfragen haben ein festes Timeout von 10 Sekunden.

Erfasste Metriken

  • Verbunden (ja/nein)
  • Verbindungszeit in Millisekunden
  • Aktive Sitzungen: Backends in pg_stat_activity mit state = 'active', also nur Sitzungen, die gerade eine Anweisung ausführen
  • Größe der verbundenen Datenbank in MB

Hinweise

  • Der Check öffnet bei jedem Lauf eine neue Verbindung und schließt sie danach wieder.
  • Der Host ist Teil der Check-Konfiguration. Weist du den Check über ein Konfigurationspaket vielen Geräten zu, verbindet sich jedes dieser Geräte mit demselben Server. Weise ihn deshalb einem einzelnen Gerät zu, idealerweise dem Datenbankserver selbst.