Aurora(PostgreSQL)のログ出力と表示

# Auroraのログの設定

Auroraのログは、DBインスタンスのローカルストレージに保存されます。
ログの保持期間はrds.log_retention_periodパラメータで設定でき、デフォルト値は4,320(3日間)で、最大は10,080(7日間)です。 

DBインスタンスのストレージが不足する場合はgzipで圧縮されます。圧縮してもストレージが不足する場合はログが削除されます。ストレージが大きいDBインスタンスクラスへ変更したら解決しますが、いずれにしてもログの保持期間が最大でも7日間ですので、ログを長期間保存する場合はCloudWatch Logsに発行します。

ログの設定はパラメータグループから変更できます。
パラメータ選択した後、以下の画面でパラメータを変更します。変更可能が"true"になっている項目が変更対象です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/e1250bf1-9d8f-ec3e-32be-180fb6572d56.png)

今回は以下のように設定を変更しました。

```
# 原因となったSQLを出力するログレベル
log_min_error_statement = warning
# スロークエリをログに出力する（ミリ秒）
log_min_duration_statement = 500
# ロック待ちの情報を出力する
log_lock_waits = 1
# 一時ファイルの情報を出力する
log_temp_files = 0
# サーバへの接続試行がログに残す
log_connections = 1
# クライアント接続の終了をログに残す
log_disconnections = 1
```

Auroraの場合は、通常のPostgreSQLに存在する以下の設定はないようです。これはAuroraにはチェックポイント、Vacuumという仕組みが異なるから？

```
# チェックポイントの情報を出力する
log_checkpoints = on
# 設定した時間以上かかった自動VACUUMの情報を出力する
log_autovacuum_min_duration = 5000

```



# Auroraのログの閲覧

Auroraのログはコンソール、AWS CLI、RDS APIを使用して、表示やダウンロードができます。
Auroraのログについては以下のページに説明が記載されています。

- [Amazon Aurora データベースログファイル](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html)

コンソールからログを確認する場合は、データベースのインスタンスを選択して、「ログとイベント」タブを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/1cb3a526-673d-bdf5-468d-031972ef1d98.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/1b77ba89-f20d-2ff7-35fb-c582e4bd190c.png)



# CloudWatch Logsへのログ出力

Aurora(PostgreSQL)のログをAmazon CloudWatch Logsのロググループに発行することができます。
保持期間を指定しない場合は、無期限に保持されます。インスタンスのストレージのログは最大7日間までしか保存できないので、CloudWatch Logsへ発行することになるかと思います。

CloudWatch Logsへ発行方法は以下のページに記載があります。

- [Amazon CloudWatch Logs への Aurora PostgreSQL ログの発行](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.CloudWatch.html)



CloudWatch Logsへ発行方法する場合は、以下の画面でクラスターを選択し、「変更」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/ded821f0-5b78-d7cb-c68f-479306cea72e.png)

次に[ログのエクスポート] で、「Postgresql log」にチェックを入れて「次へ」を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/0076137c-b614-0c96-744f-a91bd4b2fcd8.png)

最後に「変更の概要」で変更内容を確認し、「クラスターの変更」を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/fea8f69b-3564-1df0-8500-c09df8136b3d.png)

画面からだけでなくAWS CLI、RDS APIでも設定を変更することができます。


# CloudWatch Logsでのログ確認

CloudWatch Logsに保存されたログを確認するためには、まず画面から「ロググループ」を選択し、該当のロググループを選択します。
以下では、「/aws/rds/cluster/database-1/postgresql」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/d36e8ccb-7a46-d4cf-9a42-fdff04f06888.png)

ロググループを選択すると、ログストリームの一覧が表示されます。
ログストリームはインスタンス毎に作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/0c588f91-50fb-cdf5-8991-8222e990eded.png)

ログストリームを選択すると、以下のようにログが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179607/6f3d35d2-bd19-70bb-670e-6802895c1fa1.png)


# 参考

- [Amazon Aurora データベースログファイル](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html)
- [Amazon CloudWatch Logs への Aurora PostgreSQL ログの発行](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.CloudWatch.html)