Benutzerdefinierte PostgreSQL-OCI-Monitoringalarme und -Dashboards mit Containerinstanzen erstellen
Einführung
Dieses Tutorial enthält Schritt-für-Schritt-Anweisungen zum Bereitstellen einer benutzerdefinierten Monitoringlösung für PostgreSQL mit einer Docker-basierten Java-Anwendung auf Oracle Cloud Infrastructure (OCI). Wir zeigen, wie Sie benutzerdefinierte Alerts und Dashboards für inaktive Replikations-Slots und Replikationsverzögerungen in OCI mit einem VM-basierten Container erstellen. Während sich das aktuelle Setup auf die Überwachung der PostgreSQL-Replikationsverzögerung und inaktiver Replikationsslots konzentriert, ist das Design flexibel und kann einfach erweitert werden, um zusätzliche Datenbankmetriken zu verfolgen, indem der Anwendungscode geändert wird.
Ziele
-
Stellen Sie eine Docker-basierte Java-Anwendung auf einer virtuellen OCI-Maschine bereit, um PostgreSQL zu überwachen.
-
Erstellen Sie benutzerdefinierte Alarme und Dashboards in OCI für inaktive Replikations-Slots und Replikationsverzögerungen mit der bereitgestellten Überwachungslösung.
Aufgabe 1: Monitoring-Service herunterladen und einrichten
-
Laden Sie die Datei
Postgres-monitoring-services.zip
hier herunter: Postgres-monitoring-services.zip. -
Dekomprimieren Sie die Datei
README.md
, und befolgen Sie die Anweisungen zum Erstellen und Ausführen der Anwendung. -
Docker-Build- und -Deployment-Anweisungen sind im Repository enthalten.
Hinweis: Anweisungen zum Erstellen und Übertragen des Docker-Images sind bereits im
README.md
des Projekt-Repositorys verfügbar.
Aufgabe 2: Dynamische Gruppe erstellen
Mit dynamischen Gruppen kann Ihre Container-VM auf OCI-Services wie OCI Monitoring, OCI Vault und OCI Registry zugreifen, ohne fest codierte Zugangsdaten zu verwenden und ohne Zugangsdaten in Ihrem Image zu speichern.
Verwenden Sie die folgenden Informationen:
- Name: Geben Sie
psql_monitoring_with_container_vm_dg
ein. -
Übereinstimmungsregel:
ALL {resource.type = 'computecontainerinstance', resource.compartment.id = '<your-compartment-id>'}
Hinweis:
compartment.id
ist die Compartment-OCID, in der die Containerinstanz erstellt wird.
Aufgabe 3: Netzwerk (VCN und Servicegateway) konfigurieren
Um eine nahtlose Kommunikation sicherzustellen, platzieren Sie Ihre Container-VM in demselben privaten Subnetz wie Ihr PostgreSQL-Datenbanksystem. Aktivieren Sie den Zugriff auf OCI-Services über ein Servicegateway.
Sicherheitslistenregeln:
Stellen Sie sicher, dass die folgenden Regeln zur Sicherheitsliste des privaten Subnetzes hinzugefügt werden, sofern sie noch nicht vorhanden sind.
Typ | Quell-CIDR | Protokoll | Port | Zweck |
---|---|---|---|---|
Ingress | private-Subnetz-CIDR | TCP | 5.432 | PostgreSQL Zugriff |
Egress | 0.0.0.0/0 | Alle | Alle | Auf OCI-Services zugreifen |
Aufgabe 4: OCI Vault für sicheren Kennwortspeicher verwenden
Verwenden Sie OCI Vault zur sicheren Kennwortspeicherung, um Hardcoding-Datenbankzugangsdaten zu vermeiden.
-
Erstellen Sie einen Vault, und fügen Sie ein Secret mit dem Kennwort PostgreSQL hinzu.
-
Notieren Sie sich die Vault-Secret-OCID.
-
Verwenden Sie das Secret erneut, wenn es bereits vorhanden ist.
Aufgabe 5: Oracle Cloud Infrastructure Identity and Access Management-Policys definieren
Anhängen dieser OCI IAM-Policys.
Allow dynamic-group psql_monitoring_with_container_vm_dg to read vaults in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read secret-bundles in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to use metrics in compartment <your-compartment-id>
Allow dynamic-group psql_monitoring_with_container_vm_dg to read repos in compartment <your-tenancy-id>
Aufgabe 6: Containerinstanzen starten
Navigieren Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservices, Containerartefakt, Containerinstanzen und Instanz erstellen, und geben Sie die folgenden Informationen ein:
- VCN/Subnetz: Wählen Sie dasselbe aus wie das Datenbanksystem.
- Ausprägung: Wählen Sie 1 OCPU, 4 GB aus.
- Docker-Image: Wählen Sie Von OCIR aus.
-
Umgebungsvariablen:
DB_PASSWORD_VAULT_ID=<your-vault-secret-ocid> DB_SYSTEM_ID=<your-db-system-ocid> DB_PE=<your-db-system-private-endpoint-FQDN> DB_PSQL_USER=<your-db-user> METRIC_COMPARTMENT_ID=<your-compartment-id> METRIC_NAMESPACE=postgres_monitor_with_container_vm REPLICATION_LAG_METRIC_NAME=replication_lag_metric INACTIVE_SLOTS_METRIC_NAME=inactive_slot_metric MONITOR_INTERVAL_SEC=60
Hinweis: Der Zugriff wird ohne Zugangsdaten über die dynamische OCI IAM-Gruppe erteilt.
Aufgabe 7: Logs in der OCI-Konsole prüfen
Navigieren Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservices, Containerartefakt und Containerinstanzen, wählen Sie Ihre Instanz aus, und klicken Sie auf die Registerkarte Container, um Logs und Laufzeitstatus zu prüfen.
Aufgabe 8: Metriken im Metrik-Explorer anzeigen
Navigieren Sie zur OCI-Konsole, navigieren Sie zu Observability and Management, Metrik-Explorer, und geben Sie die folgenden Informationen ein:
- Namespace: Geben Sie
postgres_monitor_with_container_vm
ein. - Metriken: Wählen Sie
replication_lag_metric
undinactive_slot_metric
aus. - Filter: Geben Sie
DBSystemId = "<your-db-system-ocid>"
ein.
Beispielabfrage:
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.mean()
Aufgabe 9: OCI Notifications-Thema und -Abonnements einrichten
-
Navigieren Sie zur OCI-Konsole, navigieren Sie zu Anwendungsintegration, und klicken Sie auf Benachrichtigungen.
-
Erstellen Sie ein Thema. Beispiel:
PostgresCustomMonitoringAlerts
. -
Fügen Sie Abonnements hinzu (E-Mail, Webhook usw.).
-
Verknüpfen Sie dieses Thema mit Ihren Alarmen für Echtzeit-Alerts.
Aufgabe 10: OCI-Monitoringalarme für Schlüsselmetriken konfigurieren
-
Replikationsverzögerungsalarm
replication_lag_metric[1m]{DBSystemId = "<your-db-system-ocid>"}.max()
- Trigger: Geben Sie > 1.000.000 (1 MB) ein.
- Verzögerung: Geben Sie 5 Minuten ein.
- Schweregrad: Wählen Sie Kritisch aus.
-
Alarm für inaktive Replikationseinschubfächer
inactive_slot_metric[1h]{DBSystemId = "<your-db-system-ocid>"}.max()
- Trigger: Geben Sie > 1 ein.
- Verzögerung: Geben Sie 2 Stunden ein.
- Schweregrad: Wählen Sie Warnung aus.
-
Fehlender Datenalarm
- Metrik: Wählen Sie
replication_lag_metric
aus. - Trigger: Geben Sie 10 Minuten lang keine Daten ein.
- Schweregrad: Wählen Sie Fehler aus.
- Metrik: Wählen Sie
Aufgabe 11: Benutzerdefiniertes Dashboard erstellen
-
Navigieren Sie zur OCI-Konsole, navigieren Sie zu Observability and Management, und klicken Sie auf Dashboards.
-
Klicken Sie auf Neues Dashboard.
-
Fügen Sie Widgets mit Metrikdiagramm oder Query Builder hinzu.
-
Geben Sie folgende Informationen ein.
- Namespace: Geben Sie
postgres_monitor_with_container_vm
ein. - Metriken: Wählen Sie
replication_lag_metric
undinactive_slot_metric
aus.
- Namespace: Geben Sie
-
Diagrammtypen, Filter und Zeitraum anpassen.
Summentabelle
Komponente | Zweck |
---|---|
Dynamische Gruppe | Erteilt OCI-Zugriff auf Container-VM |
OCI Vault | Sichere Speicherung von Datenbankzugangsdaten |
OCI Registry | Host-Docker-Image-Repository |
Monitoring-Agent | Erfasst benutzerdefinierte PostgreSQL-Metriken |
Alarm | Alerts bei Verzögerung, Einschubfächern, fehlende Daten |
Container-VM | Führt das Java-basierte Überwachungstool aus |
Dashboard | Visualisiert Metriken in Echtzeit |
Serverlose und robuste Architektur – Highlights
-
Serverlose Architektur:
- Wird mit Container-VM bereitgestellt, muss die Infrastruktur nicht manuell verwaltet werden.
- OCI verarbeitet VM-Provisioning und -Recovery bei Ausfällen auf Hostebene
Vorteil: Reduziert den Betriebsaufwand und verbessert die Fehlertoleranz.
-
Automatischer Containerneustart:
- Container werden mit einer Standard-Neustartrichtlinie festgelegt.
- Wenn die Anwendung abstürzt oder unerwartet beendet wird, wird sie automatisch neu gestartet.
Vorteil: Gewährleistet hohe Verfügbarkeit und minimiert Ausfallzeiten.
-
Metrikbasierte Alarmierung:
- Ein dedizierter Alarm wird so konfiguriert, dass er ausgelöst wird, wenn erwartete Metriken fehlen.
Vorteil: fungiert als ausfallsicher, um automatische Ausfälle zu erkennen und frühe Alerts zu aktivieren.
Fehlerbehebung und Probleme
-
Konnektivitätsprobleme:
- Stellen Sie sicher, dass Port
5432
in der Sicherheitsliste des Subnetzes geöffnet ist. - Bestätigen Sie, dass das Servicegateway für den privaten Zugriff angehängt ist.
- Stellen Sie sicher, dass Port
-
OCI IAM-Berechtigungsfehler:
- Prüfen Sie, ob die dynamische Gruppe mit dem richtigen Compartment übereinstimmt.
- Stellen Sie sicher, dass die erforderlichen Policys vorhanden sind.
-
Einrichtungsfehler:
- Umgebungsvariablen validieren
- Prüfen Sie Secret- und Metrik-OCIDs.
- Verwenden Sie Logs, um Laufzeitfehler zu verfolgen.
Verwandte Links
Bestätigungen
- Autoren - Arvind Yadav, Kanaram Bhari (Software Engineer - OCI Database with PostgreSQL)
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Create PostgreSQL Custom OCI Monitoring Alarms and Dashboard using Container Instances
G37657-01
Copyright ©2025, Oracle and/or its affiliates.