Kubernetes / Postgres Agent

Postgres Agent는 PostgreSQL의 모니터링 및 관리를 위한 도구입니다.
데이터베이스 운영 및 성능 향상을 위한 모니터링 기능을 제공합니다.
이 문서에서는 Postgres Agent의 설치, 설정에 대해 설명합니다.

Supported version

version support
ver >= 13 O

DataSaker 선행 작업을 진행하였나요?

현재 환경에서는 DataSaker의 선행 작업이 진행되지 않으셨다면
DataSaker선행 작업을 먼저 진행하여 주시기 바랍니다.
DataSaker 선행작업

Postgres Agent 설치하기

1. Postgres 설정 변경

관제하려는 데이터베이스의 pg_stat_statements 활성화가 필요합니다.

활성화 확인

postgres=# show shared_preload_libraries;

 shared_preload_libraries
--------------------------
 pg_stat_statements
(1 row)

shared_preload_libraries에 pg_stat_statements 활성화가 필요합니다.

필수 설정

Parameter Value Description
shared_preload_libraries pg_stat_statements pg_stat_statements extension을 이용하여 pg_dsk_sql_stat.* metric을 추출.
track_activity_query_size 4096 pg_stat_activity, pg_stat_statements의 SQL 텍스트 길이를 증가.

선택 설정

Parameter Value Description
pg_stat_statements.track ALL stored producers, function 내에서의 구문을 추척.
pg_stat_statements.max 10000 pg_stat_statements의 추적 쿼리 증가
pg_stat_statements.track_utility 0 PREPARE, EXPLAIN같은 유틸리티 명령에 대한 추적을 비활성화

2. PostgreSQL User 권한 설정

datasaker 사용자를 생성하고 pg_monitor 및 기본 권한을 부여합니다.

CREATE USER datasaker WITH password '<PASSWORD>';
GRANT USAGE ON SCHEMA '<monitoring schema list>' TO datasaker
GRANT pg_monitor TO datasaker;

3. Postgres Agent 설정값 등록

values.yaml

postgresAgent:
  name:
  imgPolicy:
  imgVersion:
  logLevel:
  tolerations: []
  instances: []
  resources: {}

config.yaml 작성

cat << EOF >> ~/datasaker/config.yaml

postgresAgent:
  name: my-postgres
  imgPolicy: 'Always'
  imgVersion: 'latest'
  logLevel 'INFO'
  tolerations: []
  instances:
  - username: "datasaker"
    password: <your password>
    host: <db instance ip or domain>
    port: <db instance port>
    dbname: <db schema name>
    sslMode: <certificate verification on the server during SSL connection>
    sslCa: <Path to the CA file>
    sslCert: <SSL certificate file path>
    sslKey: <SSL key file path>
    appendSession:
      scrapeInterval: <append session collection cycle>
      dbList:
      - dbname: <db schema name>
        longSessionStandard: <long session standard>
postgresAgent.instances
Entity Description Default Required
username 데이터베이스의 접속 권한을 가진 계정 정보 N/A
password 데이터베이스의 접속 권한을 가진 계정 비밀전호 N/A
host 데이터베이스의 주소 N/A
port 데이터베이스의 포트번호 N/A
dbname 데이터베이스의 schema 이름 N/A
sslMode SSL 연결 시 서버의 인증서 검증 유무 false N/A
sslCa CA 파일의 경로 N/A N/A
sslCert SSL 인증서 파일 경로 N/A N/A
sslKey SSL 키 파일 경로 N/A N/A
postgresAgent.instances.appendSession
Entity Description Default Required
scrapeInterval append session 수집 주기 N/A N/A
postgresAgent.instance.appendSession.dbList
Entity Description Default Required
dbname 데이터베이스의 schema 이름 N/A N/A
longSessionStandard long session 기준 시간 N/A N/A

4. Postgres Agent 활성화

helm upgrade datasaker datasaker/agent-helm -n datasaker \ -f ~/datasaker/config.yaml