Einführung
In diesem Tutorial lernen Sie, wie Sie aggregierte Metriken für eine auf DigitalOcean verwaltete PostgreSQL-Datenbank mithilfe einer auf der DigitalOcean App Platform bereitgestellten Webanwendung erfassen.
Für diese Demonstration verwenden Sie eine Beispiel-Node.js-Anwendung und verbinden diese mit der Managed DigitalOcean PostgreSQL-Datenbank, die Sie in diesem Tutorial erstellen werden.
Am Ende dieses Tutorials verfügen Sie über ein Prometheus-Dashboard, das Metriken aus einer verwalteten PostgreSQL-Datenbank abruft und anzeigt, die mit einer App Platform-Webanwendung verbunden ist.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
- Ein DigitalOcean-Konto.
- Eine Beispielanwendung von Node.js, die auf der App-Plattform bereitgestellt wurde.
- Die Postgres-Datenbank wurde bereitgestellt und mit der App-Plattform-Anwendung verbunden.
- Ein persönliches Zugriffstoken mit Lese- und Schreibrechten (rw). In dieser Anleitung erfahren Sie, wie Sie ein persönliches Zugriffstoken erstellen.
Schritt 1 – Einrichten einer verwalteten PostgreSQL-Datenbank
Beginnen wir mit der Erstellung einer PostgreSQL-Datenbank.
Gehen Sie im DigitalOcean Cloud-Kontrollpanel zum Bereich „Datenbanken“.
Klicken Sie auf “Datenbankcluster erstellen” und wählen Sie PostgreSQL aus. Sie müssen eine Rechenzentrumsregion und ein VPC-Netzwerk auswählen, wie in der folgenden Abbildung dargestellt:
Wählen Sie anschließend PostgreSQL als Datenbank aus und legen Sie weitere Einstellungen für Ihre Datenbank fest.
Konfigurieren Sie die Datenbankeinstellungen, folgen Sie den Anweisungen auf dem Bildschirm und klicken Sie auf „Datenbankcluster erstellen“.
Sobald der verwaltete PostgreSQL-Datenbankcluster erstellt ist, können Sie sich in den folgenden Registerkarten einen Überblick über die Übersicht, die Analysen, die Berichte sowie die Einstellungen verschaffen:
Schritt 2 – Bereitstellung einer Node.js-Webanwendungsinstanz auf der Anwendungsplattform
Sie können die Schritte zum Bereitstellen einer Beispiel-Node.js-App befolgen oder dieses GitHub-Repository verwenden, um eine Beispiel-Node.js-App auf der App-Plattform zu erstellen.
Wenn Sie die zweite Option nutzen, müssen Sie dieses GitHub-Repository in Ihr GitHub-Konto forken, um eine Kopie in der Cloud zu speichern. Klicken Sie dazu auf die Schaltfläche „Fork“ im GitHub-Repository und folgen Sie den Anweisungen auf dem Bildschirm.
Melden Sie sich nun im DigitalOcean Cloud-Portal an und navigieren Sie zu „App erstellen“ -> „App-Plattform“.
Wählen Sie anschließend unter «Andere: Beispiel-App auswählen» die Node.js-Beispiel-App aus dem Dropdown-Menü „Beispiel-App“ aus und klicken Sie auf „Weiter“.
Folgen Sie den Anweisungen auf dem Bildschirm, um die Anwendungsressourcen, die allgemeine Konfiguration und die Umgebungsvariablen einzurichten, und klicken Sie auf „Weiter“. Überprüfen Sie anschließend die allgemeine Anwendungskonfiguration. Klicken Sie dann auf „Ressourcen erstellen“. Nach der Erstellung der Anwendung dauert es einige Zeit, bis sie auf der Anwendungsplattform bereitgestellt wird.
Sobald die Anwendung bereitgestellt und erstellt ist, können Sie sich die Anwendungsübersicht ansehen und die bereitgestellte Anwendung in Ihrem Browser aufrufen.
Schritt 3 – Verbinden Sie die PostgreSQL-Datenbank mit der App-Plattform
In diesem Schritt verbinden Sie die in Schritt 1 dieses Tutorials erstellte verwaltete PostgreSQL-Datenbank mit der in Schritt 2 erstellten Node.js-Beispielanwendung.
Gehen Sie zu Ihrer bereitgestellten App-Plattform-App, klicken Sie auf die Schaltfläche «Erstellen» im Dashboard Ihrer bereitgestellten App und klicken Sie auf „Datenbank erstellen/anhängen“:
Wählen Sie anschließend «Zuvor erstellte DigitalOcean-Datenbank» aus, wählen Sie den kürzlich bereitgestellten PostgreSQL-Managed-Database-Cluster aus und klicken Sie unten auf die Schaltfläche «Datenbank anhängen».
Im Abschnitt „Datenbankübersicht“ können Sie überprüfen, ob die App Platform-App erfolgreich als vertrauenswürdige Quelle hinzugefügt wurde.
Schritt 4 – Abrufen von auswertbaren Metriken vom /metrics-Endpunkt
Über den Endpunkt „/metrics“ können Sie programmatisch Metriken für Ihren Datenbankcluster anzeigen. Dieser Endpunkt umfasst mehr als zwanzigmal so viele Metriken wie die Registerkarte „Einblicke“ in der Systemsteuerung.
Sie können mit dem curl-Befehl auf den Metrik-Endpunkt zugreifen oder Postman verwenden, um diese Metriken in einem Überwachungssystem wie Prometheus zu visualisieren.
Gehen Sie zunächst im DigitalOcean-Kontrollpanel zum API-Bereich und erstellen Sie ein neues persönliches Zugriffstoken. Klicken Sie anschließend auf „Token mit vollem Zugriff generieren“. Notieren Sie sich das Zugriffstoken, da Sie es in den folgenden Schritten benötigen.
In diesem Beispiel verwenden Sie Postman, um alle HTTP-Anfragen auszuführen. Alternativ können Sie curl-Befehle von Ihrer App-Plattform-Instanz ausführen, um Antworten auf API-Anfragen zu erhalten.
Ermitteln Sie Hostname und Port.
Als Erstes müssen Sie den Hostnamen Ihrer Clustermetriken abrufen, indem Sie eine GET-Anfrage an https://api.digitalocean.com/v2/databases/{UUID} senden.
Führen Sie den folgenden curl-Befehl in Ihrer App Platform-Instanz aus. Gehen Sie dazu in den Konsolenbereich:
Verwenden Sie den folgenden Befehl, um den Hostnamen und die Datenbankzugangsdaten zu erhalten.
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl --silent -XGET --location 'https://api.digitalocean.com/v2/databases/{UUID}' --header 'Content-Type: application/json' --header "Authorization: Bearer $RO_DIGITALOCEAN_TOKEN"Bitte ersetzen Sie {UUID} und $RO_DIGITALOCEAN_TOKEN durch die UUID Ihrer verwalteten PostgreSQL-Datenbank und Ihr persönliches Zugangspasswort.
Dieser Befehl sollte eine Ausgabe mit Details zum verwalteten PostgreSQL-Datenbankcluster liefern:
Output
"database": {
"id": "192a6077-d103-4e72-bd2c-e370fd6b5608",
"name": "db-postgresql-nyc3-66505",
"engine": "pg",
"version": "16",
"semantic_version": "16.3",
"connection": {
"protocol": "postgresql",
"uri": "postgresql://doadmin:AVNS_uVoGq5jCPdaxW3hghhV@db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "AVNS_uVoGq5jCPdaxW3hghhV",
"ssl": true
},
"private_connection": {
"protocol": "postgresql",
"uri": "postgresql://doadmin:AVNS_uVoGq5jCPdaxW3hghhV@private-db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com:25060/defaultdb?sslmode=require",
"database": "defaultdb",
"host": "private-db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 25060,
"user": "doadmin",
"password": "AVNS_uVoGq5jCPdaxW3hghhV",
"ssl": true
},
"metrics_endpoints": [
{
"host": "db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com",
"port": 9273
}
],
"users": [
{
"name": "doadmin",
"role": "primary",
"password": "XXXXXXXXXXX"
}
],
"db_names": [
"defaultdb"
],
"num_nodes": 1,
"region": "nyc3",
"status": "online",
"created_at": "2024-06-10T21:04:32Z",
"maintenance_window": {
"day": "monday",
"hour": "00:07:46",
"pending": false
},
"size": "db-s-1vcpu-1gb",
"tags": [
"testtestnn"
],
"private_network_uuid": "xxxxxxxxxx",
"project_id": "xxxxxxxxxxx",
"read_only": false,
"version_end_of_life": "2028-11-09T00:00:00Z",
"version_end_of_availability": "2028-05-09T00:00:00Z",
"storage_size_mib": 10240
}
}Beachten Sie bitte in der obigen Ausgabe das Host-Port-Paar. In unserem Fall lautet der Host db-postgresql-nyc3-66505-do-user-13729304-0.c.db.ondigitalocean.com und der Port 9273.
Wenn Sie außerdem Postman auf Ihrem System installiert und die IP-Adresse Ihres Systems als vertrauenswürdige Quelle in den Einstellungen für vertrauenswürdige Quellen der Datenbank hinzugefügt haben, können Sie die obige HTTP-GET-Anfrage in Postman ausführen.
Fügen Sie einfach die URL https://api.digitalocean.com/v2/databases/{UUID} hinzu und ersetzen Sie Ihren persönlichen Zugangscode unter der Registerkarte Autorisierung durch den als Bearer-Token ausgewählten Verifizierungstyp.
Validierung der Clustermetriken
Als Nächstes benötigen Sie Ihre Cluster-Metrik-Zugangsdaten. Diese können Sie abrufen, indem Sie eine GET-Anfrage mit einem Administrator- oder Schreibtoken an https://api.digitalocean.com/v2/databases/metrics/credentials senden.
Verwenden Sie den folgenden curl-Befehl aus der Beispielanwendung der App-Plattform:
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl --silent -XGET --location 'https://api.digitalocean.com/v2/databases/metrics/credentials' --header 'Content-Type: application/json' --header "Authorization: Bearer xxxxxxxxxxxxxxxxx"Es sollte Ihnen Zugangsdaten für die Clustermetriken mit Benutzername und Passwort liefern.
Output{
"credentials": {
"basic_auth_username": "prom2prh",
"basic_auth_password": "xxxxxxxxxxxxx"
}
}Greifen Sie auf den Endpunkt /metrics zu.
Um mit cURL auf den Endpunkt zuzugreifen, senden Sie eine GET-Anfrage an https://$HOST:9273/metrics und ersetzen Sie die Variablen Hostname, Benutzername und Passwort durch die Anmeldeinformationen, die Sie in den vorherigen Schritten ermittelt haben:
apps@sample-nodejs-775ff7ff6f-db5gk:~$ curl -XGET -k -u $USERNAME:$PASSWORD https://$HOST:9273/metricsEs sollte Ihnen eine Menge Metadaten liefern, wie beispielsweise die folgenden:
Output...
1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0.7
# HELP system_n_cpus Telegraf collected metric
# TYPE system_n_cpus gauge
system_n_cpus{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 1
# HELP system_n_unique_users Telegraf collected metric
# TYPE system_n_unique_users gauge
system_n_unique_users{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0
# HELP system_n_users Telegraf collected metric
# TYPE system_n_users gauge
system_n_users{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 0
# HELP system_uptime Telegraf collected metric
# TYPE system_uptime counter
system_uptime{cloud="custom-digitalocean-do-nyc3",host="db-postgresql-nyc3-66505-1",project="do-user-13729304-0",service="db-postgresql-nyc3-66505",service_type="pg"} 640073
...Schritt 5 – Metriken mit Prometheus visualisieren
Um mit Prometheus auf den Endpunkt zuzugreifen, kopieren Sie die folgende Konfiguration in eine prometheus.yml-Datei und ersetzen Sie dabei Hostname, Benutzername, Passwort und Pfad zum CA-Zertifikat. Dadurch wird Prometheus so konfiguriert, dass alle erforderlichen Anmeldeinformationen für den Zugriff auf den Endpunkt verwendet werden:
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'dbaas_cluster_metrics_svc_discovery'
scheme: https
tls_config:
ca_file: /path/to/ca.crt
dns_sd_configs:
- names:
- $TARGET_ADDRESS
type: 'A'
port: 9273
refresh_interval: 15s
metrics_path: '/metrics'
basic_auth:
username: $BASIC_AUTH_USERNAME
password: $BASIC_AUTH_PASSWORDBitte ersetzen Sie $TARGET_ADDRESS, $BASIC_AUTH_USERNAME und $BASIC_AUTH_PASSWORD durch den Hostnamen, den Benutzernamen und das Passwort, die Sie in den oben beschriebenen Schritten erhalten haben.
Kopieren Sie anschließend das folgende Verbindungsskript in eine Datei namens up.sh. Dieses Skript führt envsubst aus und startet einen Prometheus-Container mit der Konfiguration aus dem vorherigen Schritt.
#!/bin/bash
envsubst < prometheus.yml > /tmp/dbaas-prometheus.yml
docker run -p 9090:9090 \
-v /tmp/dbaas-prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheusRufen Sie in Ihrem Browser http://localhost:9090/targets auf, um zu überprüfen, ob mehrere Hosts erreichbar sind.
Anschließend können Sie unter http://localhost:9090/graph die Datenbankmetriken von Prometheus abfragen.
Weitere Details finden Sie in der Prometheus DNS SD-Dokumentation und der TLS-Konfigurationsdokumentation.
Um die einzelnen Metriken kennenzulernen und zu verstehen, können Sie dieses offizielle PostgreSQL-Dokument zu Überwachungsstatistiken konsultieren.
Sie können auch mehr darüber erfahren, wie Sie auswertbare Metriken für eine verwaltete PostgreSQL-Datenbank sammeln können.
Ergebnis
Dieses Tutorial zeigt Ihnen, wie Sie Metriken einer verwalteten PostgreSQL-Datenbank auf DigitalOcean mithilfe einer Node.js-Webanwendung, die auf der DigitalOcean-Anwendungsplattform bereitgestellt wird, und Prometheus einrichten und abrufen. Durch die Aktivierung der Metrikabfrage können Sie die Leistung und den Zustand Ihrer Datenbanken einfach überwachen und so optimale Performance sowie eine detaillierte Fehlerbehebung gewährleisten.


























