

# RDS for PostgreSQL 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.PostgreSQL"></a>

다음 유형의 로그 파일을 모니터링할 수 있습니다.
+ PostgreSQL 로그
+ 업그레이드 로그
+ IAM 데이터베이스 인증 오류 로그
**참고**  
IAM 데이터베이스 인증 오류 로그를 활성화하려면 먼저 RDS for PostgreSQL DB 인스턴스에 IAM 데이터베이스 인증을 활성화해야 합니다. IAM 데이터베이스 인증 활성화에 대한 자세한 내용은 [IAM 데이터베이스 인증의 활성화 및 비활성화](UsingWithRDS.IAMDBAuth.Enabling.md) 섹션을 참조하세요.

RDS for PostgreSQL은 기본 PostgreSQL 로그 파일에 데이터베이스 활동을 로깅합니다. 온프레미스 PostgreSQL DB 인스턴스의 경우 이러한 메시지가 `log/postgresql.log`에 로컬로 저장됩니다. RDS for PostgreSQL DB 인스턴스의 경우 Amazon RDS 인스턴스에서 로그 파일을 사용할 수 있습니다. 또한 이러한 로그는 AWS Management Console을 통해 액세스할 수 있으며, 여기에서 해당 로그를 보거나 다운로드할 수 있습니다. 기본 로깅 수준에서는 로그인 실패, 치명적인 서버 오류, 교착 상태 및 쿼리 실패를 캡처합니다.

파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 섹션을 참조하세요. PostgreSQL 로그에 대한 자세한 내용은 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 1](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)(RDS 및 Aurora PostgreSQL 로그로 작업하기: 파트 1) 및 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 2](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-2/)(RDS 및 Aurora PostgreSQL 로그로 작업하기: 파트 2)를 참조하세요.

이 주제에서 설명하는 표준 PostgreSQL 로그 외에 RDS for PostgreSQL은 PostgreSQL Auidt 확장(`pgAudit`)도 지원합니다. 대부분의 규제 대상 산업 및 정부 기관은 법적 요구 사항을 준수하기 위해 데이터 변경에 대한 감사 로그 또는 감사 추적을 보존해야 합니다. pgAudit 설치 및 사용에 대한 자세한 내용은 [pgAudit를 사용하여 데이터베이스 활동 로깅](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md) 섹션을 참조하세요.

**Topics**
+ [RDS for PostgreSQL에서의 로깅을 위한 파라미터](USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups.md)
+ [RDS for PostgreSQL DB 인스턴스에 쿼리 로깅을 활성화합니다.](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)
+ [Amazon CloudWatch Logs에 PostgreSQL 로그 게시](#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)

# RDS for PostgreSQL에서의 로깅을 위한 파라미터
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

다양한 파라미터를 수정하여 RDS for PostgreSQL DB 인스턴스의 로깅 동작을 사용자 지정할 수 있습니다. 다음 표에서는 로그 저장 기간, 로그 교체 시기, 로그를 CSV(쉼표로 구분된 값) 형식으로 출력할지 여부 등 다양한 파라미터를 확인할 수 있습니다. 다른 설정에서 STDERR로 전송된 텍스트 출력도 찾을 수 있습니다. 수정 가능한 파라미터의 설정을 변경하려면 에 대한 사용자 지정 DB 파라미터 그룹을 사용하세요. RDS for PostgreSQL 인스턴스 자세한 내용은 [Amazon RDS DB 인스턴스용 DB 파라미터 그룹](USER_WorkingWithDBInstanceParamGroups.md). 섹션을 참조하세요.


| 파라미터 | 기본값 | 설명 | 
| --- | --- | --- | 
| log\$1destination | stderr | 로그에 대한 출력 형식을 설정합니다. 기본값은 `stderr`이지만 설정에 `csvlog`를 추가하여 CSV(쉼표로 구분된 값)를 지정할 수도 있습니다. 자세한 내용은 [로그 대상 설정(`stderr`, `csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format) 섹션을 참조하세요. | 
| log\$1filename |  postgresql.log.%Y-%m-%d-%H  | 로그 파일 이름의 패턴을 지정합니다. 이 파라미터는 기본값 외에도 `postgresql.log.%Y-%m-%d` 및 `postgresql.log.%Y-%m-%d-%H%M` 파일 이름 패턴을 지원합니다. | 
| log\$1line\$1prefix | %t:%r:%u@%d:[%p]: | 시간(%t), 원격 호스트(%r), 사용자(%u), 데이터베이스(%d) 및 프로세스 ID(%p)를 기록하기 위해 `stderr`에 기록되는 각 로그 줄의 접두사를 정의합니다. | 
| log\$1rotation\$1age | 60 | 몇 분 후에 로그 파일이 자동으로 교체됩니다. 이 값을 1분에서 1,440분 사이의 값으로 변경할 수 있습니다. 자세한 내용은 [로그 파일 회전 설정](#USER_LogAccess.Concepts.PostgreSQL.log_rotation) 섹션을 참조하세요. | 
| log\$1rotation\$1size | – | 로그 교체가 자동으로 이루어질 때의 크기(kB)입니다. 로그는 `log_rotation_age` 파라미터에 따라 교체되므로 기본적으로 이 파라미터는 사용되지 않습니다. 자세한 내용은 [로그 파일 회전 설정](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)를 참조하세요. | 
| rds.log\$1retention\$1period | 4320 | 지정된 시간(분)보다 오래된 PostgreSQL 로그가 삭제됩니다. 기본값인 4,320분으로 지정하면 3일이 지난 로그 파일이 삭제됩니다. 자세한 내용은 [로그 보존 기간 설정](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period) 섹션을 참조하세요. | 

애플리케이션 문제를 식별하기 위해 로그에서 쿼리 실패, 로그인 실패, 교착 상태 및 치명적인 서버 오류를 찾아볼 수 있습니다. 예를 들어, 레거시 애플리케이션을 Oracle에서 Amazon RDS PostgreSQL로 변환했지만 일부 쿼리가 올바르게 변환되지 않았다고 가정합시다. 이러한 잘못된 형식의 쿼리는 오류 메시지를 생성하고, 로그에서 오류 메시지를 찾아 문제를 식별할 수 있습니다. 쿼리 로깅에 대한 자세한 내용은 [ RDS for PostgreSQL DB 인스턴스에 쿼리 로깅을 활성화합니다.](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md) 섹션을 참조하세요.

다음 주제에서 PostgreSQL 로깅의 기본 세부 정보를 제어하는 다양한 파라미터에 관한 정보를 찾을 수 있습니다.

**Topics**
+ [로그 보존 기간 설정](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)
+ [로그 파일 회전 설정](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)
+ [로그 대상 설정(`stderr`, `csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)
+ [log\$1line\$1prefix 파라미터 이해하기](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)

## 로그 보존 기간 설정
<a name="USER_LogAccess.Concepts.PostgreSQL.log_retention_period"></a>

`rds.log_retention_period` 파라미터는 RDS for PostgreSQL DB 인스턴스가 로그 파일을 보관하는 기간을 지정합니다. 기본 설정은 3일(4,320분)이지만 1일(1,440분)에서 7일(10,080분) 사이로 이 값을 설정할 수 있습니다. RDS for PostgreSQL DB 인스턴스에 일정 기간 동안 로그 파일을 보관할 수 있는 충분한 스토리지가 있는지 확인하세요.

로그를 정기적으로 Amazon CloudWatch Logs에 게시하여 로그가 에서 제거된 후에도 시스템 데이터를 보고 분석할 수 있도록 하는 것이 좋습니다. RDS for PostgreSQL DB 인스턴스  자세한 내용은 [Amazon CloudWatch Logs에 PostgreSQL 로그 게시](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs) 섹션을 참조하세요. 

## 로그 파일 회전 설정
<a name="USER_LogAccess.Concepts.PostgreSQL.log_rotation"></a>

Amazon RDS는 기본적으로 매시간 새 로그 파일을 생성합니다. 타이밍은 `log_rotation_age` 파라미터로 제어됩니다. 이 파라미터의 기본값은 60(분)이지만 1분에서 24시간(1,440분) 사이로 설정할 수 있습니다. 교체 시간이 되면 새 로그 파일이 생성됩니다. 파일의 이름은 `log_filename` 파라미터로 지정된 패턴에 따라 결정됩니다.

로그 파일은 `log_rotation_size` 파라미터에 지정된 대로 크기에 따라 교체될 수도 있습니다. 이 파라미터는 로그가 지정된 크기(KB)에 도달하면 교체되도록 지정합니다. RDS for PostgreSQL DB 인스턴스의 경우 `log_rotation_size`가 설정되지 않습니다. 즉, 지정된 값이 없습니다. 그러나 이 파라미터는 0\$12,097,151KB(킬로바이트) 사이로 설정할 수 있습니다.  

로그 파일 이름은 `log_filename` 파라미터에 지정된 파일 이름 패턴을 기반으로 합니다. 이 파라미터에 사용할 수 있는 설정은 다음과 같습니다.
+ `postgresql.log.%Y-%m-%d` - 로그 파일 이름의 기본 형식입니다. 로그 파일 이름에 년, 월, 일이 포함됩니다.
+ `postgresql.log.%Y-%m-%d-%H` - 로그 파일 이름 형식에 시간이 포함됩니다.

자세한 내용은 PostgreSQL 설명서의 [https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE) 및 [https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE) 섹션을 참조하세요.

## 로그 대상 설정(`stderr`, `csvlog`)
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format"></a>

기본적으로 Amazon RDS PostgreSQL은 표준 오류(stderr) 형식으로 로그를 생성합니다. 이 형식이 `log_destination` 파라미터에 대한 기본 설정입니다. 각 메시지에는 `log_line_prefix` 파라미터에 지정된 패턴을 사용하여 접두사가 붙습니다. 자세한 내용은 [log\$1line\$1prefix 파라미터 이해하기](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix) 섹션을 참조하세요.

RDS for PostgreSQL도 로그를 `csvlog` 형식으로 생성할 수 있습니다. `csvlog`는 로그 데이터를 쉼표로 구분된 값(CSV) 데이터로 분석하는 데 유용합니다. 예를 들어 외부 테이블로 로그를 사용하기 위해 `log_fdw` 확장을 사용한다고 가정하겠습니다. `stderr` 로그 파일에 만들어진 외부 테이블에는 로그 이벤트 데이터가 있는 하나의 열이 포함되어 있습니다. `log_destination` 파라미터에 `csvlog`를 추가하면 외부 테이블의 여러 열에 대한 구분이 있는 CSV 형식의 로그 파일을 얻게 됩니다. 이제 로그를 더 쉽게 정렬하고 분석할 수 있습니다. `log_fdw`를 `csvlog`와 함께 사용하는 방법을 알아보려면 [log\$1fdw 확장으로 SQL을 사용하여 DB 로그에 액세스](CHAP_PostgreSQL.Extensions.log_fdw.md) 섹션을 참조하세요.

이 파라미터에 `csvlog`를 지정하는 경우 `stderr` 및 `csvlog` 파일이 모두 생성된다는 점에 유의하세요. `rds.log_retention_period` 및 로그 스토리지와 회전율에 영향을 주는 다른 설정을 고려하여 로그에서 사용하는 스토리지를 모니터링해야 합니다. `stderr` 및 `csvlog`를 사용하는 경우 로그에서 소비하는 스토리지가 두 배 이상 늘어납니다.

`log_destination`에 `csvlog`를 추가하고 `stderr`로만 되돌리려면 파라미터를 재설정해야 합니다. 이렇게 하려면 Amazon RDS 콘솔을 연 다음 인스턴스에 대한 사용자 지정 DB 파라미터 그룹을 엽니다. `log_destination` 파라미터를 선택하고 **파라미터 편집**을 선택한 다음 **재설정**을 선택합니다.

로깅 구성에 대한 자세한 내용은 [Amazon RDS 및 Aurora PostgreSQL 로그 작업: 1부](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)를 참조하세요.

## log\$1line\$1prefix 파라미터 이해하기
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix"></a>

`stderr` 로그 형식은 각 로그 메시지에 `log_line_prefix` 파라미터에 지정된 세부 정보를 접두사로 지정합니다. 기본값은 다음과 같습니다.

```
%t:%r:%u@%d:[%p]:t
```

Aurora PostgreSQL 버전 16부터는 다음을 선택할 수도 있습니다.

```
%m:%r:%u@%d:[%p]:%l:%e:%s:%v:%x:%c:%q%a
```

stderr로 전송되는 각 로그 항목에는 선택한 값에 따라 다음 정보가 포함됩니다.
+ `%t` - 밀리초 단위를 제외한 로그 항목 시간
+ `%m` - 밀리초 단위를 포함한 로그 항목 시간
+  `%r` - 원격 호스트 주소
+  `%u@%d` - 사용자 이름 @ 데이터베이스 이름
+  `[%p]` - 프로세스 ID(사용 가능한 경우)
+  `%l` - 세션당 로그 행 번호 
+  `%e` – SQL 오류 코드 
+  `%s` – 프로세스 시작 타임스탬프 
+  `%v` - 가상 트랜잭션 ID 
+  `%x` – 트랜잭션 ID 
+  `%c` – 세션 ID 
+  `%q` - 세션이 아닌 종결자 
+  `%a` – 애플리케이션 이름 

# RDS for PostgreSQL DB 인스턴스에 쿼리 로깅을 활성화합니다.
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging"></a>

다음 테이블에 나열된 파라미터 중 일부를 설정하여 쿼리, 잠금을 기다리는 쿼리, 체크포인트 및 기타 여러 세부 정보를 포함하여 데이터베이스 활동에 대한 보다 자세한 정보를 수집할 수 있습니다. 이 주제에서는 쿼리 로깅에 중점을 둡니다.


| 파라미터 | 기본값 | 설명 | 
| --- | --- | --- | 
| log\$1connections | – | 성공한 연결을 모두 기록합니다.  | 
| log\$1disconnections | – | 각 세션의 끝과 기간을 로깅합니다.  | 
| log\$1checkpoints | 1 | 각 체크포인트를 기록합니다.  | 
| log\$1lock\$1waits | – | 오랜 잠금 대기 시간을 기록합니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. | 
| log\$1min\$1duration\$1sample | – | (밀리초) 문 샘플이 로그되는 최소 실행 시간을 설정합니다. 샘플 크기는 log\$1statement\$1sample\$1rate 파라미터를 사용하여 설정합니다. | 
| log\$1min\$1duration\$1statement | – | 지정된 시간 이상 실행되는 모든 SQL 문은 로깅됩니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다. | 
| log\$1statement | – | 기록할 문 유형을 설정합니다. 기본적으로 이 파라미터는 설정되어 있지 않지만 `all`, `ddl` 또는 `mod`로 변경하여 로깅하려는 SQL 문 유형을 지정할 수 있습니다. 이 파라미터에 `none` 이외의 다른 것을 지정하면 추가 단계를 수행하여 로그 파일에 암호가 노출되지 않도록 해야 합니다. 자세한 내용은 [쿼리 로깅 사용 시 암호 노출 위험 완화암호 노출 위험 완화](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk) 섹션을 참조하세요. | 
| log\$1statement\$1sample\$1rate | – | 로깅되도록 `log_min_duration_sample`에 지정된 시간을 초과하는 문의 비율로, 0.0에서 1.0 사이의 부동 소수점 값으로 표시됩니다. | 
| log\$1statement\$1stats | – | 누적 성능 통계를 서버 로그에 기록합니다. | 

## 로깅을 사용하여 성능이 느린 쿼리 찾기
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.using"></a>

SQL 문 및 쿼리를 로깅하여 성능이 느린 쿼리를 찾을 수 있습니다. 이 섹션에 설명된 대로 `log_statement` 및 `log_min_duration` 파라미터 설정을 수정하여 이 기능을 활성화합니다. RDS for PostgreSQL DB 인스턴스S에 대한 쿼리 로깅을 활성화하기 전에 로그에서 암호가 노출될 수 있는 사항과 위험을 완화하는 방법을 알고 있어야 합니다. 자세한 내용은 [쿼리 로깅 사용 시 암호 노출 위험 완화암호 노출 위험 완화](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk) 섹션을 참조하세요.

다음에서 `log_statement` 및 `log_min_duration` 파라미터에 대한 참조 정보를 확인할 수 있습니다.log\$1statement

이 파라미터는 로그에 전송해야 하는 SQL 문의 유형을 지정합니다. 기본값은 `none`입니다. 이 파라미터를 `all`, `ddl` 또는 `mod`로 변경할 경우 로그에 암호가 노출될 위험을 줄이려면 권장 조치를 취해야 합니다. 자세한 내용은 [쿼리 로깅 사용 시 암호 노출 위험 완화암호 노출 위험 완화](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk) 섹션을 참조하세요.

**모두**  
모든 문을 로깅합니다. 이 설정은 디버깅 용도로 사용하는 것이 좋습니다.

**ddl**  
모든 데이터 정의 언어(DDL) 문(CREATE, ALTER, DROP 등)을 로깅합니다.

**mod**  
NSERT, UPDATE, DELETE 등 데이터를 수정하는 모든 DDL 문과 데이터 조작 언어(DML) 문을 로깅합니다.

**없음**  
SQL 문이 로깅되지 않습니다. 로그에서 암호가 노출될 위험을 피하려면 이 설정을 사용하는 것이 좋습니다.log\$1min\$1duration\$1statement

지정된 시간 이상 실행되는 모든 SQL 문은 로깅됩니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다.

**–1–2147483647**  
문이 로깅되는 런타임의 밀리초(ms) 수입니다.

**쿼리 로깅 설정**

이 단계에서는 RDS for PostgreSQL DB 인스턴스가 사용자 지정 DB 파라미터 그룹을 사용한다고 가정합니다.

1. `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 ----------------------
   ```

1. `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 ----------------------
   ```

### 쿼리 로깅 사용 시 암호 노출 위험 완화
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk"></a>

암호가 노출되지 않도록 `log_statement`를 `none`으로 설정하는 것이 좋습니다. `log_statement`를 `all`, `ddl`, 또는 `mod`로 설정하는 경우 다음 단계 중 하나 이상을 수행하는 것이 좋습니다.
+ 클라이언트의 경우 민감한 정보를 암호화합니다. 자세한 내용은 PostgreSQL 설명서의 [암호화 옵션에 관한 문서](https://www.postgresql.org/docs/current/encryption-options.html)를 참조하세요. `CREATE` 및 `ALTER` 문의 `ENCRYPTED`(및 `UNENCRYPTED`) 옵션을 사용합니다. 자세한 내용은 PostgreSQL 설명서에서 [CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html)를 참조하세요.
+ RDS for PostgreSQL DB 인스턴스의 경우 PostgreSQL Auditing(pgAudit) 확장을 설정하고 사용합니다. 이 확장은 로그로 전송된 CREATE 및 ALTER 문에서 민감한 정보를 삭제합니다. 자세한 내용은 [pgAudit를 사용하여 데이터베이스 활동 로깅](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md) 섹션을 참조하세요.
+ CloudWatch 로그에 대한 액세스를 제한합니다.
+ IAM 등의 보다 강력한 인증 메커니즘을 사용합니다.

## Amazon CloudWatch Logs에 PostgreSQL 로그 게시
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs"></a>

매우 내구력 있는 스토리지에 PostgreSQL 로그 레코드를 저장하려면 Amazon CloudWatch Logs를 사용하면 됩니다. CloudWatch Logs를 사용하면 로그 데이터에 대한 실시간 분석을 수행하고 CloudWatch를 통해 지표를 보고 경보를 생성할 수도 있습니다. 예를 들어, `log_statement`를 `ddl`로 설정하면 DDL 문이 실행될 때마다 경고하도록 경보를 설정할 수 있습니다. RDS for PostgreSQL DB 인스턴스를 생성하는 동안 PostgreSQL 로그가 CloudWatch Logs에 업로드되도록 선택할 수 있습니다. 이때 로그를 업로드하지 않도록 선택한 경우 나중에 인스턴스를 수정하여 해당 시점부터 로그 업로드를 시작하도록 할 수 있습니다. 즉, 기존 로그는 업로드되지 않습니다. 수정된 RDS for PostgreSQL DB 인스턴스에 생성된 새 로그만 업로드됩니다.

현재 사용 가능한 모든 RDS for PostgreSQL 버전에서는 CloudWatch Logs에 로그 파일 게시를 지원합니다. 자세한 내용은 Amazon RDS for PostgreSQL 릴리스 정보에서 [Amazon RDS for PostgreSQL 업데이트 내용](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)을 참조하세요.**

CloudWatch Logs로 작업하려면 로그 그룹에 로그 데이터를 게시하도록 RDS for PostgreSQL DB 인스턴스를 구성하십시오.

RDS for PostgreSQL용 CloudWatch Logs에 다음 로그 유형을 게시할 수 있습니다.
+ PostgreSQL 로그
+ 업그레이드 로그 
+ IAM 데이터베이스 인증 오류 로그

구성을 완료하고 나면 Amazon RDS에서 CloudWatch 로그 그룹 내 로그 스트림에 로그 이벤트를 게시합니다. 예를 들면 PostgreSQL 로그 데이터가 로그 그룹 `/aws/rds/instance/my_instance/postgresql` 안에 저장됩니다. 로그를 보려면 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

### 콘솔
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CON"></a>

**콘솔을 사용하여 PostgreSQL 로그를 CloudWatch Logs에 게시하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 수정할 DB 인스턴스를 선택한 다음 **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

   **로그 내보내기** 섹션은 CloudWatch Logs에 게시하는 기능을 지원하는 PostgreSQL 버전에서만 제공됩니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

### AWS CLI
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CLI"></a>

AWS CLI를 통해 PostgreSQL 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 호출할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또한 다음 CLI 명령을 호출하여 PostgreSQL 로그를 게시할 수도 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

다음 옵션으로 CLI 명령 중 하나를 실행합니다.
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

실행하는 CLI 명령에 따라 다른 옵션이 필요할 수 있습니다.

**Example 로그를 CloudWatch Logs에 게시하도록 인스턴스 수정**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 PostgreSQL DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `EnableLogTypes`이며, 해당 값은 `postgresql` 및 `upgrade`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'
```
Windows의 경우:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'
```

**Example 로그를 CloudWatch Logs에 게시하도록 인스턴스 생성**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 PostgreSQL DB 인스턴스를 생성합니다. `--enable-cloudwatch-logs-exports` 값은 문자열의 JSON 배열입니다. 문자열은 `postgresql` 및 `upgrade`의 조합일 수 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \
4.     --db-instance-class db.m4.large \
5.     --engine postgres
```
Windows의 경우:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine postgres
```

### RDS API
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.API"></a>

RDS API를 사용하여 PostgreSQL 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출할 수 있습니다.
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**참고**  
`CloudwatchLogsExportConfiguration` 파라미터에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `ApplyImmediately` 파라미터는 지정해도 아무런 효과가 없습니다.

또한 다음 RDS API 작업을 호출해 PostgreSQL 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

다음 파라미터로 RDS API 작업 중 하나를 실행합니다.
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

실행하는 작업에 따라 다른 파라미터가 필요할 수 있습니다.

 