이 페이지에서는 PostgreSQL용 AlloyDB에서 읽기 풀 인스턴스에 전송하는 쿼리를 조사하고 디버깅하는 방법을 설명합니다.
- 읽기 풀의 구성 노드(IP 주소 포함)의 자세한 목록을 볼 수 있습니다.
- 디버깅 목적으로 노드에 직접 연결합니다.
- AlloyDB 로그를 검사하여 읽기 풀로 전송된 특정 쿼리를 처리하는 노드를 확인합니다.
- 특정 읽기 풀 노드에서 모든 최근 활동에 대한 로그를 쿼리합니다.
- 읽기 풀 노드와 연결된 Google Cloud 측정항목을 확인합니다.
이러한 기법을 함께 사용하면 읽기 풀에 대한 진단 및 디버깅 액세스 권한이 부여됩니다. 예를 들어 클러스터의 읽기 풀 중 하나가 장기 실행 쿼리를 처리하는 동안 비정상적인 양의 CPU를 사용하는 경우 이러한 기법을 사용하면 해당 쿼리를 처리하는 노드를 확인한 다음 해당 노드에 직접 연결하여 쿼리를 추가로 검사하거나 종료할 수 있습니다.
읽기 풀 노드의 세부정보 나열
일반적인 AlloyDB 사용에서는 읽기 풀을 구성하는 노드의 ID나 주소를 알 필요가 없습니다. 하지만 필요한 경우 읽기 풀 인스턴스의 노드 목록을 볼 수 있습니다. 각 나열된 노드에는 후속 진단 및 디버깅에 유용한 다음 정보가 포함됩니다.
노드의 Google Cloud ID 문자열로, 노드의 최근 활동에 관한 로그 쿼리를 실행하는 데 사용됩니다.
클러스터의 가상 프라이빗 클라우드(VPC) 내 노드의 IP 주소로, 이 주소를 사용하여 해당 노드의 PostgreSQL 서버에 직접 연결할 수 있습니다.
읽기 풀 노드의 내부 ID 문자열과 IP 주소를 보려면 인스턴스 세부정보 보기의 gcloud 관련 안내를 따르되 --view=FULL 명령줄 인수를 추가하세요.
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULL다음을 바꿉니다.
- READ_POOL_ID: 읽기 풀의 ID입니다.
- REGION_ID: 인스턴스의 리전 ID입니다.
- CLUSTER_ID: 인스턴스 클러스터의 ID
- PROJECT_ID: 인스턴스 프로젝트의 ID
출력에는 다음과 유사한 nodes 라벨이 지정된 섹션이 포함됩니다.
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각 항목의 id 및 ip 필드는 특히 이 페이지에 설명된 다른 기법과 관련이 있습니다.
ip필드에는 클러스터의 VPC 내 노드의 IP 주소가 표시됩니다.id필드에는 노드의 전체 Google Cloud ID 문자열이 포함됩니다. 이 문자열의 마지막 네 글자만 노드의 로깅된 항목에 표시됩니다.예를 들어 이전 샘플 출력에 있는 두 노드 중 첫 번째 노드와 관련된 로그 항목을 찾으려면 ID 문자열
hcfh를 사용하여 로그를 쿼리합니다.
노드에 직접 연결
노드의 IP 주소를 알게 되면 해당 노드의 PostgreSQL 서버에 직접 연결할 수 있습니다. 예를 들어 psql을 사용하여 클러스터의 VPC에 있는 VM에 연결하려면 psql 클라이언트 실행의 안내를 따르세요. 해당 작업을 수행할 때는 읽기 풀 인스턴스의 IP 주소가 아닌 노드의 IP 주소를 제공하세요.
psql -h NODE_IP_ADDRESS -U USERNAME로그에서 노드 활동 찾기
AlloyDB는 읽기 풀에서 처리된 쿼리에 대한 로그 항목에 노드 ID를 포함합니다. 일반적으로 검색된 ID는 다음 두 가지 방법으로 사용할 수 있습니다.
- 노드에 연결할 수 있도록 노드의 IP를 확인합니다.
- 로그 쿼리를 추가로 실행하여 노드의 최근 활동에 대해 자세히 알아봅니다.
알려진 쿼리를 처리하는 노드 확인
특정 읽기 풀에서 장기 실행 쿼리를 처리하고 있음을 알고 있는 경우 로그 탐색기를 사용하면 해당 쿼리를 처리하는 특정 노드의 ID를 확인할 수 있습니다.
이 기법은 pgAudit 확장 프로그램을 사용 설정한 읽기 풀 인스턴스에서만 작동합니다.
로그 탐색기 방문하기:
쿼리 빌더에서
resource.labels.instance_id="READ_POOL_ID"를 쿼리 편집기 필드에 추가하고 READ_POOL_ID를 읽기 풀 인스턴스의 이름으로 바꿉니다.조사 중인 SQL 문을 전체 또는 일부로 쿼리 편집기 필드에 추가합니다. 예를 들면
select id from MyTable입니다. 이 입력은 대소문자를 구분하지 않습니다.쿼리 실행을 클릭합니다.
로그 탐색기의 컨트롤을 사용하여 필요에 따라 쿼리를 조정하고 다시 실행하여 결과를 가장 관련성 높은 항목으로 필터링하세요.
결과 목록에서 로그 항목을 클릭하여 해당 항목의 표시를 펼칩니다.
항목의 펼쳐진 표시의
labels필드를 클릭합니다.labels아래의NODE_ID값을 확인합니다.
결과는 쿼리를 처리하는 노드의 4자리 식별자입니다.
로그 항목에 언급된 노드에 연결
기록된 활동을 기반으로 특정 노드의 PostgreSQL 서버에 직접 연결하려면 다음 단계를 따르세요.
로깅된 노드의 4자리 ID 문자열을 확인합니다. 이 ID는 로그 항목의
NODE_ID필드에서 확인할 수 있습니다.읽기 풀의 노드를 나열합니다.
이 목록에서 첫 번째 단계에서 확인한 4자리로 끝나는 ID 문자열이 있는 노드를 찾습니다. 나열된 노드 중 일치하는 노드가 하나도 없을 수 있습니다.
일치하는 노드를 찾은 경우 일치하는 IP 주소를 사용하여 해당 노드의 PostgreSQL 서버에 연결합니다.
그렇지 않으면 이전 단계에서 나열된 읽기 풀의 노드 중 어느 것도 로깅된 노드와 일치하는 ID를 가지지 않는 경우, 읽기 풀에서 원래 로그 항목 이후 경과한 시간 동안 해당 노드를 사용 중단한 것입니다. 이는 노드 일시성에 관한 참고사항에 설명된 대로 AlloyDB 읽기 풀의 정상적인 동작입니다. 이 경우 해당 노드에 직접 연결할 수 없습니다.
노드의 PostgreSQL 서버에 연결하면 pg_stat_activity와 같은 표준 PostgreSQL 모니터링 기법을 사용하여 해당 노드의 현재 프로세스를 추가로 조사하고 필요에 따라 조정할 수 있습니다.
노드에 관한 로그 항목 더 보기
특정 ID가 있는 노드에 관한 최근 로깅된 활동을 보려면 다음을 실행하세요.
로그 탐색기 방문하기:
로그 탐색기 쿼리 빌더에
labels.NODE_ID=NODE_ID를 추가하고 NODE_ID를 노드의 4자리 ID 문자열로 바꿉니다.쿼리 실행을 클릭하여 선택한 기간 내 해당 노드의 모든 활동을 확인하거나 쿼리를 조정하여 추가로 필터링합니다.
필요에 따라 이전 단계를 반복하여 검색을 미세 조정합니다.
노드 측정항목 모니터링
AlloyDB 시스템 통계 대시보드에서 개별 노드와 연결된 측정항목을 볼 수 있습니다. 사용 가능한 노드 측정항목에 대한 자세한 내용은 시스템 통계 측정항목 참조를 참조하세요.
특정 읽기 풀 인스턴스와 연결된 노드 ID를 알아보려면 읽기 풀의 노드 세부정보 나열을 참조하세요.
이러한 AlloyDB 측정항목 및 기타 측정항목에 대한 전체 참고 문서는 'Google Cloud 측정항목'의 alloydb을 참조하세요.
노드 일시성에 대한 참고사항
임시 조사 또는 디버깅 목적으로 노드에 안전하게 연결할 수 있지만 읽기 풀을 사용하는 애플리케이션은 항상 클러스터가 인스턴스 목록에 표시하는 IP 주소를 사용하여 인스턴스 수준에서 해당 풀에 연결해야 합니다.
AlloyDB는 읽기 풀의 노드를 일시적이고 서로 바꿔서 사용할 수 있는 리소스로 취급합니다. 서비스는 읽기 풀 인스턴스의 부하 분산과 응답성을 유지하기 위해 필요할 때마다 읽기 풀의 노드 명단을 변경합니다. 읽기 풀 인스턴스가 아닌 읽기 풀 노드에 직접 연결되는 애플리케이션은 AlloyDB에서 인스턴스의 노드 목록을 업데이트할 때마다 데이터베이스와의 연결이 갑작스럽게 끊어질 위험이 있습니다.
항상 애플리케이션이 인스턴스 수준에서 읽기 풀에 연결되도록 하고 AlloyDB가 쿼리를 적절한 노드로 효율적으로 라우팅하는 작업을 수행하도록 합니다.
다음 단계
- 로그 탐색기 사용에 대해 자세히 알아보기