0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RDS(PostgreSQL)でクエリログ出力&CloudWatch Logsで確認するための設定

Last updated at Posted at 2020-05-12

概要

ある案件でRDSでサポート切れPostgreSQL 9.4を9.6へ引き上げるということを2020年4月にやった。

そもそもこのRDS、これまでクエリに関するログがまったく出力されない設定となっており、以前障害が発生したときにログを確認しようとしたら何もなく、衝撃を受けた。

なお、9.6だとCloudWatchでRDSのログが確認できるようになるということで、
この記事では、以下についてまとめる

  • RDS(PostgreSQL 9.6)のログをCloudWatchで確認するための設定
  • RDSでクエリログを出力するための設定

前提

RDSのログってどこで確認できる?  
RDSコンソールページへアクセス > データベース > 任意のRDSインスタンスのDB識別子を選択 > ログとイベント > error/postgresql.log.yyyy-mm-dd-hh(※)

※yyyy-mm-dd-hhはUTC日時

RDSでクエリログを出力するための設定

「パラメータグループ」の設定を変更してやる必要がある。
関係するのは以下。

パラメータ名 意味 postgresql9.6のデフォルト値
log_duration クエリの実行時間をログに出力するか。0:クエリの実行時間を出力する
1:クエリの実行時間を出力しない
0(engine-defaultの値)
log_min_duration_statement ログに出力するクエリの実行時間閾値(ミリ秒)を-1〜2147483647の間で設定。
-1にするとログ出力されない。
0にすると全クエリ出力。
-1(engine-defaultの値)
log_statement どの種類のクエリをログに出力するか。
・ddl: CREATE,ALTER,DROPを記録
・mod:ddlに加えてINSERT,UPDATE,DELETEを記録
・all:ddl+modに加えてすべてのクエリを記録
none(engine-defaultの値)

※稼働しているRDSインスタンスでDBエンジンデフォルトのパラメータグループを使っている場合は、
そのパラメータグループ自体の設定は変更できない。改めて新規作成した上でパラメータグループを付け替えてやること。
なお、パラメータグループの付け替えや各設定の変更反映の際にはRDSインスタンスが再起動される(瞬断が発生する)ことにも注意。

設定したら、RDSのログを確認してクエリログが出力されていることを確認する。

RDS(PostgreSQL 9.6)のログをCloudWatchで確認するための設定

CloudWatch LogsへRDSのログを保存する設定

RDSコンソールページへアクセス > データベース > 任意のRDSインスタンスのDB識別子を選択 > 変更ボタンを押下 > ログのエクスポートでPostgresql logにチェックを入れて「次へ」を押下。

すると・・・CloudWatchで「aws/rds/instance/<DB識別子>/postgresql」というロググループにログ出力されるようになる。
(CloudWatchコンソールページへアクセス > ログ-ロググループ から確認可能)

ログ保存期間の設定変更

CloudWatch LogsでRDSのログを保存するにあたって、デフォルトでは「いつまでも保存する」という設定になっている。
このままにしておくと時間経過で発生する料金が大変なことになってしまう。

また、CloudWatch LogsへRDSのログを保存するのであればRDS上のログは不要である。
RDSのストレージを食ってしまうため、保存期間は最小限でよい。

1. CloudWatch Logs側のログ保存期間設定
CloudWatchコンソールページへアクセス > ログ-ロググループ > 任意のロググループの「次の期間経過後にイベントを失効」カラムの値を選択

スクリーンショット 2020-05-12 14.38.57.png

→保持期間の編集ダイアログが表示される。

引き続いて保持期間を任意の値に変更してOKを押下する。

2. RDS側のログ保存期間設定
以下の「パラメータグループ」の設定を変更してやる必要がある。

パラメータ名 意味 postgresql9.6のデフォルト値
rds.log_retention_period ログ保存期間。単位は分。設定できる範囲は1440(1日)〜10080(7日)で 4320(3日)

※この設定変更はRDSインスタンスの再起動が必要であるため「RDSでクエリログを出力するための設定」と同時にやった方がよいだろう。

参考

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?