Snowflake Postgres 메트릭¶
Snowflake Postgres는 인스턴스 메트릭을 자동으로 수집하여 계정의 활성 이벤트 테이블 에 저장합니다. 모니터링 에이전트는 메트릭 유형에 따라 약 5~30초마다 메트릭을 샘플링하여 RECORD_TYPE = 'METRIC' 인 SNOWFLAKE.TELEMETRY.EVENTS 이벤트에 씁니다.
이러한 메트릭을 Snowflake에서 직접 쿼리하거나 Grafana 또는 Observe와 같은 외부 가시성 플랫폼으로 전달할 수 있습니다.
참고
이벤트 테이블에서 Postgres 로그 데이터를 쿼리하는 방법에 대한 자세한 내용은 Snowflake Postgres 로깅 섹션을 참조하세요.
사용 가능한 메트릭¶
Postgres 메트릭¶
메트릭 |
타입 |
설명 |
|---|---|---|
|
게이지 |
활성 백엔드 연결 수 |
|
게이지 |
모든 데이터베이스의 총 크기(바이트) |
|
게이지 |
WAL 디렉터리 크기(바이트) |
|
게이지 |
로그 디렉터리 크기(바이트) |
|
게이지 |
임시 파일 크기(바이트) |
|
게이지 |
부여된 잠금 수 |
|
게이지 |
대기 중/차단된 잠금 수 |
|
게이지 |
정수형 Postgres 버전(예: 180003 = 18.0.3) |
Postgres 프로세스 메트릭¶
메트릭 |
타입 |
단위 |
Dimensions |
|---|---|---|---|
|
합계 |
초 |
상태(사용자, 시스템, 대기) process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
합계 |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
합계 |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
참고
각 Postgres 프로세스에는 각 CPU 상태와 process.memory.usage 및 process.memory.virtual 각각에 대해 하나의 process.cpu.time 이 있습니다.
process.* 차원 특성은 각 행의 resource_attributes 열에서 찾을 수 있습니다. 다른 메트릭의 state 와 마찬가지로, state 차원 특성은 record_attributes 열에 있습니다.
CPU 메트릭¶
메트릭 |
타입 |
단위 |
Dimensions |
|---|---|---|---|
|
합계 |
초 |
상태: 사용자, 시스템, 대기, 유휴, 양호, 인터럽트, softirq, cpu 도용: cpu# |
|
게이지 |
스레드 |
-– |
|
게이지 |
스레드 |
-– |
|
게이지 |
스레드 |
-– |
참고
각 CPU#(예: cpu0 및 cpu2)는 각 CPU 상태에 대해 하나의 system.cpu.time 이 있습니다.
system.cpu.time 은 누적 카운터입니다. 백분율을 얻으려면 연속 샘플 간의 델타를 계산하고 경과 간격으로 나눕니다.
메모리 메트릭¶
메트릭 |
타입 |
단위 |
Dimensions |
|---|---|---|---|
|
합계 |
bytes |
상태: 사용됨, 사용 가능, 캐시됨, 버퍼링됨, slab_reclaimable, slab_unreclaimable |
참고
각 주에 대한 하나의 system.memory.usage 행입니다.
디스크 메트릭¶
메트릭 |
타입 |
단위 |
Dimensions |
|---|---|---|---|
|
합계 |
bytes |
마운트 지점, 디바이스, 상태(사용됨, 사용 가능), 유형, 모드 |
참고
각 주에 대한 하나의 system.filesystem.usage 행입니다.
네트워크 메트릭¶
메트릭 |
타입 |
단위 |
Dimensions |
|---|---|---|---|
|
합계 |
bytes |
디바이스, 방향(전송, 수신) |
참고
각 디바이스(‘eth0’ 및 ‘lo’)에는 각 방향에 대해 하나의``system.network.io`` 가 있습니다.
페이징 메트릭¶
메트릭 |
타입 |
단위 |
Dimensions |
|---|---|---|---|
|
합계 |
bytes |
디바이스, 상태(사용됨, 사용 가능) |
참고
각 주에 대한 하나의 system.paging.usage 행입니다.
리소스 특성¶
모든 메트릭 행에는 RESOURCE_ATTRIBUTES 에 다음 필드가 포함됩니다.
속성 |
설명 |
예 |
|---|---|---|
|
Postgres 인스턴스 식별자 |
|
|
서버 호스트 이름 |
|
|
EC2 인스턴스 ID |
|
|
인스턴스 패밀리 |
|
|
AWS 리전 |
|
|
가용 영역 |
|
|
항상 |
|
|
항상 |
|
메트릭 쿼리하기¶
주어진 Snowflake Postgres 인스턴스는 기본 서버 및 해당 HA 서버 또는 인스턴스의 유지 관리 기간이 제자리로 전환되기를 기다리는 서버나 업그레이드 대체와 같이 주어진 시간에 실행 중인 여러 서버가 있을 수 있습니다. 이러한 각 서버는 인스턴스의 지정된 instance_id 에 대한 메트릭을 보고하므로 인스턴스의 현재 활성 서버에 대한 서버 host_name 도 필요합니다.
Postgres 인스턴스의 instance_id 를 찾으려면 DESCRIBE POSTGRES INSTANCE 를 사용합니다.
인스턴스의 instance_id 는 반환된 host 값의 첫 번째 세그먼트입니다(첫 번째 마침표 이전의 모든 항목).
참고
SHOW POSTGRES INSTANCES 명령 출력의 host 열을 사용하여 계정에서 실행 중인 모든 Snowflake Postgres 인스턴스에 대한 인스턴스 호스트 값을 확인할 수 있습니다.
인스턴스의 현재 서버 host_name 을 찾으려면 인스턴스의 host 값에 대해 간단한 DNS CNAME 조회를 사용합니다.
반환된 host 값이 ‘4jypgsndvzd5ta6ufaryx6owja.sfengineering-pgtest.preprod.us-west-2.aws.postgres.snowflake.app’이라고 가정해 보겠습니다(따라서 인스턴스의 instance_id 는 ‘4jypgsndvzd5ta6ufaryx6owja’임).
다음은 dig CLI 유틸리티를 사용하여 DNS CNAME 조회를 수행하는 예제입니다.
다음은 Python의 dns.resolver 모듈을 사용하는 예제입니다.
host_name 값은 위의 예제에서 반환된 값 ‘df6m4y5m5fgfpb5idy2pj67xrm’의 첫 번째 세그먼트입니다.
다음 쿼리는 지난 5분 동안 수집된 각 메트릭에 대한 가장 최근 값을 반환합니다.
참고
위의 쿼리는 계정 기본 이벤트 테이블인 SNOWFLAKE.TELEMETRY.EVENTS 를 사용합니다. 사용자 지정 이벤트 테이블을 설정한 경우 쿼리를 적절하게 조정합니다.
메트릭 쿼리 예제¶
활성 연결¶
상태별 메모리 사용량¶
CPU 로드 평균¶
데이터베이스 크기¶
외부 도구로 메트릭 전달하기¶
메트릭은 표준 Snowflake 테이블에 저장되므로 Snowflake 연결을 지원하는 모든 가시성 플랫폼으로 전달할 수 있습니다. 특정 도구를 사용한 단계별 설정은 다음을 참조하세요.