메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

PostgreSQL 데이터베이스 로그 파일

RDS PostgreSQL에서는 쿼리 로그 및 오류 로그를 생성합니다. 이 오류 로그에 auto-vacuum 정보 및 rds_admin 작업을 기록합니다. Postgres 역시 이 오류 로그에 connections/disconnections/checkpoints를 기록합니다. 자세한 내용은 http://www.postgresql.org/docs/9.4/static/runtime-config-logging.html을(를) 참조하십시오.

DB 인스턴스와 연결된 DB 파라미터 그룹에 있는 rds.log_retention_period 파라미터를 사용하여 시스템 로그의 보존 기간을 설정할 수 있습니다. 이 파라미터의 단위는 분입니다. 예를 들어 1440으로 설정하면 하루 동안의 로그를 보존하게 됩니다. 기본값은 4320(3일)입니다. 최대값은 10080(7일)입니다. 인스턴스에는 보존되는 로그 파일을 포함하기에 충분하게 할당된 스토리지가 있어야 합니다.

DB 인스턴스와 연결된 DB 파라미터 그룹에서 log_statementlog_min_duration_statement의 두 파라미터를 설정하여 PostgreSQL DB 인스턴스에 대한 쿼리 로깅을 활성화할 수 있습니다. log_statement 파라미터는 어떤 SQL 문이 로그에 기록되는지 제어합니다. 이 파라미터를 all로 설정하여 모든 문을 로그에 기록하는 것이 좋습니다. 기본값은 none입니다. 그 밖에도 이 값을 ddl로 설정하여 모든 데이터 정의 언어(DDL) 문(CREATE, ALTER, DROP 등)을 로그에 기록하거나, 혹은 mod로 설정하여 모든 DDL과 데이터 조작 언어(DML) 문(INSERT, UPDATE, DELETE, etc.)을 로그에 기록하는 방법도 있습니다.

log_min_duration_statement 파라미터는 로그에 기록할 문의 한계를 밀리초 단위로 설정합니다. 이 파라미터 설정보다 오래 실행되는 모든 SQL 문이 로그에 기록됩니다. 이 파라미터는 기본적으로 비활성화되어 있고 -1로 설정됩니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다. 이런 설정에 대한 자세한 정보는 PostgreSQL 문서에서 Error Reporting and Logging을(를) 참조하십시오.

처음으로 DB 파라미터 그룹에서 파라미터를 설정하고 그 파라미터 그룹을 DB 인스턴스와 연결해보는 사용자라면, DB 파라미터 그룹 작업을(를) 참조하십시오.

다음 단계에서는 쿼리 로깅을 설정하는 방법을 보여줍니다.

  1. log_statement 파라미터를 all로 설정합니다. 다음 예제에서는 postgres.log 파일에 기록되는 정보를 보여줍니다.

    Copy
    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_min_duration_statement" changed to "1"

    쿼리를 실행할 때 postgres.log 파일에 추가 정보가 기록됩니다. 다음 예제에서는 쿼리 후 파일에 기록되는 정보의 유형을 보여줍니다.

    Copy
    2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint starting: time 2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint complete: wrote 1 buffers (0.3%); 0 transaction log file(s) added, 0 removed, 1 recycled; write=0.000 s, sync=0.003 s, total=0.012 s; sync files=1, longest=0.003 s, average=0.003 s 2013-11-05 16:45:14 UTC:[local]:master@postgres:[8839]:LOG: statement: SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", d.datcollate as "Collate", d.datctype as "Ctype", pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" FROM pg_catalog.pg_database d ORDER BY 1; 2013-11-05 16:45:
  2. log_min_duration_statement 파라미터를 설정합니다. 다음 예제에서는 이 파라미터가 1로 설정되어 있을 때 postgres.log 파일에 기록되는 정보를 보여줍니다.

    Copy
    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_min_duration_statement" changed to "1"

    지속 시간 파라미터 설정을 초과하는 쿼리를 실행할 때 postgres.log 파일에 추가 정보가 기록됩니다. 다음 예제에서는 쿼리 후 파일에 기록되는 정보의 유형을 보여줍니다.

    Copy
    2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, i.indisvalid, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true), pg_catalog.pg_get_constraintdef(con.oid, true), contype, condeferrable, condeferred, c2.reltablespace FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x')) WHERE c.oid = '1255' AND c.oid = i.indrelid AND i.indexrelid = c2.oid ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.367 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '1255' ORDER BY inhseqno; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 1.002 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhrelid AND i.inhparent = '1255' ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: statement: select proname from pg_proc; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.469 ms