RDS for PostgreSQL DB 인스턴스에 쿼리 로깅을 활성화합니다.
다음 테이블에 나열된 파라미터 중 일부를 설정하여 쿼리, 잠금을 기다리는 쿼리, 체크포인트 및 기타 여러 세부 정보를 포함하여 데이터베이스 활동에 대한 보다 자세한 정보를 수집할 수 있습니다. 이 주제에서는 쿼리 로깅에 중점을 둡니다.
파라미터 | 기본값 | 설명 |
---|---|---|
log_connections | – | 성공한 연결을 모두 기록합니다. |
log_disconnections | – | 각 세션의 끝과 기간을 로깅합니다. |
log_checkpoints | 1 | 각 체크포인트를 기록합니다. |
log_lock_waits | – | 오랜 잠금 대기 시간을 기록합니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. |
log_min_duration_sample | – | (밀리초) 문 샘플이 로그되는 최소 실행 시간을 설정합니다. 샘플 크기는 log_statement_sample_rate 파라미터를 사용하여 설정합니다. |
log_min_duration_statement | – | 지정된 시간 이상 실행되는 모든 SQL 문은 로깅됩니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다. |
log_statement | – | 기록할 문 유형을 설정합니다. 기본적으로 이 파라미터는 설정되어 있지 않지만 |
log_statement_sample_rate | – | 로깅되도록 |
log_statement_stats | – | 누적 성능 통계를 서버 로그에 기록합니다. |
로깅을 사용하여 성능이 느린 쿼리 찾기
SQL 문 및 쿼리를 로깅하여 성능이 느린 쿼리를 찾을 수 있습니다. 이 섹션에 설명된 대로 log_statement
및 log_min_duration
파라미터 설정을 수정하여 이 기능을 활성화합니다. RDS for PostgreSQL DB 인스턴스S에 대한 쿼리 로깅을 활성화하기 전에 로그에서 암호가 노출될 수 있는 사항과 위험을 완화하는 방법을 알고 있어야 합니다. 자세한 내용은 쿼리 로깅 사용 시 암호 노출 위험 완화 단원을 참조하십시오.
다음에서 log_statement
및 log_min_duration
파라미터에 대한 참조 정보를 확인할 수 있습니다.
log_statement
이 파라미터는 로그에 전송해야 하는 SQL 문의 유형을 지정합니다. 기본값은 none
입니다. 이 파라미터를 all
, ddl
또는 mod
로 변경할 경우 로그에 암호가 노출될 위험을 줄이려면 권장 조치를 취해야 합니다. 자세한 내용은 쿼리 로깅 사용 시 암호 노출 위험 완화 단원을 참조하십시오.
- 모두
-
모든 문을 로깅합니다. 이 설정은 디버깅 용도로 사용하는 것이 좋습니다.
- ddl
-
모든 데이터 정의 언어(DDL) 문(CREATE, ALTER, DROP 등)을 로깅합니다.
- mod
-
NSERT, UPDATE, DELETE 등 데이터를 수정하는 모든 DDL 문과 데이터 조작 언어(DML) 문을 로깅합니다.
- 없음
-
SQL 문이 로깅되지 않습니다. 로그에서 암호가 노출될 위험을 피하려면 이 설정을 사용하는 것이 좋습니다.
log_min_duration_statement
지정된 시간 이상 실행되는 모든 SQL 문은 로깅됩니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다.
- –1–2147483647
-
문이 로깅되는 런타임의 밀리초(ms) 수입니다.
쿼리 로깅 설정
이 단계에서는 RDS for PostgreSQL DB 인스턴스가 사용자 지정 DB 파라미터 그룹을 사용한다고 가정합니다.
log_statement
파라미터를all
로 설정합니다. 다음 예에서는 이 파라미터가 설정에서postgresql.log
에 기록되는 정보를 보여줍니다.2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats: ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed ! [0.025146 s user, 0.000000 s system total] ! 36644 kB max resident size ! 0/8 [0/8] filesystem blocks in/out ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent ! 19/0 [27/0] voluntary/involuntary context switches 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC; ----------------------- END OF LOG ----------------------
log_min_duration_statement
파라미터를 설정합니다. 다음 예제에서는 이 파라미터가postgresql.log
로 설정되어 있을 때1
파일에 기록되는 정보를 보여줍니다.log_min_duration_statement
파라미터에 지정된 기간을 초과하는 쿼리가 로깅됩니다. 다음은 그 한 예입니다. Amazon RDS 콘솔에서 RDS for PostgreSQL DB 인스턴스에 대한 로그 파일을 볼 수 있습니다.2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments; 2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms 2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time 2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB ----------------------- END OF LOG ----------------------
쿼리 로깅 사용 시 암호 노출 위험 완화
암호가 노출되지 않도록 log_statement
를 none
으로 설정하는 것이 좋습니다. log_statement
를 all
, ddl
, 또는 mod
로 설정하는 경우 다음 단계 중 하나 이상을 수행하는 것이 좋습니다.
-
클라이언트의 경우 민감한 정보를 암호화합니다. 자세한 내용은 PostgreSQL 설명서의 암호화 옵션에 관한 문서
를 참조하세요. CREATE
및ALTER
문의ENCRYPTED
(및UNENCRYPTED
) 옵션을 사용합니다. 자세한 내용은 PostgreSQL 설명서에서 CREATE USER를 참조하세요. RDS for PostgreSQL DB 인스턴스의 경우 PostgreSQL Auditing(pgAudit) 확장을 설정하고 사용합니다. 이 확장은 로그로 전송된 CREATE 및 ALTER 문에서 민감한 정보를 삭제합니다. 자세한 내용은 pgAudit를 사용하여 데이터베이스 활동 로깅 단원을 참조하십시오.
-
CloudWatch 로그에 대한 액세스를 제한합니다.
-
IAM 등의 보다 강력한 인증 메커니즘을 사용합니다.