Para investigar e depurar consultas que o AlloyDB para PostgreSQL encaminha para uma instância do pool de leitura, use as seguintes técnicas de diagnóstico:
- Confira uma lista detalhada dos nós constituintes de um pool de leitura, incluindo os endereços IP.
- Conectar-se diretamente a um nó de pool de leitura individual para depuração.
- Analise os registros do AlloyDB para identificar qual nó está processando uma consulta específica.
- Consulte os registros de todas as atividades recentes de um nó específico do pool de leitura.
- Ver as métricas do Google Cloud associadas a um nó do pool de leitura.
Usadas em conjunto, essas técnicas dão acesso de diagnóstico e depuração aos pools de leitura. Por exemplo, se um dos pools de leitura do cluster estiver usando uma quantidade incomum de CPU ao processar uma consulta de longa duração, essas técnicas permitem determinar qual nó está processando essa consulta e, em seguida, conectar-se diretamente a esse nó para examinar ou encerrar a consulta.
Listar detalhes dos nós de um pool de leitura
No uso normal do AlloyDB, não é necessário saber as identidades ou os endereços dos nós que compõem os pools de leitura. No entanto, quando necessário, é possível ver uma lista dos nós de uma instância de pool de leitura. Cada nó listado inclui as seguintes informações úteis para diagnóstico e depuração subsequentes:
A string de ID do Google Cloud do nó, usada para realizar consultas de registro sobre a atividade recente desse nó.
O endereço IP do nó na nuvem privada virtual (VPC) do cluster, que pode ser usado para se conectar diretamente ao servidor PostgreSQL do nó.
Para ver as strings de ID interno e os endereços IP dos nós de um pool de leitura,
siga as instruções específicas do gcloud em Ver detalhes da
instância, mas adicione um argumento de linha de comando
--view=FULL extra:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULLSubstitua:
- READ_POOL_ID: o ID do pool 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 seção chamada 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-cOs campos id e ip de cada entrada são especialmente relevantes para as
outras técnicas descritas nesta página:
O campo
ipmostra o endereço IP do nó na rede VPC do cluster.O campo
idcontém a string de ID Google Cloud completa do nó. Somente os quatro caracteres finais dessa string aparecem nas entradas de registro de um nó.Por exemplo, para encontrar entradas de registro que envolvem o primeiro dos dois nós na saída de amostra anterior, consulte os registros usando a string de ID
hcfh.
Conectar-se diretamente a um nó
Depois de saber o endereço IP de um nó, é possível se conectar diretamente ao servidor PostgreSQL dele. Por exemplo, para usar psql para se conectar a uma VM na rede VPC do cluster, siga as instruções em Executar o cliente psql. Nesse caso, forneça o
endereço IP do nó em vez do endereço da instância do pool de leitura:
psql -h NODE_IP_ADDRESS -U USERNAMEEncontrar atividades de nós nos registros
O AlloyDB inclui IDs de nó em entradas de registro sobre consultas processadas por pools de leitura. De modo geral, é possível usar esses IDs descobertos de duas maneiras:
- Determine o IP do nó para se conectar a ele.
- Faça mais consultas de registro para saber mais sobre a atividade recente do nó.
Determinar qual nó está processando uma consulta conhecida
Se você souber que um determinado pool de leitura está processando uma consulta de longa duração, use a Análise de registros para determinar o ID do nó específico que está processando essa consulta.
Essa técnica só funciona em instâncias de pool de leitura que ativaram a extensão pgAudit.
Acesse a Análise de registros:
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 pool de leitura.Adicione a instrução SQL que você está investigando, no todo ou em parte, ao campo do editor de consultas. Por exemplo,
select id from MyTable. Essa entrada não diferencia maiúsculas de minúsculas.Clique em Executar consulta.
Use os controles da Análise de registros para ajustar e executar novamente a consulta conforme necessário para filtrar os resultados mais relevantes.
Clique em uma entrada de registro na lista de resultados para expandir a exibição.
Clique no campo
labelsna exibição expandida da entrada.Anote o valor de
NODE_IDemlabels.
O resultado é o identificador de quatro caracteres do nó que processa a consulta.
Conectar-se a um nó mencionado em uma entrada de registro
Se você quiser se conectar diretamente ao servidor PostgreSQL de um nó específico com base na atividade registrada, siga estas etapas:
Anote a string de ID de quatro caracteres do nó registrado. Esse ID está no campo
NODE_IDda entrada de registro.Liste os nós do pool de leitura.
Nessa lista, encontre um nó com a string de ID que termina com os quatro caracteres que você anotou na primeira etapa. É possível que nenhum dos nós listados corresponda.
Se você encontrar um nó correspondente, use o endereço IP correspondente para se conectar ao servidor PostgreSQL desse nó.
Caso contrário, se nenhum dos nós do pool de leitura listados na etapa anterior tiver IDs correspondentes ao nó registrado, o pool de leitura terá desativado esse nó no tempo decorrido desde a entrada de registro original. Esse é o comportamento normal dos pools de leitura do AlloyDB, conforme descrito em Uma observação sobre a efemeridade do nó. Nesse caso, não é possível estabelecer uma conexão direta com esse nó.
Depois de se conectar ao servidor PostgreSQL de um nó, use técnicas de monitoramento padrão do PostgreSQL, como pg_stat_activity, para investigar melhor os processos atuais do nó e ajustá-los conforme necessário.
Ver mais entradas de registro sobre um nó
Para ver as atividades registradas mais recentes de um nó com um ID específico:
Acesse a Análise de registros:
Adicione
labels.NODE_ID=NODE_IDao criador de consultas da Análise de registros, substituindo NODE_ID pela string de ID de quatro caracteres do nó.Clique em Executar consulta para ver todas as atividades desse nó na janela de tempo selecionada ou ajuste a consulta para filtrá-la ainda mais.
Repita a etapa anterior conforme necessário para refinar sua pesquisa.
Monitorar métricas de nós
É possível ver as métricas associadas a nós individuais no painel de insights do sistema do AlloyDB. Para mais informações sobre as métricas de nó disponíveis, consulte a referência de métricas do System Insights.
Para saber quais IDs de nó estão associados a uma determinada instância de pool de leitura, consulte Listar detalhes dos nós de um pool de leitura.
Para ver a documentação de referência completa dessas e de outras métricas do AlloyDB, consulte alloydb em "Métricas doGoogle Cloud ".
Observação sobre a efemeridade do nó
Embora seja possível se conectar com segurança a um nó para fins de investigação ou depuração temporária, os aplicativos que usam pools de leitura precisam sempre se conectar a esses pools no nível da instância, usando o endereço IP que o cluster exibe na lista de instâncias.
O AlloyDB trata os nós dos pools de leitura como recursos temporários e intercambiáveis. O serviço altera a lista de nós de um pool de leitura com a frequência necessária para manter a instância do pool de leitura com balanceamento de carga e responsiva. Um aplicativo que se conecta diretamente a um nó de pool de leitura, em vez de uma instância de pool de leitura, corre o risco de se desconectar abruptamente do banco de dados sempre que o AlloyDB atualizar a lista de nós da instância.
Sempre permita que seus aplicativos se conectem aos pools de leitura no nível da instância e deixe que o AlloyDB faça o trabalho de rotear suas consultas de maneira eficiente para os nós adequados.
A seguir
- Saiba mais sobre como usar a Análise de registros.