NRDOT Collector는 광범위한 PostgreSQL 메트릭을 보고합니다. 뉴렐릭은 기본 메트릭의 메트릭을 자동으로 수집합니다. 성능 및 상태에 대한 더 깊은 인사이트를 얻으려면 추가 메트릭에 나열된 메트릭을 활성화하십시오.
팁
각 메트릭은 특정 데이터베이스, 테이블, 스키마 또는 인덱스로 범위가 지정됩니다. 이 컨텍스트는 메트릭 속성이 아닌 리소스에 설정됩니다.
이러한 메트릭은 자동으로 수집되어 즉시 사용 가능한 대시보드를 포함한 뉴렐릭 UI를 구동합니다.
미터법 | 설명 | 유닛 | 유형 | 속성 |
|---|---|---|---|---|
| 백앤드 연결 수 |
| 합계(누적, int) | — |
| 할당된 버퍼 수 |
| 합계(누적, int, 단조) | — |
| 기록된 버퍼 수입니다. |
| 합계(누적, int, 단조) |
(백앤드, backend_fsync, checkpoints, bgwriter) |
| 수행된 체크포인트 수 |
| 합계(누적, int, 단조) |
(요청됨, 예약됨) |
| 체크포인트가 디스크에 파일을 쓰고 동기화하는 데 소요된 총 시간 |
| 합계(누적, double, 단조) |
(동기화, 쓰기) |
| 백그라운드 기록기가 이미 너무 많은 버퍼를 기록하여 정리 스캔을 중지한 횟수 |
| 합계(누적, int, 단조) | — |
| 읽은 블록 수 |
| 합계(누적, int, 단조) |
|
| 커밋 수 |
| 합계(누적, int, 단조) | — |
| 허용되는 클라이언트 연결의 최대 수입니다. |
| 게이지(int) | — |
| 사용자 데이터베이스 수입니다. |
| 합계(누적, int, 비단조) | — |
| 데이터베이스 디스크 사용량 |
| 합계(누적, int, 비단조) | — |
| 테이블의 인덱스 스캔 수 |
| 합계(누적, int, 단조) | — |
| 디스크의 인덱스 크기 |
| 게이지(int) | — |
| 데이터베이스 행 작업 수 |
| 합계(누적, int, 단조) |
(삽입, 업데이트, 삭제, 핫 업데이트) |
| 복제 시 지연된 데이터 양 |
| 게이지(int) |
|
| 롤백 수입니다. |
| 합계(누적, int, 단조) | — |
| 데이터베이스의 행 수 |
| 합계(누적, int, 비단조) |
(데드, 라이브) |
| 데이터베이스의 사용자 테이블 수 |
| 합계(누적, int, 비단조) | — |
| 테이블이 사용하는 디스크 공간 |
| 합계(누적, int, 비단조) | — |
| 테이블에 수동으로 vacuum을 실행한 횟수 |
| 합계(누적, int, 단조) | — |
| 가장 오래된 WAL 파일의 경과 시간입니다. 최소 하나의 복제본이 있는 상태에서 WAL을 활성화해야 합니다 |
| 게이지(int) | — |
| 최근 WAL을 로컬로 플러시하고 대기 서버가 작업을 완료했다는 공지를 받을 때까지의 시간입니다. WAL+최소 1개의 복제본이 필요합니다. |
| 게이지(int) |
(flush, replay, write),
|
추가 지표
다음 메트릭은 기본적으로 비활성화되어 있지만 PostgreSQL 성능 및 상태에 대한 더 깊은 인사이트를 얻기 위해 활성화할 수 있습니다. 이러한 메트릭은 기능별로 구성됩니다.
기본 제공되는 PostgreSQL 엔티티 대시보드는 명시적으로 활성화해야 하는 다음 추가 메트릭을 사용합니다:
미터법 | 설명 | 유닛 | 대시보드 위젯 | 추가 요구 사항 |
|---|---|---|---|---|
| 데이터베이스 잠금 수입니다. |
| 모드/유형별 데이터베이스 잠금 | — |
| 교착 상태 수입니다. |
| 교착 상태 | — |
| 함수에 대한 호출 수 |
| 함수 호출/분 | 다음에서
이(가) 필요합니다
|
| 복구 충돌로 인해 취소된 쿼리입니다. 대기 전용, 프라이머리에서는 0 |
| 쿼리 충돌 | — |
| 순차 스캔 수 |
| 순차 스캔/분 | — |
| 쿼리에 의해 임시 파일에 기록된 총 데이터입니다. |
| 임시 파일 및 임시 I/O(MB/분) | — |
| 임시 파일 수입니다. |
| 임시 파일 및 임시 I/O(MB/분) | — |
대시보드에서 사용되지 않는 추가 데이터베이스 활동 메트릭:
미터법 | 설명 | 유닛 | 속성 |
|---|---|---|---|
| 버퍼 캐시에서 이미 발견된 디스크 블록 |
| — |
| 이 데이터베이스에서 읽은 디스크 블록 |
| — |
| 데이터베이스의 쿼리에서 가져온 행 수 |
| — |
| 데이터베이스의 쿼리에서 반환된 행 |
| — |
| 데이터베이스의 쿼리에 의해 삽입된 행 |
| — |
| 데이터베이스의 쿼리에 의해 업데이트된 행 |
| — |
| 데이터베이스의 쿼리에 의해 삭제된 행입니다. |
| — |
| 데이터베이스에 대해
이(가) 추적한 SQL 문의 총 실행 시간 |
| — |
미터법 | 설명 | 유닛 | 속성 |
|---|---|---|---|
|
기능 게이트 뒤에 있는
에 대한 정확한 대체입니다. |
|
,
|
벡터 유사도 검색 메트릭에는 PostgreSQL 13+와 pg_stat_statements 및 pgvector 확장이 필요합니다:
미터법 | 설명 | 유닛 | 속성 |
|---|---|---|---|
| 거리 함수별로 그룹화된 벡터 유사도 검색 실행 |
|
|
| 벡터 검색의 누적 실행 시간 |
|
|
| 벡터 검색에서 반환된 누적 행 수 |
|
|
| pgvector 테이블에 삽입된 벡터입니다. |
| — |
| pgvector 삽입의 누적 실행 시간 |
| — |
쿼리 이벤트
다음 이벤트는 기본적으로 비활성화되어 있지만 쿼리 수준의 텔레메트리 데이터를 수집하도록 활성화할 수 있습니다.
현재 실행 중인 데이터베이스 문에 대한 실시간 가시성입니다 — 전체 실행 로그가 아니라 스크랩할 때마다 생성되는 특정 시점의 스냅샷입니다. 이 이벤트는 기본적으로 비활성화되어 있으며 모니터링 사용자가 pg_monitor을(를) 보유해야 합니다.
기인하다 | 설명 |
|---|---|
| 데이터베이스 이름입니다. 이것은 항상
|
| SQL 문 텍스트 |
/
| APM 상관관계 주석 태그입니다. 자세한 내용은 을 참조하십시오. |
| 교차 엔진 상관관계를 위한 정규화된 SQL의 MD5 |
| 이 백앤드에 로그인한 사용자 |
| 백앤드의 현재 전반적인 상태 |
| 이 백앤드의 프로세스 ID |
| 백앤드/연결이 시작된 UTC(RFC3339) 타임스탬프. 모든 쿼리마다 변경되는
과(와) 달리 연결 수명 동안 안정적입니다. |
| 백앤드 시작 이후 경과된 전체 초입니다.
을(를) 사용할 수 없는 경우
|
| 연결된 애플리케이션 이름 |
/
| 클라이언트 IP 주소/TCP 포트 |
| 클라이언트의 역방향 DNS 호스트명 |
| 현재 활성(또는 마지막) 쿼리가 시작된 시간 |
/
| 백앤드가 현재 대기 중인 경우 대기 이벤트 이름/카테고리입니다. |
| 이 백앤드의 가장 최근 쿼리 식별자 |
| 델타 밀리초 단위의 쿼리 기간입니다. |
| 이 세션을 차단하는 PID 어레이입니다. 차단되지 않은 경우 비어 있습니다. |
| 현재 잠금 대기가 시작된 UTC 타임스탬프입니다. 차단되지 않은 경우 비어 있습니다. |
| 잠금을 위해 대기한 전체 초입니다. 차단되지 않은 경우
입니다. |
/
/
| 대기 중인 잠금 모드/리소스 유형/관계 이름. 차단되지 않은 경우 비어 있습니다. |
| 현재 트랜잭션이 시작된 UTC 타임스탬프입니다. 활성 트랜잭션이 없는 경우 비어 있습니다. |
마지막 수집 주기 이후 증분(델타) 값으로 보고된 pg_stat_statements의 정규화된 쿼리별 집계 실행 통계입니다. 이 이벤트는 기본적으로 비활성화되어 있으며 스캔된 모든 데이터베이스에 pg_stat_statements 확장 프로그램이 필요합니다.
기인하다 | 설명 |
|---|---|
| 데이터베이스 이름입니다. 이것은 항상
|
| SQL 명령문 텍스트(정규화됨,
/
플레이스홀더) |
/
|
와(과) 동일합니다. 참고: 먼저 실행된 호출자를 반영합니다 ―
은(는) 쿼리 구조에서만
을(를) 해시하고 첫 번째 실행 시 저장된 텍스트(주석 포함)를 고정합니다. |
| 교차 엔진 상관관계를 위한 정규화된 SQL의 MD5 |
/
| 실행 횟수/검색-영향을 받은 행, 델타 값 |
/
/
/
| 공유 블록 활동, 델타 값 |
/
| 임시 블록 활동, 델타 값 |
| 동일한 정규화된 쿼리를 식별하는 해시 |
| 쿼리를 실행한 역할입니다. |
/
| 총 실행/계획 시간, 델타 밀리초 |
| 얻을 수 있는 경우 명령문에 대한 EXPLAIN 계획 ― 아래의 EXPLAIN 메커니즘을 참조하십시오. |
실행 계획 수집(EXPLAIN) 메커니즘
- 속도 제한:
top_query_collection.max_explain_each_interval(기본값 1,000)은 스크랩당 EXPLAIN을 제한합니다. - 캐싱:
query_plan_cache_size/query_plan_cache_ttl(기본값 1,000개 항목/1시간)은 한 번 얻은 계획을 쿼리 ID를 키로 사용하여 캐시합니다. - PostgreSQL 12+ 요구 사항: 매개변수화된 쿼리 EXPLAIN은
PREPARE/EXPLAIN EXECUTE앞에plan_cache_mode = force_generic_plan이(가) 필요합니다 ― PostgreSQL 12+에서만 사용할 수 있습니다. 이전 서버에서는 수신자가 버전을 감지하고 실패할SET을(를) 보내는 대신 해당 쿼리에 대한 EXPLAIN을 건너뜁니다. - 권한 경계: 기본적으로 EXPLAIN은 모니터링 사용자로 직접 실행되며, Postgres는 계획 시점에 테이블 권한을 확인합니다. ― 따라서 모니터링 사용자가 절대 가져서는 안 되는 쓰기 액세스 권한이 부여되지 않는 한, 행 잠금 또는 쓰기 명령문은
permission denied(으)로 실패합니다. 쓰기 액세스 권한을 부여하지 않고 이 문제를 해결하려면explain_function_name(EXPLAIN 계획 권한 참조)을(를) 사용하십시오. - 어떤 이유로든 계획을 얻을 수 없는 경우 해당 행에 대해
postgresql.query_plan은(는) 단순히 비어 있으며 ― 오류가 표시되지 않습니다.