PostgreSQL 데이터베이스 로그 파일 - Amazon Aurora

PostgreSQL 데이터베이스 로그 파일

Amazon RDS for PostgreSQL에서는 쿼리 및 오류 로그를 생성합니다. RDS PostgreSQL은 autovacuum 정보 및 rds_admin 작업을 오류 로그에 작성합니다. PostgreSQL은 로그 연결, 연결 해제 및 체크포인트를 오류 로그에 기록합니다. 자세한 내용은 PostgreSQL 문서에서 Error Reporting and Logging을 참조하십시오.

DB 인스턴스에 대한 로깅 파라미터를 설정하려면 DB 파라미터 그룹에서 파라미터를 설정하고 해당 파라미터 그룹을 DB 인스턴스에 연결합니다. 자세한 내용은 DB 파라미터 그룹 및 DB 클러스터 파라미터 그룹 작업 단원을 참조하십시오.

로그 보존 기간 설정

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

DB 인스턴스의 스토리지가 임계값에 도달하면 Amazon Aurora가 이전 PostgreSQL 로그를 압축합니다. Aurora는 gzip 압축 유틸리티를 사용하여 파일을 압축합니다. gzip에 대한 자세한 내용은 gzip 웹 사이트를 참조하십시오. DB 인스턴스의 스토리지가 부족하고 사용 가능한 모든 로그가 압축되면 다음과 같은 경고가 표시됩니다.

Warning: local storage for PostgreSQL log files is critically low for this Aurora PostgreSQL instance, and could lead to a database outage.
참고

스토리지가 너무 부족해지면 Aurora는 보존 기간이 만료되기 전에 압축된 PostgreSQL 로그를 삭제할 수 있습니다. 로그가 일찍 삭제되면 다음과 같은 메시지가 표시됩니다.

The oldest PostgreSQL log files were deleted due to local storage constraints.

이전 로그를 유지하려면 Amazon CloudWatch Logs에 게시합니다. 자세한 내용은 Amazon CloudWatch Logs에 Aurora PostgreSQL 로그 게시 단원을 참조하십시오. CloudWatch 게시를 설정하면 로그가 CloudWatch Logs에 게시될 때까지 Aurora에서 해당 로그를 삭제하지 않습니다.

로그 파일 회전 설정

PostgreSQL 로그 파일 회전을 제어하려면 DB 인스턴스와 연결된 DB 파라미터 그룹에서 log_rotation_agelog_rotation_size의 두 파라미터를 설정하십시오. 이 두 설정은 별도의 새 로그 파일이 생성되는 시기를 제어합니다.

로그 파일 이름은 log_filename 파라미터의 파일 이름 패턴을 기반으로 합니다. 예를 들어 로그 파일 이름을 1시간 미만의 세부 단위로 제공하려면 log_filename을(를) 분 형식(postgresql.log.%Y-%m-%d-%H%M)으로 설정합니다. 1시간 미만의 세부 단위는 PostgreSQL 버전 10 이상에서만 지원됩니다. 로그 파일 이름에 대해 시간의 세부 단위를 사용하려면 log_filename을(를) 시간 형식(postgresql.log.%Y-%m-%d-%H)으로 설정합니다.

시간에 따라 로그 파일 회전을 제어하려면 log_rotation_age 파라미터를 1분에서 1,440분(24시간) 사이로 설정합니다. log_rotation_age 기본값은 60분입니다. log_rotation_age 파라미터를 60분 미만으로 설정한 경우 log_filename 파라미터도 분 형식으로 설정합니다.

파일 크기를 기반으로 로그 파일 회전을 제어하려면 log_rotation_size 파라미터를 50,000~1,000,000KB 사이로 설정합니다. 기본값은 100,000KB입니다. log_filename 파라미터도 분 형식으로 설정하는 것이 좋습니다. 이렇게 하면 log_rotation_age 파라미터가 60분 이상인 경우 1시간 이내에 새 로그 파일을 생성할 수 있습니다.

쿼리 로깅 사용

PostgreSQL DB 인스턴스에 대한 쿼리 로깅을 활성화하려면 DB 인스턴스와 연결된 DB 파라미터 그룹에서 log_statementlog_min_duration_statement의 두 파라미터를 설정합니다.

log_statement 파라미터는 어떤 SQL 문이 로그에 기록되는지 제어합니다. DB 인스턴스에서 문제를 디버깅할 때 모든 문을 기록하도록 이 파라미터를 all로 설정하는 것이 좋습니다. 기본 값은 none입니다. 모든 데이터 정의 언어(DDL) 문(CREATE, ALTER, DROP 등)을 기록하려면 이 값을 ddl로 설정합니다. 모든 DDL 및 데이터 수정 언어(DML) 문(INSERT, UPDATE, DELETE 등)을 기록하려면 이 값을 mod로 설정합니다.

log_min_duration_statement 파라미터는 로그에 기록할 문의 한계를 밀리초 단위로 설정합니다. 이 파라미터 설정보다 오래 실행되는 모든 SQL 문이 로그에 기록됩니다. 이 파라미터는 기본적으로 비활성화되어 있고 -1로 설정됩니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다.

쿼리 로깅을 설정하려면 다음 단계를 수행합니다.

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

    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_statement" changed to "all"

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

    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 파일에 기록되는 정보를 보여줍니다.

    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 파일에 추가 정보가 기록됩니다. 다음 예제에서는 쿼리 후 파일에 기록되는 정보의 유형을 보여줍니다.

    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