Questa pagina descrive le tecniche per esaminare e eseguire il debug delle query che AlloyDB per PostgreSQL invia a un'istanza del pool di lettura:
- Visualizzare un elenco dettagliato dei nodi che compongono un pool di lettura, inclusi i relativi indirizzi IP.
- Connessione diretta a un nodo, a scopo di debug.
- Esaminare i log di AlloyDB per determinare quale nodo specifico gestisce una query inviata a un pool di lettura.
- Eseguire query sui log per tutte le attività recenti da un determinato nodo del pool di lettura.
- Visualizzazione delle metriche di Google Cloud associate a un nodo del pool di lettura.
Se usate insieme, queste tecniche ti consentono di accedere ai pool di lettura per la diagnostica e il debug. Ad esempio, se uno dei pool di lettura del tuo cluster utilizza una quantità insolita di CPU durante l'elaborazione di una query di lunga durata, queste tecniche ti consentono di determinare quale nodo gestisce la query e di connetterti direttamente a quel nodo per esaminare ulteriormente o terminare la query.
Elenca i dettagli dei nodi di un pool di lettura
Durante il normale utilizzo di AlloyDB, non è necessario conoscere le identità o gli indirizzi dei nodi che compongono i pool di lettura. Tuttavia, se necessario, puoi visualizzare un elenco dei nodi di un'istanza del pool di lettura. Ogni nodo elencato include le seguenti informazioni utili per la diagnosi e il debug successivi:
La stringa ID del nodo Google Cloud , utilizzata per eseguire query su log sull'attività recente del nodo.
L'indirizzo IP del nodo all'interno del Virtual Private Cloud (VPC) del cluster, che puoi utilizzare per connetterti direttamente al server PostgreSQL del nodo.
Per visualizzare le stringhe di ID interne e gli indirizzi IP dei nodi di un pool di lettura, segui le istruzioni specifiche per gcloud
in Visualizza i dettagli dell'istanza, ma aggiungi un altro argomento della riga di comando --view=FULL
:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULL
Sostituisci quanto segue:
- READ_POOL_ID: l'ID del pool di lettura.
- REGION_ID: l'ID regione dell'istanza.
- CLUSTER_ID: l'ID del cluster dell'istanza.
- PROJECT_ID: l'ID del progetto dell'istanza.
L'output include una sezione etichettata nodes
, simile alla seguente:
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-c
I campi id
e ip
per ogni voce sono particolarmente pertinenti per le altre tecniche descritte in questa pagina:
Il campo
ip
mostra l'indirizzo IP del nodo all'interno del VPC del cluster.Il campo
id
contiene la stringa dell'ID Google Cloud completa del nodo. Solo gli ultimi quattro caratteri di questa stringa vengono visualizzati nelle voci registrate per un nodo.Ad esempio, per trovare le voci di log che coinvolgono il primo dei due nodi nell'output di esempio precedente, esegui una query sui log utilizzando la stringa ID
hcfh
.
Connettiti direttamente a un nodo
Una volta conosciuto l'indirizzo IP di un nodo, puoi connetterti direttamente al suo
server PostgreSQL. Ad esempio, per utilizzare psql
per connetterti a una VM nel VPC del tuo cluster, segui le istruzioni riportate in Eseguire il client psql. In questo caso, fornisci l'indirizzo IP del nodo anziché quello dell'istanza del pool di lettura:
psql -h NODE_IP_ADDRESS -U USERNAME
Trovare l'attività del nodo nei log
AlloyDB include gli ID nodo nelle voci di log relative alle query gestite dai pool di lettura. In generale, puoi utilizzare questi ID rilevati in due modi:
- Determina l'IP del nodo per poterti connettere.
- Esegui ulteriori query sui log per scoprire di più sull'attività recente del nodo.
Determinare quale nodo gestisce una query nota
Se sai che un determinato pool di lettura sta elaborando una query di lunga durata, Log Explorer può aiutarti a determinare l'ID del nodo specifico che gestisce la query.
Tieni presente che questa tecnica funziona solo sulle istanze del pool di lettura in cui è stata attivata l'estensione pgAudit.
Vai a Esplora log:
Nel query builder, aggiungi
resource.labels.instance_id="READ_POOL_ID"
al campo query-editor, sostituendo READ_POOL_ID con il nome dell'istanza del pool di lettura.Aggiungi l'istruzione SQL in esame, in toto o in parte, al campo dell'editor query. Ad esempio:
select id from MyTable
. Questo input non è sensibile alle maiuscole.Fai clic su Esegui query.
Utilizza i controlli di Esplora log per ottimizzare ed eseguire nuovamente la query in base alle esigenze, in modo da limitare i risultati a quelli più pertinenti.
Fai clic su una voce di log nell'elenco dei risultati per espandere la visualizzazione.
Fai clic sul campo
labels
nella visualizzazione espansa della voce.Prendi nota del valore di
NODE_ID
inlabels
.
Il risultato è l'identificatore di quattro caratteri del nodo che gestisce la query.
Connettersi a un nodo menzionato in una voce di log
Se vuoi connetterti direttamente al server PostgreSQL di un determinato nodo in base all'attività registrata, segui questi passaggi:
Prendi nota della stringa ID di quattro caratteri del nodo registrato. Puoi trovare questo ID nel campo
NODE_ID
della voce di log.Elenca i nodi per il pool di lettura.
In questo elenco, trova un nodo con la stringa ID che termina con i quattro caratteri annotati nel primo passaggio. È possibile che nessuno dei nodi elencati corrisponda.
Se trovi un nodo corrispondente, utilizza il relativo indirizzo IP per connetterti al server PostgreSQL del nodo.
In caso contrario, se nessuno dei nodi del pool di lettura elencati nel passaggio precedente ha ID corrispondenti al nodo registrato, il pool di lettura ha dismesso quel nodo nel tempo trascorso dalla voce di log originale. Si tratta di un comportamento normale per i pool di lettura AlloyDB, come descritto in Una nota sull'eternità dei nodi. In questo caso, non puoi stabilire una connessione diretta con il nodo.
Dopo aver eseguito la connessione al server PostgreSQL di un nodo, puoi utilizzare tecniche di monitoraggio PostgreSQL standard, come pg_stat_activity
, per esaminare ulteriormente i processi correnti del nodo e modificarli in base alle esigenze.
Visualizzare altre voci di log relative a un nodo
Per visualizzare le attività registrate più recenti relative a un nodo con un ID specifico:
Vai a Esplora log:
Aggiungi
labels.NODE_ID=NODE_ID
a Query Builder di Esplora log, sostituendo NODE_ID con la stringa ID di quattro caratteri del nodo.Fai clic su Esegui query per visualizzare tutte le attività del nodo nell'intervallo di tempo selezionato o per ottimizzare la query in modo da filtrarla ulteriormente.
Ripeti il passaggio precedente se necessario per perfezionare la ricerca.
Monitorare le metriche dei nodi
Puoi visualizzare le metriche associate ai singoli nodi dalla dashboard Insight sul sistema AlloyDB. Per ulteriori informazioni sulle metriche dei nodi disponibili, consulta la documentazione di riferimento sulle metriche degli insight di sistema.
Per sapere quali ID nodo sono associati a una determinata istanza del pool di lettura, consulta Elenca i dettagli dei nodi di un pool di lettura.
Per la documentazione di riferimento completa di queste e altre metriche di AlloyDB, consulta alloydb
in "Metriche diGoogle Cloud ".
Una nota sull'eternità dei nodi
Sebbene tu possa connetterti in sicurezza a un nodo per scopi di indagine temporanea o di debugging, le applicazioni che utilizzano pool di lettura devono sempre connettersi a questi pool a livello di istanza, utilizzando l'indirizzo IP visualizzato dal cluster nell'elenco delle istanze.
AlloyDB tratta i nodi dei pool di lettura come risorse temporanee e intercambiabili. Il servizio modifica l'elenco di nodi di un pool di lettura tutte le volte che è necessario per mantenere l'istanza del pool di lettura equilibrata in termini di carico e reattiva. Un'applicazione che si connette direttamente a un nodo del pool di lettura, anziché a un'istanza del pool di lettura, rischia di disconnettersi bruscamente dal database ogni volta che AlloyDB aggiorna l'elenco dei nodi dell'istanza.
Consenti sempre alle tue applicazioni di connettersi ai pool di lettura a livello di istanza e lascia che sia AlloyDB a occuparsi di instradare in modo efficiente le tue query ai nodi appropriati.
Passaggi successivi
- Scopri di più sull'utilizzo di Esplora log.