Questa pagina descrive le tecniche per l'analisi e 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.
- Connettersi direttamente a un nodo per il debug.
- Esaminare i log di AlloyDB per determinare quale nodo specifico gestisce una determinata query inviata a un pool di lettura.
- Eseguire query sui log per tutte le attività recenti da un determinato nodo del pool di lettura.
- Visualizzare le metriche associate a un nodo del pool di lettura. Google Cloud
Utilizzate 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 cluster utilizza una quantità insolita di CPU durante l'elaborazione di una query a lunga esecuzione, queste tecniche ti consentono di determinare quale nodo gestisce la query e quindi di connetterti direttamente al nodo per esaminare ulteriormente o terminare la query.
Elencare i dettagli dei nodi di un pool di lettura
In un utilizzo normale 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 diagnostica e il debug successivi:
La stringa dell'ID del nodo Google Cloud , utilizzata per eseguire query sui log relative all'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 dell'ID interno e gli indirizzi IP dei nodi di un pool di lettura,
segui le istruzioni specifiche di gcloud-riportate in Visualizzare i dettagli
dell'istanza, ma aggiungi un argomento della riga di comando --view=FULL
aggiuntivo:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULLSostituisci 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-cI campi id e ip di ogni voce sono particolarmente pertinenti alle altre tecniche descritte in questa pagina:
Il campo
ipmostra l'indirizzo IP del nodo all'interno del VPC del cluster.Il campo
idcontiene la stringa dell'ID completo del nodo Google Cloud . Nelle voci di log di un nodo vengono visualizzati solo gli ultimi quattro caratteri di questa stringa.Ad esempio, per trovare le voci di log che riguardano il primo dei due nodi nell'output di esempio precedente, esegui una query sui log utilizzando la stringa dell'ID
hcfh.
Connettersi direttamente a un nodo
Una volta che conosci 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 cluster, segui le istruzioni riportate in Eseguire il client
psql. Quando lo fai, fornisci l'indirizzo IP del nodo anziché quello dell'istanza del pool di lettura:
psql -h NODE_IP_ADDRESS -U USERNAMETrovare l'attività dei nodi 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 in modo da 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 a lunga esecuzione, Esplora log 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 è stato abilitato l'estensione pgAudit.
Visita Esplora log:
Nel generatore di query, aggiungi
resource.labels.instance_id="READ_POOL_ID"al campo dell'editor di query, sostituendo READ_POOL_ID con il nome dell'istanza del pool di lettura.Aggiungi l'istruzione SQL che stai esaminando, per intero o in parte, al campo dell'editor di query. Ad esempio:
select id from MyTable. L'input non fa distinzione tra maiuscole e minuscole.Fai clic su Esegui query.
Utilizza i controlli di Esplora log per ottimizzare ed eseguire di nuovo la query, se necessario, per filtrare i risultati in modo da visualizzare solo quelli più pertinenti.
Fai clic su una voce di log nell'elenco dei risultati per espanderne la visualizzazione.
Fai clic sul campo
labelsnella visualizzazione espansa della voce.Prendi nota del valore di
NODE_IDinlabels.
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 nodo specifico in base alla sua attività registrata, segui questi passaggi:
Prendi nota della stringa dell'ID di quattro caratteri del nodo registrato. Puoi trovare questo ID nel campo
NODE_IDdella voce di log.Elenca i nodi del pool di lettura.
Nell'elenco, trova un nodo con la stringa dell'ID che termina con i quattro caratteri annotati nel primo passaggio. È possibile che nessuno dei nodi elencati corrisponda.
Se trovi un nodo corrispondente, utilizza l'indirizzo IP corrispondente 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 ritirato il nodo nel tempo trascorso dalla voce di log originale. Si tratta di un comportamento normale per i pool di lettura di AlloyDB, come descritto in Una nota sull' effimeralità dei nodi. In questo caso, non puoi stabilire una connessione diretta a quel nodo.
Una volta connesso al server PostgreSQL di un nodo, puoi
utilizzare le tecniche di monitoraggio standard di PostgreSQL, come
pg_stat_activity, per esaminare ulteriormente
i processi correnti del nodo e modificarli, se necessario.
Visualizzare altre voci di log relative a un nodo
Per visualizzare l'attività registrata più recente relativa a un nodo con un ID specifico:
Visita Esplora log:
Aggiungi
labels.NODE_ID=NODE_IDal generatore di query di Esplora log, sostituendo NODE_ID con la stringa ID di quattro caratteri del nodo.Fai clic su Esegui query per visualizzare tutta l'attività del nodo nella finestra temporale selezionata oppure ottimizza la query per 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 di AlloyDB. Per saperne di più sulle metriche dei nodi disponibili, consulta il riferimento alle metriche di Insight sul sistema.
Per scoprire quali ID nodo sono associati a una determinata istanza del pool di lettura, consulta Elencare 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
"Google Cloud metriche".
Una nota sull'effimeralità dei nodi
Sebbene tu possa connetterti in sicurezza a un nodo per scopi di analisi o debug temporanei, le applicazioni che utilizzano i pool di lettura devono sempre connettersi a questi pool a livello di istanza, utilizzando l'indirizzo IP visualizzato dal cluster nell'elenco delle istanze del cluster.
AlloyDB considera i nodi dei pool di lettura come risorse effimere e intercambiabili. Il servizio modifica l'elenco dei nodi di un pool di lettura con la frequenza necessaria per mantenere l'istanza del pool di lettura con bilanciamento del 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 applicazioni di connettersi ai pool di lettura a livello di istanza e lascia che AlloyDB si occupi di instradare in modo efficiente le query ai nodi appropriati.
Passaggi successivi
- Scopri di più sull'utilizzo di Esplora log.