PostgreSQL 계측

PostgreSQL에서 수집할 수 있는 텔레메트리는 데이터베이스를 직접 운영하는지, 클라우드 관리형 서비스를 사용하는지에 따라 달라집니다. 두 환경의 수집 경로와 확보 가능한 속성을 정리합니다.

SDK 계측은 데이터베이스를 외부에서 관측합니다. 애플리케이션의 pg 클라이언트는 쿼리 실행에 12ms가 소요되었다는 사실만 기록하며, 해당 구간 내부의 처리 과정은 포함하지 않습니다. 내부 처리를 관측하려면 데이터베이스가 직접 텔레메트리를 전송해야 하며, 가능 여부는 데이터베이스의 운영 주체에 따라 달라집니다.

postgres-telemetry

배포 형태별 수집 범위

자체 운영클라우드 관리형
서버 측 스팬 (실행계획)pg_tracing 확장수집 불가
클라이언트 스팬 (쿼리 단위)백엔드 SDK백엔드 SDK
쿼리 통계 메트릭pg_stat_statementspg_stat_statements
데이터베이스 로그파일 직접 수집클라우드 로그 채널
설정 위치서버 인자 및 수집기애플리케이션 및 수집기

관리형 서비스에서 서버 측 스팬을 수집할 수 없는 것은 제공자의 정책에 따른 제약입니다. pg_tracingshared_preload_libraries에 등록해야 동작하는 C 확장이며, AWS RDS·Aurora, Google Cloud SQL, Azure Database는 모두 서드파티 확장의 사전 로드를 허용하지 않고 지원 확장 목록에도 포함하지 않습니다. 우회할 수 있는 방법은 없습니다.

다만 관리형 환경에서도 클라이언트 스팬과 쿼리 통계는 동일하게 수집할 수 있습니다. 느린 쿼리를 식별하고 성능 회귀를 감지하는 목적에는 이 두 가지로 충분한 경우가 많습니다. 확보할 수 없는 것은 해당 쿼리가 느린 원인에 대한 실행계획 수준의 정보입니다.

신호별 확보 가능한 속성

세 경로는 동일한 데이터를 서로 다른 형태로 제공하는 것이 아니라, 각기 다른 정보를 제공합니다.

속성서버 스팬로그쿼리 통계
쿼리문제공제공정규화된 형태
소요 시간실행계획 노드 단위문장 단위합계 및 평균
실행계획 노드제공미제공미제공
트레이스 연결부모·자식 관계로 직접주석 파싱을 통한 결합미제공
쿼리 ID제공제공제공
데이터베이스명미제공제공접속 단위
접속 사용자미제공제공제공
클라이언트 주소미제공제공미제공
트랜잭션 ID미제공제공미제공
백엔드 유형미제공제공미제공
오류·락·체크포인트미제공제공미제공
샘플링되지 않은 쿼리미제공제공제공

서버 스팬은 트레이스 폭포 뷰에 데이터베이스 구간을 포함시키는 유일한 경로입니다. 로그는 가장 넓은 속성 집합을 제공하며, 샘플링 여부와 관계없이 모든 문장을 기록합니다. 쿼리 통계는 개별 요청을 설명하지 않는 대신 시간에 따른 변화를 제공합니다.

세 경로는 배타적이지 않습니다. 자체 운영 환경에서는 서버 스팬과 쿼리 통계를 함께 활성화하는 구성이 일반적입니다.

NOTE — 샘플링은 호출자가 결정합니다

서버 스팬은 샘플링된 traceparent와 함께 전달된 쿼리만 기록합니다. 유휴 상태의 데이터베이스나 배치 작업에서 스팬이 생성되지 않는 것은 정상 동작입니다. 전 구간을 누락 없이 수집해야 하는 경우에는 로그나 쿼리 통계를 사용하세요.

참고 문서