본문으로 건너뛰기

PostgreSQL 모니터링

이제 참고 문서 내용을 모두 확인했습니다. 이전 대화의 답변이 문서와 일치하는지 확인 완료되었으며, 문서 기반으로 최신 정보를 반영한 종합 답변을 드리겠습니다.


exemONE PostgreSQL 모니터링 상세 가이드


1. 지원 버전

  • PostgreSQL 9.6 이상

참고: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3099678


2. 필수 권한

기본 모니터링 권한

-- PostgreSQL 10 버전 이상 (superuser 권한 부여가 어려운 경우)
grant pg_monitor to exemone;

-- PostgreSQL 10 버전 미만
alter user exemone with superuser;

-- SQL 데이터 수집 (database2, search_path 옵션에 입력된 db, schema)
GRANT USAGE ON SCHEMA {schema 명} TO exemone;
GRANT connect ON database {database 명} TO exemone;

-- Plan 조회
GRANT USAGE ON SCHEMA {schema 명} TO exemone;
GRANT select ON {schema 명}.{table 명} TO exemone;

Session Kill 권한

grant pg_signal_backend to exemone;

-- AWS RDS 환경
alter user exemone with superuser;
grant rds_superuser to exemone;

참고: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-2845098


3. 사전 설정

3-1) 파라미터 설정 (DB 재기동 필요)

track_functions = 'pl'
-- 사용자 정의 함수(PL/pgSQL)에 대한 성능 정보 수집 활성화 (기본값: none)

shared_preload_libraries = 'pg_stat_statements'
-- SQL 실행 정보를 수집하기 위한 확장 모듈 로드 (기본값: null)

3-2) SQL 실행 정보 수집 설정

\c [모니터링 대상 dbname]
-- 설치한 database를 exemONE Setting > Database > Custom Configuration > database2 옵션에 입력 필요
-- public이 아닌 경우 search_path 옵션에도 입력 필요

-- pg_stat_statements 확장 기능 생성
create extension pg_stat_statements;

-- SQL Text 길이 제한 옵션 (PostgreSQL 재기동 필요)
-- 변경 필수는 아니며, SQL Text를 길게 보고 싶은 경우 변경 필요
-- 기본값: 1024, 권장: 1048576
-- 단, pg_stat_statements.max(default 1000) * track_activity_query_size 바이트 만큼의 공유 메모리 사용량 발생하므로 변경 시 주의 필요
track_activity_query_size

참고: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3099698

3-3) Custom Configuration 옵션

옵션설명
postgresql.database2모니터링 설정 database와 pg_stat_statements가 설치된 database가 다른 경우 SQL 데이터 수집을 위해 설정
postgresql.set_search_path모니터링 대상 DB의 search_path에 적용 (db-agent v3.0.508.51 이후) / database2의 search_path에 적용 (v3.0.508.51 이전)
postgresql.set_search_path2database2의 search_path에 적용. SqlMessage, Plan 조회 시 사용 (db-agent 3.0.508.51, api 3.0.508.109 이상)

참고: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3203758

3-4) SSL 설정 (필요 시)

클라이언트 SSL mode는 require, verify-ca, verify-full 설정 값으로 지정합니다.

SSL Mode설명인증서 파일
requireSSL 암호화, 서버 인증서 CA 확인 X불필요
verify-carequire + 서버 인증서 CA 확인서버 공개키 파일 필요
verify-fullverify-ca + 호스트 이름 확인서버 공개키 파일 필요

참고: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3320518


4. 클러스터(인스턴스) 모니터링

exemONE은 PostgreSQL 데이터베이스 클러스터(PostgreSQL 인스턴스) 기준 모니터링을 지원합니다.

필요 모듈 버전

모듈버전
exemone-apiv3.0.508.75
exemone-ingesterv3.0.508.18
exemone-alerterv3.0.508.29
exemone-corev3.0.508.27
exemone-frontv3.0.508.58
exemone-gatewayv3.0.508.3
exemone-receiverv3.0.508.5
exemone-cloud-agentv3.0.508.1
exemone-db-agentv3.0.508.33

4-1) 사전 처리 (기존 모니터링 인스턴스 비활성화)

PostgreSQL 인스턴스 중복 체크 기준이 host, port, database, user이기 때문에 클러스터 등록을 위해서는 기존 모니터링 인스턴스 비활성화 및 DB 이름 변경 후 저장이 필요합니다.

  • 예: ogu_db10 DB가 등록된 경우 → ogu_db10_1 (유효하지 않은 DB명)로 변경 후 저장

4-2) 클러스터 모니터링 등록 단계

  1. Setting > Database > 인스턴스 추가
  2. 인스턴스 정보 입력 후 [리스트 가져오기] 버튼 클릭 → 데이터베이스 목록 확인
    • 기 등록된 인스턴스는 [리스트 가져오기] 버튼 비활성화 상태
  3. 데이터베이스 목록에서 모니터링할 데이터베이스의 사용자 정보 및 모니터링 여부 설정 후 저장 (기본값: 모니터링 비활성화)
    • Default DB 정보 사용 활성화: 위에서 입력한 default DB 계정 정보를 그대로 사용
    • Default DB 정보 사용 비활성화: 데이터베이스 별 사용자 정보 직접 입력

주의사항

  1. 기 등록된 인스턴스가 있는 경우 변경된 기준으로 모니터링하려면 인스턴스 비활성화 또는 삭제 후 클러스터 기준으로 재등록해야 합니다.
  2. 인스턴스 편집 시 모니터링 활성화된 대상만 데이터베이스 목록에 노출됩니다.
  3. Custom Configuration 옵션은 기존과 동일하게 동작합니다.

참고: https://app.clickup.com/25540965/v/dc/rbeb5-403498/rbeb5-3140918


5. 주요 모니터링 항목

5-1) Instance Detail Slide (인스턴스 상세) - 8개 탭

Database > Instance 메뉴에서 PostgreSQL 인스턴스 클릭 시 상세 정보를 확인할 수 있습니다.

주요 내용
InformationAgent 정보(Status, DB Engine, Instance Name, Instance Group Name, Agent Version, DB Version, Last Boot Time, Uptime), Database List(Database Name, Default DB, Status, User), Machine 정보(Host Name, Host IP, OS, Kernel Version)
MetricActive Backend, Connection Ratio, Blks Hit, Blks Read, Locks Waiting, TPS, Checkpoints Req, Current Age, Age Used Ratio, Temp Bytes, (OS) CPU Usage, (OS) Memory Used / Instance ↔ Database 관점 토글 지원
Active SessionPID, User Name, Database Name, App Name, Client Address, Client Host Name, Elapsed Time, SQL ID, Query ID, SQL Text, Wait Event, Wait Event Type, State, Collect Time 등 (Multi Kill 지원)
SQL ListUser Name, Database Name, SQL ID, Query ID, SQL Text, Calls, Total Time, Shared Blocks Read/Hit/Written, Local Blocks Read/Hit/Written, Temp Blocks Read/Written, Block Read/Write Time, Rows, Max/Min Execution Time, Ratio (합계/평균 토글 지원)
Lock InfoPID, Lock Status(Holder/Waiter), Holder PID, User Name, Database Name, SQL Text, Query Start, Collect Time (Multi Kill 지원)
AlertRule Name, Alert Stat Name, Alias, Target, Last Triggered, Rule Type, Last Alert (Normal/Warning/Critical), Threshold, Value / List/Bar 탭 전환 지원
ParameterParameter Name, Current Value
Host Process List호스트 프로세스 목록 조회

참고: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-2690678

5-2) Single View (단일 인스턴스 모니터링)

실시간으로 특정 하나의 데이터베이스에 대해 다양한 관점에서 성능 상태를 확인하는 화면입니다. 고정 영역(Instance 레벨)과 가변 영역(선택된 Database 레벨)으로 구분되며, Database SelectBox를 통해 가변 영역의 데이터베이스를 선택합니다.

영역주요 모니터링 항목
Grouping Summary (고정)Statistics & Event (Top Diff Statistics for 10 min, Top Event for 10 min), SQL & Function (Top SQL, Top Function), Object (Index Scan vs Table Scan, Top Object for 10min), Trend Summary
Overview - Connection View (고정)max_connection 대비 Backends 사용 비율, Long/Lock 상태 Connection 색상 표시
Overview - Core (고정)Alert 발생 카운트, Vacuum (Age 상태), Replication (Primary/Standby 간 차이), Checkpoint (Buffer 비율 및 소요 시간)
Admin ReferenceVacuum (Top Dead Tuple Ratio, Top Vacuuming Process + Database Name), Additional Info (Temp bytes, Parameter Changed, Top Tablespace Size, Old Statistics Objects + Database Name), Alert Logs
Real Time Monitor (가변)Slow Query (Scatter 차트 + Database Name 표시), Trend Chart (4개 주요 성능 지표, 변경 가능)
Session Tab (가변)Active Backends (SQL ID, Query ID 추가), Lock Tree (User Name, Database Name, Holder PID, SQL Text), Session Detail Popup (Session Kill 지원)

참고: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-2690458

5-3) Multi View (다중 인스턴스 모니터링)

다수의 PostgreSQL 서버를 한 화면에서 비교 모니터링할 수 있습니다. Instance 관점에서의 모니터링 화면으로, 각 Instance 레벨의 지표 및 각 Instance의 내부 Database 지표의 합산값을 모니터링할 수 있습니다.

영역주요 모니터링 항목
OverviewCPU, Memory, 주요 성능 지표 (인스턴스 간 비교)
DB Session TypeActive Session, Long Session, Lock Session 상태별 Count
Rank주요 성능 6가지 지표 인스턴스별 순위, 비율, 10분 추이
Vacuum Usage (%)Vacuum Age 사용률, Database Name 포함, Dead Tuple/Age 기준 정렬 지원
Temp Usage (Size)Temp 사용량, User Name, Query ID, Database Name, SQL Text 표시
Filesystem Usage (Size)Object 디스크 사용량, Database Name 포함
Query IO (%)Shared Buffer 데이터 쓰기 비율, User Name, Query ID, Database Name, SQL Text 표시
Transaction Time트랜잭션 실행 시간이 긴 세션
Alert인스턴스별 Alert Level, Type
Real Time MonitorSlow Query (Scatter 차트 + Instance Name/Database Name), Trend Chart
Session TabActive Backends (Database Name, SQL ID, Query ID 추가), Lock Tree (Database Name, User Name, SQL Text, Holder PID 추가)

참고: https://app.clickup.com/25540965/v/dc/rbeb5-416338/rbeb5-2690378

5-4) Performance Analysis (성능 분석)

클러스터 모니터링 시 각 분석 화면에서 Database Name이 함께 표시됩니다.

분석 메뉴설명
SQL Analysis > Top-N Analysis인스턴스에 포함된 데이터베이스 이름과 함께 표시, Grid에 Database Name 추가
SQL Analysis > Search SQLSQL 검색 시 Database Name 함께 표시
Session Analysis > Search Session검색 필터 및 Grid에 Database Name 추가
Performance Analysis > Trend AnalysisBackends, Lock Tree, Vacuum, Top SQL, Scan Ratio, Top Object, Long Active Backends 탭별 Database Name 추가
DataSpace Analysis > Object SizeGrid에 Database Name 추가

요약

exemONE의 PostgreSQL 모니터링은 PostgreSQL 9.6 이상을 지원하며, pg_monitor 또는 superuser 권한과 pg_stat_statements 확장 모듈 설정이 필수입니다. 클러스터(인스턴스) 기준 모니터링으로 하나의 인스턴스에 여러 데이터베이스를 함께 등록·관리할 수 있으며, 개편된 화면에서는 Instance ↔ Database 관점 토글, Database SelectBox, Query ID 등이 추가되어 더 세밀한 모니터링이 가능합니다. Single View/Multi View를 통한 실시간 성능 모니터링, Active Session/Lock/SQL/Vacuum/Replication/Checkpoint 등 다양한 관점의 모니터링과 성능 분석 기능을 제공합니다.