Cette page décrit les techniques permettant d'étudier et de déboguer les requêtes qu'AlloyDB pour PostgreSQL envoie à une instance de pool de lecture:
- Affichage d'une liste détaillée des nœuds d'un pool de lecture, y compris leurs adresses IP.
- Se connecter directement à un nœud à des fins de débogage
- Examiner les journaux AlloyDB pour déterminer quel nœud particulier gère une requête envoyée à un pool de lecture.
- Interroger les journaux pour toutes les activités récentes d'un nœud de pool de lecture donné.
- Affichage des métriques Google Cloud associées à un nœud de pool de lecture.
Utilisées ensemble, ces techniques vous donnent accès aux pools de lecture pour le diagnostic et le débogage. Par exemple, si l'un des pools de lecture de votre cluster utilise une quantité inhabituelle de processeur lors du traitement d'une requête longue, ces techniques vous permettent de déterminer quel nœud gère cette requête, puis de vous y connecter directement pour examiner ou mettre fin à la requête.
Lister les détails des nœuds d'un pool de lecture
En utilisation normale d'AlloyDB, vous n'avez pas besoin de connaître les identités ni les adresses des nœuds qui composent vos pools de lecture. Toutefois, si nécessaire, vous pouvez afficher la liste des nœuds d'une instance de pool de lecture. Chaque nœud listé inclut les informations suivantes, utiles pour le diagnostic et le débogage ultérieurs:
Chaîne d'ID Google Cloud du nœud, utilisée pour effectuer des requêtes de journal sur l'activité récente de ce nœud.
Adresse IP du nœud dans le cloud privé virtuel (VPC) de votre cluster, que vous pouvez utiliser pour vous connecter directement au serveur PostgreSQL de ce nœud.
Pour afficher les chaînes d'ID internes et les adresses IP des nœuds d'un pool de lecture, suivez les instructions spécifiques à gcloud
dans Afficher les détails de l'instance, mais ajoutez un argument de ligne de commande --view=FULL
supplémentaire:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULL
Remplacez les éléments suivants :
- READ_POOL_ID: ID du pool de lecture.
- REGION_ID: ID de région de l'instance.
- CLUSTER_ID: ID du cluster de l'instance.
- PROJECT_ID: ID du projet de l'instance.
Le résultat inclut une section intitulée nodes
, qui se présente comme suit:
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
Les champs id
et ip
de chaque entrée sont particulièrement pertinents pour les autres techniques décrites sur cette page:
Le champ
ip
affiche l'adresse IP du nœud dans le VPC du cluster.Le champ
id
contient la chaîne d'ID complète du nœud Google Cloud . Seuls les quatre derniers caractères de cette chaîne apparaissent dans les entrées journalisées d'un nœud.Par exemple, pour rechercher les entrées de journal impliquant le premier des deux nœuds de l'exemple de sortie précédent, interrogez les journaux à l'aide de la chaîne d'ID
hcfh
.
Se connecter directement à un nœud
Une fois que vous connaissez l'adresse IP d'un nœud, vous pouvez vous connecter directement à son serveur PostgreSQL. Par exemple, pour utiliser psql
pour vous connecter à une VM dans le VPC de votre cluster, suivez les instructions de la section Exécuter le client psql. Dans ce cas, indiquez l'adresse IP du nœud plutôt que celle de son instance de pool de lecture:
psql -h NODE_IP_ADDRESS -U USERNAME
Rechercher l'activité des nœuds dans les journaux
AlloyDB inclut les ID de nœud dans les entrées de journal concernant les requêtes gérées par les pools de lecture. De manière générale, vous pouvez utiliser ces ID découverts de deux manières:
- Déterminez l'adresse IP de ce nœud pour pouvoir vous y connecter.
- Exécutez d'autres requêtes de journal pour en savoir plus sur l'activité récente du nœud.
Déterminer quel nœud gère une requête connue
Si vous savez qu'un pool de lecture particulier traite une requête de longue durée, l'explorateur de journaux peut vous aider à déterminer l'ID du nœud spécifique qui gère cette requête.
Notez que cette technique ne fonctionne que sur les instances de pool de lecture pour lesquelles l'extension pgAudit est activée.
Accédez à l'explorateur de journaux:
Dans le Générateur de requêtes, ajoutez
resource.labels.instance_id="READ_POOL_ID"
au champ de l'éditeur de requêtes, en remplaçant READ_POOL_ID par le nom de votre instance de pool de lecture.Ajoutez l'instruction SQL que vous étudiez, en totalité ou en partie, dans le champ de l'éditeur de requête. Exemple :
select id from MyTable
. Cette entrée n'est pas sensible à la casse.Cliquez sur Exécuter la requête.
Utilisez les commandes de l'explorateur de journaux pour affiner et réexécuter la requête si nécessaire afin de filtrer les résultats les plus pertinents.
Cliquez sur une entrée de journal dans la liste des résultats pour la développer.
Cliquez sur le champ
labels
dans l'affichage développé de l'entrée.Notez la valeur de
NODE_ID
souslabels
.
Le résultat correspond à l'identifiant à quatre caractères du nœud qui gère la requête.
Se connecter à un nœud mentionné dans une entrée de journal
Si vous souhaitez vous connecter directement au serveur PostgreSQL d'un nœud particulier en fonction de son activité enregistrée, procédez comme suit:
Notez la chaîne d'ID à quatre caractères du nœud connecté. Vous pouvez trouver cet ID dans le champ
NODE_ID
de l'entrée de journal.Listez les nœuds du pool de lecture.
Dans cette liste, recherchez un nœud dont la chaîne d'ID se termine par les quatre caractères que vous avez notés à l'étape 1. Il est possible qu'aucun des nœuds listés ne corresponde.
Si vous trouvez un nœud correspondant, utilisez son adresse IP correspondante pour vous connecter au serveur PostgreSQL de ce nœud.
Sinon, si aucun des nœuds du pool de lecture listés à l'étape précédente ne possède d'ID correspondant au nœud enregistré, le pool de lecture a mis hors service ce nœud au cours du temps écoulé depuis l'entrée de journal d'origine. Il s'agit d'un comportement normal pour les pools de lecture AlloyDB, comme décrit dans Remarque sur l'éphémèreté des nœuds. Dans ce cas, vous ne pouvez pas établir de connexion directe avec ce nœud.
Une fois que vous vous êtes connecté au serveur PostgreSQL d'un nœud, vous pouvez utiliser des techniques de surveillance PostgreSQL standards, telles que pg_stat_activity
, pour examiner plus en détail les processus en cours du nœud et les ajuster si nécessaire.
Afficher d'autres entrées de journal sur un nœud
Pour afficher l'activité enregistrée la plus récente concernant un nœud avec un ID spécifique:
Accédez à l'explorateur de journaux:
Ajoutez
labels.NODE_ID=NODE_ID
au générateur de requêtes de l'explorateur de journaux, en remplaçant NODE_ID par la chaîne d'ID à quatre caractères du nœud.Cliquez sur Exécuter la requête pour afficher toute l'activité de ce nœud au cours de la période sélectionnée, ou ajustez la requête pour la filtrer davantage.
Répétez l'étape précédente si nécessaire pour affiner votre recherche.
Surveiller les métriques de nœud
Vous pouvez afficher les métriques associées à des nœuds individuels à partir du tableau de bord "Insights système" d'AlloyDB. Pour en savoir plus sur les métriques de nœud disponibles, consultez la documentation de référence sur les métriques d'insights système.
Pour savoir quels ID de nœud sont associés à une instance de pool de lecture spécifique, consultez Lister les détails des nœuds d'un pool de lecture.
Pour obtenir la documentation de référence complète de ces métriques et d'autres métriques AlloyDB, consultez alloydb
dans la section "MétriquesGoogle Cloud ".
Remarque concernant l'éphémère des nœuds
Bien que vous puissiez vous connecter en toute sécurité à un nœud à des fins d'investigation temporaire ou de débogage, les applications qui utilisent des pools de lecture doivent toujours se connecter à ces pools au niveau de l'instance, à l'aide de l'adresse IP que son cluster affiche dans sa liste d'instances.
AlloyDB traite les nœuds de ses pools de lecture comme des ressources éphémères et interchangeables. Le service modifie la liste des nœuds d'un pool de lecture aussi souvent que nécessaire afin de maintenir l'équilibre de charge et la réactivité de l'instance de pool de lecture. Une application qui se connecte directement à un nœud de pool de lecture plutôt qu'à une instance de pool de lecture risque de se déconnecter brusquement de votre base de données chaque fois qu'AlloyDB met à jour la liste des nœuds de l'instance.
Laissez toujours vos applications se connecter à vos pools de lecture au niveau de l'instance et laissez AlloyDB router efficacement vos requêtes vers les nœuds appropriés.
Étape suivante
- Découvrez comment utiliser l'explorateur de journaux.