본문으로 건너뛰기

exemONE PostgreSQL 모니터링 기능 상세 설명

1. 지원 버전

항목내용
최소 지원 버전PostgreSQL 9.6 이상

2. 필수 권한

기본 모니터링 권한

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

-- PostgreSQL 10 버전 미만
ALTER USER exemone WITH SUPERUSER;

SQL 데이터 수집 권한

database2, search_path 옵션에 입력된 DB 및 스키마에 대해 아래 권한 필요

-- 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 권한

-- 일반 PostgreSQL
GRANT pg_signal_backend TO exemone;

-- AWS RDS 환경
ALTER USER exemone WITH SUPERUSER;
GRANT rds_superuser TO exemone;

3. 사전 설정 사항

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

postgresql.conf에 아래 파라미터를 설정합니다.

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

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

주의: 위 설정 변경 후 반드시 PostgreSQL 재기동이 필요합니다.


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

모니터링 대상 DB에 접속하여 아래 설정을 수행합니다.

-- 모니터링 대상 database로 접속
-- 해당 database명은 엑셈원 Setting > Database > Custom Configuration > database2 옵션에 입력 필요
-- public이 아닌 schema를 사용하는 경우, search_path 옵션에도 입력 필요
\c [모니터링 대상 dbname]

-- pg_stat_statements 확장 기능 생성
CREATE EXTENSION pg_stat_statements;

-- (선택) SQL text 길이 제한 옵션 - PostgreSQL 재기동 필요
-- 기본값: 1024 / 권장값: 1048576
-- 단, pg_stat_statements.max(기본: 1000) × track_activity_query_size 바이트만큼 공유 메모리 사용 증가 → 변경 시 주의
track_activity_query_size = 1048576

3-3. exemONE 모니터링 옵션 설정

경로: Setting > Database > Custom Configuration

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

4. Single View (PostgreSQL)

Single View는 실시간으로 특정 하나의 데이터베이스에 대해 다양한 관점에서 성능 상태를 확인할 수 있는 화면입니다.

주요 기능 개요

  • CPU 및 Connection 정보 확인
  • Slow Query 분석
  • 데이터베이스 성능 지표의 Trend 확인
  • 최근 10분 동안 급증한 SQL, Event 지표 확인
  • Table/Index Scan 비율 확인
  • 사용자 Alert, Vacuum, Replication, Checkpoint 등 주요 관리 포인트 확인
  • Temp, Tablespace Size, 변경된 Parameter, 통계정보 등 추가 관리 포인트 확인

Single View 화면 Single View 화면2

화면 구성

순번항목내용비고
1Grouping Summary데이터베이스 지표, Event통계, SQL 실행 정보, Object scan type별 집계 등 다양한 관점의 집계된 데이터를 통해 장애 원인을 추적할 수 있습니다.[고정 영역] 헤더 > Database 선택과 관계 없이 인스턴스 레벨의 데이터를 표현합니다. Instance 레벨의 수집 지표 및 하위 Database 지표의 합산 값
-Overview데이터베이스 전체 Connection에 대한 사용 패턴과 각 사용 상태에 대한 Backends 정보, CPU, Memory 사용률을 제공합니다.
2Real Time Monitor데이터베이스의 활동성 및 지연에 관한 지표들을 이용하여 Chart 형식의 모니터링을 할 수 있습니다. 기본적으로 4개의 주요 성능 지표에 대해 모니터링이 가능하며, 시스템 및 업무 특성에 따라 원하는 성능 지표로 변경 및 확장이 가능합니다.[가변 영역] 헤더에서 선택한 Database에 대한 데이터를 표현합니다.
3Session TabSingle View 화면 하단 Session Tab 버튼을 클릭하면 슬라이드 아웃 형태로 Backend 목록을 확인할 수 있습니다. Overview나 Trend Chart를 통해 데이터베이스의 비정상적인 상태를 인지했을 때, Active Backends, Lock Backends 정보를 확인하여 원인이 되는 Backends를 찾을 수 있고, 필요하다면 강제로 종료할 수 있습니다.
4Database SelectBoxInstance 내 포함된 Database 중 Real Time Monitor(가변 영역) 모니터링 대상 Database를 선택합니다.

4-1) Grouping Summary

데이터베이스 지표, Event통계, SQL 실행 정보, Object scan type별 집계 등 다양한 관점의 집계된 데이터를 통해 장애 원인을 추적합니다.

Statistics & Event

Overview나 Trend 항목에서 비정상적인 상황을 인지했을 때, 최근 급증한 데이터베이스 지표를 확인하여 원인을 추적할 수 있습니다.

  • Statistics: PostgreSQL에서 제공하는 성능 관련 지표
  • Event: PostgreSQL에서 제공하는 대기 관련 지표

Top Diff Statistics(Sum) for 10 min 최근 10분 데이터를 비교하여 변화량을 기준으로 비율이 가장 높은 지표 Top 5를 보여줍니다. 지표명/변동 비율/변동값 순으로 정보를 확인할 수 있습니다.

Statistics & Event


5. Multi View (PostgreSQL)

Multi View는 다수의 PostgreSQL 서버를 모니터링할 수 있는 화면입니다. 하나의 데이터베이스가 선택되면 Overview, DB Session Type, Rank 등 선택된 데이터베이스의 데이터만으로 변경되어 단일 데이터베이스에 대한 집중적인 모니터링이 가능합니다. 상단 브레드크럼을 이용하여 폴더 변경이 가능합니다.

Multi View는 Instance 관점에서의 모니터링 화면으로, 각 Instance 레벨의 지표 및 각 Instance의 내부 Database 지표의 합산값을 모니터링할 수 있습니다.

Multi View 화면

5-1) Overview

폴더에 속한 인스턴스의 CPU, Memory, 주요 성능 지표를 함께 확인할 수 있습니다. 목록에서 인스턴스 클릭 시 선택한 인스턴스가 하이라이트 되며, 다른 지표들도 선택한 인스턴스의 데이터를 하이라이트로 볼 수 있습니다.

Overview


5-2) DB Session Type

Active Session, Long Session, Lock Session을 색상으로 구분하여 실시간으로 각 Session 상태의 Count를 확인할 수 있습니다.

DB Session Type


5-3) Rank

주요 성능 6가지를 선별하여 직관적인 모니터링이 가능합니다. 타이틀 클릭 시 인스턴스 별 순위, 등록된 인스턴스들의 성능 데이터를 비교하여 인스턴스 별 비율과 10분 추이를 확인할 수 있습니다.

Rank

Vacuum Usage(%)

Vacuum age 사용률을 보여줍니다. 인스턴스 클릭 시 Dead Tuple 수가 높은 Object를 확인할 수 있는 'Top 10 Object List' 팝업창으로 연계됩니다.

"Top 10 Object List" 우측 상단 Order by 리스트에서 항목 별 (Scan Count, Scan Ratio, Age, Dead Tuple Ratio, Analyze Time) 내림차순으로 정렬할 수 있습니다.

Vacuum Usage

Top 10 Object List Grid

순번항목내용
1Rank순위
2Schema NameSchema 이름
3Object NameObject 이름

6. Instance Detail Slide (PostgreSQL)

Instance Detail Slide는 PostgreSQL 인스턴스의 상세 정보를 탭 형식으로 확인하는 화면입니다.

1) Information 탭

Instance Detail Slide(PostgreSQL)의 Information을 확인하는 화면입니다.

순번항목설명
1AgentAgent 정보를 보여줍니다.
- Instance Name : Instance 이름
- Instance Group Name : exemONE에 등록된 Instance 그룹 이름
- Agent Version : Agent 버전
- DB Version : DBMS 버전
- Last Boot Time : Agent가 기동된 Time
- Uptime : Agent가 실행된 후부터 현재까지의 Time(일)
2MachineMachine 정보를 보여줍니다.
- Host Name : Machine의 호스트 이름
- Host IP : Machine의 호스트 IP
- OS : Machine의 운영체제 정보
- Kernel Version : Machine의 커널 버전
3EnvironmentEnvironment 정보를 보여줍니다.
복사 아이콘 클릭 시 텍스트가 복사됩니다.

2) Metric 탭

Instance Detail Slide(PostgreSQL)의 Metric을 확인하는 화면입니다.

순번항목설명
1Global Time실시간을 포함한 최근 데이터를 모니터링합니다. Default 최근 5분 데이터를 보여줍니다.
2Instance StatDatabase 타입 PostgreSQL의 Instance 지표를 보여줍니다.
- Active Backend : Active Backend 수
- Connection Ratio : max_connection 대비 connection 사용 비율
- Blks Hit : 메모리에서 읽은 블록 수
- Blks Read : 디스크에서 읽은 블록 수
- Locks Waiting : 락 대기 Session 수
- Tps : 초당 트랜잭션의 수
- Checkpoints Req : Active Backend가 요청한 checkpoint 수
- Current Age : 현재 object의 age 중 최댓값
- Age Used Ratio : autovacuum_max_age 대비 현재 object의 age 중 최댓값의 비율
- Temp Bytes : Temp 사용량(bytes)
- (OS) Cpu Usage : CPU 사용률(%)
- (OS) Memory Used : 메모리 사용률(%)

3) Active Session 탭

Instance Detail Slide(PostgreSQL)의 Active Session을 확인하는 화면입니다.

순번항목설명
1HelpActive Session List 우측에 Help 아이콘을 보여줍니다. 마우스 오버 시 Tool Tip이 나타납니다. (PostgreSQL: Active Backends Data와 동일한 정보)
2Filter필터 조건에 따라 Active Session 목록을 보여줍니다. Or이나 And 조건으로 선택 가능합니다.
3Multi KillDefault 비활성화 상태이며, Grid에서 행을 체크한 뒤 버튼이 활성화됩니다. 클릭 시 메시지 창이 나타나고, 확인 클릭 시 실행 중인 Session을 종료합니다.
4Get클릭 시 Active Session List의 데이터를 가져옵니다.
5Option클릭 시 Grid의 옵션을 보여줍니다.
6Active Session ListActive Session List를 Grid 형태로 보여줍니다.

Grid 항목

순번항목설명
1PIDBackend Process ID (클릭 시 Session Detail Slide 오픈)
2User Name사용자 이름
3Database NameDatabase 이름
4App NameAPP 이름
5Client AddressClient 주소
6Client Host NameClient 호스트명
7Backend StartBackends start Time
8Elapsed Time (sec)SQL 수행시간
9SQL IDSQL ID
10SQL Text접속한 PID에서 수행한 SQL
11Wait EventBackend가 SQL 수행 중 대기한 Event
12Wait Event TypeBackend가 SQL 수행 중 대기한 Event 유형
13StateBackend 상태
14Xact StartBackend 트랜잭션 시작 Time
15Query StartBackend Query 수행 시작 Time
16State ChangeState가 변경된 Time

4) SQL List 탭

Instance Detail Slide(PostgreSQL)의 SQL List를 확인하는 화면입니다.

순번항목설명
1Global Time실시간을 포함한 최근 데이터를 모니터링합니다. Default 최근 10분 데이터를 보여줍니다.
2SearchSQL 목록에서 User Name, SQL ID, SQL Text를 검색합니다. 대소문자 구분 없이 입력하며, 결과가 없을 경우 'No data.'를 보여줍니다.
3Toggle우측 상단 토글 버튼 클릭을 통해 아래 항목을 합계/평균으로 변환합니다.
- Total Time (sec)
- Shared Blocks Read
- Local Blocks Read
- Temp Blocks Read
- Block Read Time (sec)
- Block Write Time (sec)
4Option클릭 시 Grid의 옵션을 보여줍니다.
5SQL ListSQL List를 Grid 형태로 보여줍니다.

Grid 항목

순번항목설명
1User Name사용자 명
2Database NameDatabase 이름
3SQL ID쿼리 ID (클릭 시 SQL Detail Slide 오픈)
4SQL Text수행된 SQL 쿼리 (클릭 시 SQL 전체 텍스트 팝업 오픈)
5Total Time (sec)쿼리의 총 실행 시간
6Shared Blocks ReadDisk에서 읽은 블록 수
7Local Blocks ReadLocal에서 읽은 블록 수
8Temp Blocks ReadTemp에서 읽은 블록 수
9Block Read Time (sec)블록을 읽는 데 걸린 총 시간
10Block Write Time (sec)블록을 쓰는 데 걸린 총 시간
11Calls쿼리 실행 횟수
12Ratio (%)전체 SQL의 총 실행시간 대비 해당 SQL의 총 실행시간 비율

5) Lock Info 탭

Instance Detail Slide(PostgreSQL)의 Lock Info를 확인하는 화면입니다.

순번항목설명
1Filter필터 조건에 따라 Lock Session 목록을 보여줍니다. Or이나 And 조건으로 선택 가능합니다.
2Multi KillDefault 비활성화 상태이며, Grid에서 행을 체크한 뒤 버튼이 활성화됩니다. 클릭 시 메시지 창이 나타나고, 확인 클릭 시 실행 중인 Session을 종료합니다.
3Get클릭 시 Lock Session List의 데이터를 가져옵니다.
4Option클릭 시 Grid의 옵션을 보여줍니다.
5Lock Session ListLock Session List를 Grid 형태로 보여줍니다.

Grid 항목

순번항목설명
1PIDBackend Process ID (클릭 시 Session Detail Slide 오픈)
2User ID사용자 이름
3StatementSQL TEXT
4Query StartQuery 수행 시작 시간
5Collect TimeLock 정보가 수집된 시간

6) Alert 탭

Instance Detail Slide(PostgreSQL)의 Alert 로그를 확인하는 화면입니다.

순번항목설명
1Global Time실시간 데이터만 조회 가능합니다.
2SearchAlert 로그에서 Alert Name을 검색합니다. 대소문자 구분 없이 입력하며, 결과가 없을 경우 'No data.'를 보여줍니다.
3Option클릭 시 Grid의 옵션을 보여줍니다.
4Alert LogsAlert 로그의 목록을 Grid로 보여줍니다.

Grid 항목

순번항목설명
1Rule Name룰의 이름 (클릭 시 Alert Detail Slide 오픈)
2Alert NameAlert 이름
3TargetAlert 발생 타겟
4Last Triggered최근 Alert 발생 Time
5Rule Type룰의 유형
6Last Alert마지막 Alert 항목 (Normal / Warning / Critical)
7ThresholdLast Alert 상태값에 해당하는 임계치 조건
8ValueAlert 발생 값

7) Parameter 탭

Instance Detail Slide(PostgreSQL)의 Parameter를 확인하는 화면입니다.

순번항목설명
1TitleInstance 목록에서 클릭한 Instance의 이름을 보여줍니다.
2Slide HistoryDetail Slide 이력을 확인합니다.
3Close클릭 시 Detail Slide가 닫힙니다.
4SearchParameter List에서 Parameter Name을 검색합니다. 대소문자 구분 없이 입력하며, 결과가 없을 경우 'No Data'를 보여줍니다.
5Get클릭 시 액티브 Parameter 데이터를 가져옵니다.
6Option클릭 시 Grid의 옵션을 보여줍니다.
7Parameter ListParameter를 Grid로 보여줍니다. 우측에 Parameter List를 불러온 시각을 보여줍니다.

Grid 항목

순번항목설명
1Parameter NameParameter 명 (클릭 시 Parameter Detail Slide 오픈)
2Current ValueParameter 설정값

7. Session Detail Slide (연계 화면)

Instance Detail Slide > Active Session 탭 > PID 클릭 시 나타나는 세션 상세 화면입니다.

Session Detail Slide

순번항목내용
1Title목록에서 클릭한 PID 이름을 보여줍니다.
2Session Information세션의 정보를 보여줍니다.
3Active Session History해당 페이지 세션의 이력을 확인합니다.
4OptionGrid의 옵션을 보여줍니다.
5Filter필터 조건에 따라 Active Session History 목록을 보여줍니다. Or이나 And 조건으로 선택 가능합니다.
6SQL Performance Details액티브 세션 과거 이력에서 선택된 SQL의 Full Text와 Plan를 보여줍니다.

Title 영역 상세

순번항목내용
1Back클릭 시 디테일 슬라이드가 닫히고 이전 화면을 보여줍니다.
2Session ID조회한 Session ID 정보를 표시합니다.
3Slide HistoryDetail Slide 이력 참고
4Close클릭 시 디테일 슬라이드가 닫힙니다.
5Global Time최근 데이터를 모니터링합니다. Default 최근 10분 데이터를 보여줍니다.
6Kill Session현재 실행중인 세션을 종료하는 기능입니다.

8. Session Detail Slide (연계 화면)

순번항목설명
1Title목록에서 클릭한 SQL ID, Query ID를 보여줍니다.
2SQL InformationSQL의 정보를 보여줍니다.
3Search SQLSearch SQL로 이동합니다.
4Tab해당 Tab의 정보를 보여줍니다. (Full Text / Trend / History / Plan / Sampling SQL Text)

1) Title

순번항목설명
1Back 클릭 시 디테일 슬라이드가 닫히고 이전 화면을 보여줍니다.
2SQL ID조회한 SQL ID, Query ID를 표시합니다.
3Slide History디테일 슬라이드 이동 이력을 관리합니다.
4Close 클릭 시 디테일 슬라이드가 닫힙니다.

2) SQL Information

순번항목설명
1DateSQL 집계 범위 구간
2Database NameDatabase 이름
3Query IDQuery ID
4SQL IDSQL ID
5Search SQL클릭 시 Search SQL 화면으로 이동합니다.

3) Full Text 탭

목적: 선택한 SQL의 전체 텍스트를 확인하고 복사하는 기능

순번항목설명
1Formatting 버튼 클릭 시 하단 텍스트 서식이 정렬됩니다.
2Copy 아이콘 클릭 시 SQL 전체 텍스트를 복사합니다.

4) Trend 탭

목적: 선택한 SQL ID의 시간대별 성능 추이를 차트로 분석

순번항목설명
1Global Time조회 시간 범위를 설정합니다.
2Time조회한 SQL ID의 Time에 대한 추이를 나타냅니다.
3I/O조회한 SQL ID의 I/O에 대한 추이를 나타냅니다.
4Executions조회한 SQL ID의 Executions(실행 횟수)에 대한 추이를 나타냅니다.

5) History 탭

목적: 선택한 SQL의 시간대별 집계 이력을 분석하여 성능 변화 추적

순번항목설명
1ToggleSQL 과거 이력의 일부 컬럼 값을 Sum/Avg로 표시합니다.
2Filter필터 조건에 따라 History 목록을 보여줍니다. Or이나 And 조건으로 선택 가능합니다.
3HistorySQL History를 Grid 형태로 보여줍니다.

● History Grid

순번항목설명
1TimeSQL 집계 시간
2Calls집계 범위 내 쿼리 실행 횟수
3Total Time(sec)집계 범위 내 쿼리의 총 실행 시간
4Shared Blocks Hit집계 범위 내 Shared 블록 캐시 히트 수
5Local Blocks Hit집계 범위 내 Local 블록 캐시 히트 수
6Shared Blocks Read집계 범위 내 Disk에서 읽은 블록 수
7Local Blocks Read집계 범위 내 Local에서 읽은 블록 수
8Temp Blocks Read집계 범위 내 Temp에서 읽은 블록 수
9Shared Blocks Written집계 범위 내 작성된 Shared 블록 수
10Local Blocks Written집계 범위 내 작성된 Local 블록 수
11Temp Blocks Written집계 범위 내 작성된 Temp 블록 수
12Rows집계 범위 내 해당 쿼리로 출력한 또는 영향을 받은 row 수
13Block Read Time(sec)집계 범위 내 블록을 읽는 데 걸린 시간
14Block Write Time(sec)집계 범위 내 블록을 쓰는 데 걸린 시간
15Max Execution Time(sec)Max 실행 시간
16Min Execution Time(sec)Min 실행 시간

6) Plan 탭

목적: SQL 실행 계획(Query Plan)을 확인하여 쿼리 최적화 분석

순번항목설명
1Default Plan변수 있는 SQL일 경우 '1'로 치환하여 Plan을 조회합니다.
2Help[Default Plan] 버튼 우측에 Help 아이콘 을 보여줍니다. 마우스 오버 시 도움말 툴팁이 나타납니다.
3Copy Icon클릭 시 텍스트가 복사됩니다.
4Option 클릭 시 Grid의 옵션을 보여줍니다.
5PlanSQL 목록에서 선택한 SQL의 Plan을 보여줍니다.

● Plan Grid

순번항목설명
1#단위 SELECT 쿼리별로 부여되는 식별자 값
2Query Plan쿼리를 수행하여 데이터를 추출하려고 할 때, 통계정보를 기반으로 옵티마이저가 수립하는 작업 절차

7) Sampling SQL Text 탭

목적: 실제 수집된 SQL 샘플 텍스트 확인

순번항목설명
1Formatting 버튼 클릭 시 하단 텍스트 서식이 정렬됩니다. Sampling SQL Text 없을 경우 비활성화됩니다.
2Copy 아이콘 클릭 시 SQL 전체 텍스트를 복사합니다. Sampling SQL Text 없을 경우 비활성화됩니다.
3TextSampling SQL Text가 출력됩니다. Sampling SQL Text가 없을 경우 안내 메시지가 출력됩니다.

9. Parameter Detail Slide (연계 화면)

Instance Detail Slide > Parameter 탭 > Parameter Name 클릭 시 나타나는 파라미터 상세 화면입니다.

Parameter Detail Slide

순번항목내용
1Back클릭 시 디테일 슬라이드가 닫히고 이전 화면을 보여줍니다.
2TitleParameter List에서 클릭한 Parameter Name 이름을 보여줍니다.
3Slide HistoryDetail Slide 이력 참고
4Close클릭 시 Detail Slide가 닫힙니다.
5TimeDefault 최근 10분 데이터를 보여줍니다. 클릭 시 기간을 변경할 수 있습니다.
6InformationParameter 정보를 보여줍니다. (Parameter Name, Description, Default, Restart)
7Filter필터 조건에 따라 Parameter 목록을 보여줍니다. Or이나 And 조건으로 선택 가능합니다.
8Parameter ListParameter List를 Grid 형태로 보여줍니다.

Parameter List Grid

순번항목내용
1Date날짜
2Current Value현재 값
3Prev Value이전 값
4DifferentBase Date 대비 Compare Date의 값 차이 (False: 변동 없음, True: 변경 됨)

참고 문서