Zum Inhalt springen

Observability-Metriken

Dieses Dokument beschreibt die Prometheus-Metriken, die von PostgreSQL (via pg_exporter) für den Managed Database Service exportiert werden. Alle Metriken enthalten das Label node_type="primary", da der Dienst mit Patroni für Hochverfügbarkeit konfiguriert ist.

Größe der Datenbank-Datei in Bytes (Typ: Gauge)

Diese Metrik zeigt die aktuelle Größe jeder Datenbank auf dem Server an und ist wichtig für die Kapazitätsplanung und zeigt auf das Wachstum bezogene Trends.

Anzahl der Sperren nach Modus und Datenbank (Typ: Gauge)

Hohe Zahlen an Sperren können auf Konflikte und Performance-Probleme hinweisen. Unter normalen Bedingungen sollten die meisten Sperren bei 0 liegen.

Maximale Anzahl gleichzeitiger Verbindungen zum Datenbankserver (Typ: Gauge)

Das System verwendet bis zu 15 Verbindungen für interne essenzielle Prozesse wie zum Beispiel Backup und Monitoring. Diese Verbindungen werden gegen das max_connections-Limit gezählt. Wenn man sich diesem Limit nähert, sollte Connection-Pooling in Betracht gezogen werden.

Anzahl der Verbindungen, gruppiert nach verschiedenen Attributen (Typ: Gauge)

idle in transaction über längere Zeiträume deutet auf Probleme auf Anwendungsebene hin. Viele idle-Verbindungen zeigt das ineffiziente Verwalten von Verbindungen.

Anzahl der angeforderten Zugriffe auf den Massenspeicher, die bereits im Cache gefunden wurden (Typ: Counter)

Die Cache-Hit-Ratio wird als blks_hit / (blks_hit + blks_read) berechnet. Ziel ist eine Cache-Hit-Ratio von >99 % für eine gute Performance.

Anzahl der Festplattenblöcke, die von der Festplatte gelesen werden mussten (Typ: Counter)

Niedrige Werte im Verhältnis zu blks_hit sind optimal. Hohe Werte weisen auf unzureichende Shared Buffers oder einen kalten Cache hin.

Anzahl der Abfragen, die aufgrund von Konflikten mit der Wiederherstellung abgebrochen wurden (Typ: Counter)

Diese Metrik ist hauptsächlich auf Standby-/Replica-Servern relevant. Ein Wert von 0 ist für primäre Knoten normal.

Gesamtmenge der in temporäre Dateien geschriebenen Daten (in Bytes) (Typ: Counter)

Hohe Werte weisen auf Abfragen hin, die mehr RAM benötigen, als work_mem zulässt. Häufige Nutzung temporärer Dateien sollte durch Erhöhung von work_mem oder Optimierung der Abfragen behoben werden.

Anzahl der durch Abfragen gelöschten Zeilen (Typ: Counter)

Zeigt DELETE-Aktivitäten in der Datenbank an. Hohe Löschraten erfordern regelmäßige VACUUM-Operationen.

Anzahl der durch Abfragen abgerufenen Zeilen (Typ: Counter)

Misst die Anzahl der tatsächlich zurückgegebenen Zeilen. Hohe Werte zeigen eine intensive Leseaktivität.

Anzahl der durch Abfragen eingefügten Zeilen (Typ: Counter)

Zeigt INSERT-Aktivitäten in der Datenbank an.

Anzahl der durch Abfragen aktualisierten Zeilen (Typ: Counter)

Updates erzeugen neue Versionen von Zeilen (MVCC), daher ist VACUUM wichtig. Hohe Update-Raten können zu Tabellen-Bloat führen.

Anzahl der erfolgreich abgeschlossenen Transaktionen (Typ: Counter)

Zeigt die Anzahl der erfolgreichen Transaktionen an. Hohe Werte deuten auf eine intensive Datenbankaktivität hin.

Gibt an, ob der letzte Scrape erfolgreich eine Verbindung zum Server hergestellt hat (Typ: Gauge)

Dies ist die wichtigste Metrik für das Alerting. Wenn der Wert 0 ist, sind alle anderen Metriken nicht verfügbar.

  • Cache-Effizienz überwachen: Das Verhältnis blks_hit / (blks_hit + blks_read) sollte konsistent >99 % sein.
  • Connection-Pooling: Wenn man sich max_connections nähert, sollte eine Connection-Pool-Bibliothek/-Anwendung (z. B. pgBouncer) eingesetzt werden.
  • Nutzung temporärer Dateien: Sollte bei 0 bleiben. Wenn nicht, work_mem erhöhen oder Abfragen optimieren.
  • Sperren-Monitoring: Regelmäßige Sperren können auf Designfehler hinweisen.
  • Idle in transaction: Diese Verbindungen sollten nicht länger als ein paar Sekunden bestehen bleiben.
  • Alle Metriken werden über den pg_exporter bereitgestellt und von Prometheus erfasst.
  • Der Dienst läuft mit Patroni für Hochverfügbarkeit, daher das Label node_type="primary".
  • Die aufgelisteten Metriken bilden die Grundlage für Monitoring und Alerting. Zusätzliche Metriken für Replikation, Background-Writer und WAL-Archivierung können je nach Setup verfügbar sein.