Esta página descreve técnicas para investigar e depurar consultas que o AlloyDB para PostgreSQL envia para uma instância de conjunto de leitura:
- Ver uma lista detalhada dos nós constituintes de um conjunto de leitura, incluindo os respetivos endereços IP.
- Ligar diretamente a um nó para fins de depuração.
- Examinar os registos do AlloyDB para determinar que nó específico está a processar uma consulta enviada para um conjunto de leitura.
- Consultar os registos de toda a atividade recente de um determinado nó do conjunto de leitura.
- Ver Google Cloud métricas associadas a um nó do conjunto de leitura.
Usadas em conjunto, estas técnicas dão-lhe acesso de diagnóstico e depuração aos seus conjuntos de leitura. Por exemplo, se um dos conjuntos de leitura do cluster estiver a usar uma quantidade invulgar de CPU durante o processamento de uma consulta de execução prolongada, estas técnicas permitem-lhe determinar que nó está a processar essa consulta e, em seguida, ligar-se diretamente a esse nó para examinar ou terminar a consulta.
Apresente os detalhes dos nós de um conjunto de leitura
Na utilização normal do AlloyDB, não precisa de conhecer as identidades nem os endereços dos nós que compõem os seus conjuntos de leitura. No entanto, quando necessário, pode ver uma lista dos nós de uma instância do conjunto de leitura. Cada nó apresentado inclui as seguintes informações úteis para diagnóstico e depuração subsequentes:
A cadeia de Google Cloud ID do nó, usada para realizar consultas de registo sobre a atividade recente desse nó.
O endereço IP do nó na nuvem virtual privada (VPC) do cluster, que pode usar para estabelecer ligação diretamente ao servidor PostgreSQL desse nó.
Para ver as strings de ID interno e os endereços IP dos nós de um conjunto de leitura,
siga as instruções específicas do gcloud
em Ver detalhes
da instância, mas adicione um argumento de linha de comandos --view=FULL
adicional:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULL
Substitua o seguinte:
- READ_POOL_ID: o ID do conjunto de leitura.
- REGION_ID: o ID da região da instância.
- CLUSTER_ID: o ID do cluster da instância.
- PROJECT_ID: o ID do projeto da instância.
A saída inclui uma secção etiquetada como nodes
, semelhante a esta:
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
Os campos id
e ip
para cada entrada são especialmente relevantes para as
outras técnicas descritas nesta página:
O campo
ip
mostra o endereço IP do nó na VPC do cluster.O campo
id
contém a string do ID Google Cloud completo do nó. Apenas os últimos quatro carateres desta string aparecem nas entradas registadas de um nó.Por exemplo, para encontrar entradas do registo que envolvam o primeiro dos dois nós no resultado de exemplo anterior, consulte os registos usando a string de ID
hcfh
.
Ligue-se diretamente a um nó
Assim que souber o endereço IP de um nó, pode estabelecer ligação diretamente ao respetivo servidor PostgreSQL. Por exemplo, para usar psql
para estabelecer ligação a uma VM na VPC do seu cluster, siga as instruções em Execute o cliente psql. Quando o fizer, indique o endereço IP do nó e não o da respetiva instância do conjunto de leitura:
psql -h NODE_IP_ADDRESS -U USERNAME
Encontre a atividade dos nós nos registos
O AlloyDB inclui IDs de nós em entradas de registo sobre consultas processadas por pools de leitura. Geralmente, pode usar estes IDs descobertos de duas formas:
- Determine o IP desse nó para poder estabelecer ligação ao mesmo.
- Efetue mais consultas de registos para saber mais sobre a atividade recente do nó.
Determine que nó está a processar uma consulta conhecida
Se souber que um determinado conjunto de leitura está a processar uma consulta de execução prolongada, o Explorador de registos pode ajudar a determinar o ID do nó específico que está a processar essa consulta.
Tenha em atenção que esta técnica só funciona em instâncias do conjunto de leitura que tenham ativado a extensão pgAudit.
Visite o Explorador de registos:
No criador de consultas, adicione
resource.labels.instance_id="READ_POOL_ID"
ao campo do editor de consultas, substituindo READ_POOL_ID pelo nome da instância do seu conjunto de leitura.Adicione a declaração SQL que está a investigar, total ou parcialmente, ao campo do editor de consultas. Por exemplo:
select id from MyTable
. Esta entrada não é sensível a maiúsculas e minúsculas.Clique em Executar consulta.
Use os controlos do Explorador de registos para ajustar e executar novamente a consulta, conforme necessário, para filtrar os resultados e obter os mais relevantes.
Clique numa entrada do registo na lista de resultados para expandir a respetiva apresentação.
Clique no campo
labels
na apresentação expandida da entrada.Tome nota do valor de
NODE_ID
emlabels
.
O resultado é o identificador de quatro carateres do nó que processa a consulta.
Estabeleça ligação a um nó mencionado numa entrada de registo
Se quiser estabelecer ligação diretamente ao servidor PostgreSQL de um nó específico com base na respetiva atividade registada, siga estes passos:
Tome nota da string de ID de quatro carateres do nó registado. Pode encontrar este ID no campo
NODE_ID
da entrada do registo.Liste os nós para o conjunto de leitura.
Nessa lista, encontre um nó com a string de ID que termina com os quatro carateres que anotou no primeiro passo. É possível que nenhum dos nós indicados corresponda.
Se encontrar um nó correspondente, use o respetivo endereço IP correspondente para estabelecer ligação ao servidor PostgreSQL desse nó.
Caso contrário, se nenhum dos nós do conjunto de leitura indicados no passo anterior tiver IDs correspondentes ao nó registado, o conjunto de leitura desativou esse nó no tempo decorrido desde a entrada de registo original. Este é o comportamento normal dos pools de leitura do AlloyDB, conforme descrito em Uma nota sobre a efemeridade dos nós. Neste caso, não pode estabelecer uma ligação direta a esse nó.
Depois de se ligar ao servidor PostgreSQL de um nó, pode usar técnicas de monitorização padrão do PostgreSQL, como pg_stat_activity
, para investigar mais detalhadamente os processos atuais do nó e ajustá-los conforme necessário.
Ver mais entradas de registo sobre um nó
Para ver a atividade registada mais recente sobre um nó com um ID específico:
Visite o Explorador de registos:
Adicione
labels.NODE_ID=NODE_ID
ao criador de consultas do Explorador de registos, substituindo NODE_ID pela string de ID de quatro carateres do nó.Clique em Executar consulta para ver toda a atividade desse nó no período selecionado ou ajuste a consulta para a filtrar ainda mais.
Repita o passo anterior, conforme necessário, para refinar a pesquisa.
Monitorize as métricas dos nós
Pode ver as métricas associadas a nós individuais no painel de controlo Estatísticas do sistema do AlloyDB. Para mais informações sobre as métricas de nós disponíveis, consulte a referência de métricas de estatísticas do sistema.
Para saber que IDs de nós estão associados a uma determinada instância do conjunto de leitura, consulte o artigo Liste os detalhes dos nós de um conjunto de leitura.
Para aceder à documentação de referência completa destas e de outras métricas do AlloyDB, consulte alloydb
em "Google Cloud métricas".
Uma nota sobre a natureza efémera dos nós
Embora possa estabelecer ligação em segurança a um nó para fins de investigação ou depuração temporários, as aplicações que usam conjuntos de leitura devem sempre estabelecer ligação a esses conjuntos ao nível da instância, usando o endereço IP que o respetivo cluster apresenta na respetiva lista de instâncias.
O AlloyDB trata os nós dos respetivos conjuntos de leitura como recursos efémeros e intercambiáveis. O serviço altera a lista de nós de um conjunto de leitura com a frequência necessária para manter essa instância do conjunto de leitura com equilíbrio de carga e responsiva. Uma aplicação que se liga diretamente a um nó do conjunto de leitura, em vez de a uma instância do conjunto de leitura, corre o risco de se desligar abruptamente da sua base de dados sempre que o AlloyDB atualiza a lista de nós da instância.
Permita sempre que as suas aplicações se liguem aos pools de leitura ao nível da instância e deixe que o AlloyDB faça o trabalho de encaminhar as suas consultas de forma eficiente para os nós adequados.
O que se segue?
- Saiba mais sobre a utilização do Explorador de registos.