Wenn Sie Abfragen untersuchen und Fehler beheben möchten, die AlloyDB for PostgreSQL an eine Lesepoolinstanz weiterleitet, können Sie die folgenden Diagnosetechniken verwenden:
- Eine detaillierte Liste der Knoten eines Lesepools, einschließlich ihrer IP-Adressen, aufrufen.
- Stellen Sie zu Debugging-Zwecken eine direkte Verbindung zu einem einzelnen Lesepoolknoten her.
- Prüfen Sie die AlloyDB-Logs, um festzustellen, welcher Knoten eine bestimmte Abfrage verarbeitet.
- Fragen Sie die Logs nach allen aktuellen Aktivitäten eines bestimmten Lesepoolknotens ab.
- Google Cloud -Messwerte für einen Lesepoolknoten ansehen.
Zusammen bieten diese Techniken Diagnose- und Debugging-Zugriff auf Ihre Lesepools. Wenn beispielsweise einer der Lesepools Ihres Clusters bei der Verarbeitung einer Abfrage mit langer Laufzeit ungewöhnlich viel CPU-Leistung verbraucht, können Sie mit diesen Techniken ermitteln, welcher Knoten diese Abfrage verarbeitet. Anschließend können Sie eine direkte Verbindung zu diesem Knoten herstellen, um die Abfrage weiter zu untersuchen oder zu beenden.
Details zu den Knoten eines Lesepools auflisten
Bei der normalen AlloyDB-Nutzung müssen Sie die Identitäten oder Adressen der Knoten, aus denen Ihre Lesepools bestehen, nicht kennen. Bei Bedarf können Sie sich jedoch eine Liste der Knoten einer Lesepoolinstanz ansehen. Jeder aufgeführte Knoten enthält die folgenden Informationen, die für die nachfolgende Diagnose und Fehlerbehebung nützlich sind:
Der Google Cloud -ID-String des Knotens, der zum Ausführen von Logabfragen zu den letzten Aktivitäten dieses Knotens verwendet wird.
Die IP-Adresse des Knotens in der Virtual Private Cloud (VPC) Ihres Clusters, über die Sie direkt eine Verbindung zum PostgreSQL-Server dieses Knotens herstellen können.
Wenn Sie die internen ID-Strings und IP-Adressen der Knoten eines Lesepools aufrufen möchten, folgen Sie der gcloud-spezifischen Anleitung unter Instanzdetails aufrufen, fügen Sie aber ein zusätzliches --view=FULL-Befehlszeilenargument hinzu:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULLErsetzen Sie Folgendes:
- READ_POOL_ID: Die ID des Lesepools.
- REGION_ID: Die Regions-ID der Instanz.
- CLUSTER_ID: Die ID des Clusters der Instanz.
- PROJECT_ID: Die ID des Projekts der Instanz.
Die Ausgabe enthält einen Abschnitt mit der Bezeichnung nodes, der etwa so aussieht:
nodes:
- id: READ_POOL_INSTANCE_ID-edd4f6ed-hcfh
ip: 10.90.80.57
state: HEALTHY
zoneId: us-central1-b
- id: READ_POOL_INSTANCE_ID-edd4f6ed-ldbm
ip: 10.90.80.56
state: HEALTHY
zoneId: us-central1-cDie Felder id und ip für jeden Eintrag sind besonders relevant für die anderen auf dieser Seite beschriebenen Techniken:
Im Feld
ipwird die IP-Adresse des Knotens innerhalb der VPC des Clusters angezeigt.Das Feld
identhält den vollständigen Google Cloud -ID-String des Knotens. In den Logeinträgen für einen Knoten werden nur die letzten vier Zeichen dieses Strings angezeigt.Wenn Sie beispielsweise Logeinträge suchen möchten, die den ersten der beiden Knoten in der vorherigen Beispielausgabe betreffen, fragen Sie die Logs mit dem ID-String
hcfhab.
Direkt mit einem Knoten verbinden
Sobald Sie die IP-Adresse eines Knotens kennen, können Sie direkt eine Verbindung zu seinem PostgreSQL-Server herstellen. Wenn Sie beispielsweise psql verwenden möchten, um eine Verbindung zu einer VM in der VPC Ihres Clusters herzustellen, folgen Sie der Anleitung unter psql-Client ausführen. Geben Sie dabei die IP-Adresse des Knotens und nicht die der Lesepoolinstanz an:
psql -h NODE_IP_ADDRESS -U USERNAMEKnotenaktivität in Logs finden
AlloyDB enthält Knoten-IDs in Logeinträgen zu Abfragen, die von Lesepools verarbeitet werden. Im Allgemeinen können Sie diese erkannten IDs auf zwei Arten verwenden:
- Ermitteln Sie die IP-Adresse des Knotens, damit Sie eine Verbindung zu ihm herstellen können.
- Führen Sie weitere Logabfragen durch, um mehr über die letzten Aktivitäten des Knotens zu erfahren.
Bestimmen, welcher Knoten eine bekannte Abfrage verarbeitet
Wenn Sie wissen, dass ein bestimmter Lesepool eine lang andauernde Abfrage verarbeitet, können Sie mit dem Log-Explorer die ID des Knotens ermitteln, der diese Abfrage verarbeitet.
Diese Methode funktioniert nur bei Lesepoolinstanzen, für die die pgAudit-Erweiterung aktiviert ist.
Rufen Sie den Log-Explorer auf:
Fügen Sie im Query Builder
resource.labels.instance_id="READ_POOL_ID"in das Feld des Abfrageeditors ein und ersetzen Sie READ_POOL_ID durch den Namen Ihrer Lesepoolinstanz.Fügen Sie die SQL-Anweisung, die Sie untersuchen, ganz oder teilweise in das Feld des Abfrageeditors ein. Beispiel:
select id from MyTable. Bei dieser Eingabe wird die Groß-/Kleinschreibung nicht berücksichtigt.Klicken Sie auf Abfrage ausführen.
Verwenden Sie die Steuerelemente des Log-Explorers, um die Abfrage nach Bedarf anzupassen und noch einmal auszuführen, um die Ergebnisse auf die relevantesten zu beschränken.
Klicken Sie in der Ergebnisliste auf einen Logeintrag, um die Anzeige zu maximieren.
Klicken Sie in der maximierten Ansicht des Eintrags auf das Feld
labels.Notieren Sie sich den Wert von
NODE_IDunterlabels.
Das Ergebnis ist die vierstellige Kennung des Knotens, der die Abfrage verarbeitet.
Verbindung zu einem Knoten herstellen, der in einem Logeintrag erwähnt wird
Wenn Sie anhand der protokollierten Aktivität eine direkte Verbindung zum PostgreSQL-Server eines bestimmten Knotens herstellen möchten, gehen Sie so vor:
Notieren Sie sich die vierstellige ID-Zeichenfolge des protokollierten Knotens. Sie finden diese ID im Feld
NODE_IDdes Logeintrags.Listen Sie die Knoten für den Lesepool auf.
Suchen Sie in dieser Liste nach einem Knoten mit dem ID-String, der mit den vier Zeichen endet, die Sie im ersten Schritt notiert haben. Es ist möglich, dass keiner der aufgeführten Knoten übereinstimmt.
Wenn Sie einen übereinstimmenden Knoten finden, verwenden Sie die entsprechende IP-Adresse, um eine Verbindung zum PostgreSQL-Server dieses Knotens herzustellen.
Wenn keiner der im vorherigen Schritt aufgeführten Knoten des Lesepools eine ID hat, die mit dem protokollierten Knoten übereinstimmt, hat der Lesepool diesen Knoten in der Zeit seit dem ursprünglichen Logeintrag außer Betrieb genommen. Das ist ein normales Verhalten für AlloyDB-Lesepools, wie unter Hinweis zur Kurzlebigkeit von Knoten beschrieben. In diesem Fall können Sie keine direkte Verbindung zu diesem Knoten herstellen.
Sobald Sie eine Verbindung zum PostgreSQL-Server eines Knotens hergestellt haben, können Sie standardmäßige PostgreSQL-Monitoring-Techniken wie pg_stat_activity verwenden, um die aktuellen Prozesse des Knotens weiter zu untersuchen und bei Bedarf anzupassen.
Weitere Logeinträge zu einem Knoten ansehen
So rufen Sie die neuesten protokollierten Aktivitäten zu einem Knoten mit einer bestimmten ID auf:
Rufen Sie den Log-Explorer auf:
Fügen Sie
labels.NODE_ID=NODE_IDim Query Builder des Log-Explorers hinzu und ersetzen Sie NODE_ID durch den vierstelligen ID-String des Knotens.Klicken Sie auf Abfrage ausführen, um alle Aktivitäten dieses Knotens im ausgewählten Zeitfenster aufzurufen, oder passen Sie die Abfrage an, um sie weiter zu filtern.
Wiederholen Sie den vorherigen Schritt nach Bedarf, um die Suche zu verfeinern.
Knotenmesswerte überwachen
Sie können Messwerte zu einzelnen Knoten im AlloyDB-Dashboard „Systemstatistiken“ aufrufen. Weitere Informationen zu den verfügbaren Knotenmesswerten finden Sie in der Referenz zu System Insights-Messwerten.
Informationen dazu, welche Knoten-IDs mit einer bestimmten Lesepoolinstanz verknüpft sind, finden Sie unter Details zu den Knoten eines Lesepools auflisten.
Eine vollständige Referenzdokumentation zu diesen und anderen AlloyDB-Messwerten finden Sie unter alloydb in „Google Cloud -Messwerte“.
Hinweis zur Kurzlebigkeit von Knoten
Sie können zwar für vorübergehende Untersuchungen oder Debugging-Zwecke eine Verbindung zu einem Knoten herstellen, aber Anwendungen, die Lesepools verwenden, sollten immer auf Instanzebene eine Verbindung zu diesen Pools herstellen. Verwenden Sie dazu die IP-Adresse, die der Cluster in der Instanzliste anzeigt.
AlloyDB behandelt die Knoten seiner Lesepools als sitzungsspezifische, austauschbare Ressourcen. Der Dienst ändert die Knotenliste eines Lesepools so oft wie nötig, um die Instanz des Lesepools im Load Balancing und reaktionsfähig zu halten. Wenn eine Anwendung direkt mit einem Lesepoolknoten und nicht mit einer Lesepoolinstanz verbunden ist, besteht das Risiko, dass die Verbindung zur Datenbank abrupt getrennt wird, wenn AlloyDB die Knotenliste der Instanz aktualisiert.
Lassen Sie Ihre Anwendungen immer auf Instanzebene mit Ihren Lesepools verbinden und überlassen Sie AlloyDB die Arbeit, Ihre Abfragen effizient an die richtigen Knoten weiterzuleiten.