RDS for PostgreSQL でのログ記録のパラメータ - Amazon Relational Database Service

RDS for PostgreSQL でのログ記録のパラメータ

さまざまなパラメータを変更することで、 RDS for PostgreSQL DB インスタンスのロギング動作をカスタマイズできます。次のテーブルには、ログの保存期間、ログをローテーションするタイミング、ログを CSV (カンマ区切り値) 形式で出力するかどうかなどに影響するパラメータがあります。他の設定の中でも、STDERR に送信されたテキスト出力を確認できます。変更可能なパラメータの設定を変更するには、のカスタム DB パラメータグループを使用します。RDS for PostgreSQL インスタンス。詳細については、「Amazon RDS DB インスタンスの DB パラメータグループ」を参照してください。テーブルに記載されているように、log_line_prefix は変更できません。

パラメータ デフォルト 説明

log_destination

stderr

ログの出力形式を設定します。デフォルトは stderr ですが、設定に csvlog を追加してカンマ区切り値 (CSV) を指定することもできます。詳細については、「ログの送信先の設定 (stderr、csvlog)」を参照してください。

log_filename

postgresql.log.%Y-%m-%d-%H

ログファイル名のパターンを指定します。デフォルトに加えて、このパラメータはファイル名パターンの postgresql.log.%Y-%m-%d をサポートします。

log_line_prefix

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

時間 (%t)、リモート ホスト (%r)、ユーザー (%u)、データベース (%d)、およびプロセス ID (%p) を記録するために、stderr に書き込まれる各ログ行のプレフィックスを定義します。このパラメータは変更できません。

log_rotation_age

60

ログファイルが自動的にローテーションされるまでの分数。この値は、1~1,440 分の間で変更できます。詳細については、「ログファイルのローテーションの設定」を参照してください。

log_rotation_size

ログが自動的にローテーションされるサイズ (kB)。ログは log_rotation_age パラメータに基づいてローテーションされるため、このパラメータはデフォルトでは使用されません。詳細については、「ログファイルのローテーションの設定」を参照してください。

rds.log_retention_period

4320

指定した時間 (分) より古い PostgreSQL ログは削除されます。デフォルト値の 4,320 分では、3 日後にログファイルが削除されます。詳細については、「ログの保持期間の設定」を参照してください。

アプリケーションの問題を特定するには、ログでクエリの失敗、ログインの失敗、デッドロック、および致命的なサーバーエラーを探すことができます。例えば、従来のアプリケーションを Oracle から Amazon RDS PostgreSQL に変換したが、一部のクエリは正しく変換されなかったとします。これらの誤った形式のクエリは、ログにエラーメッセージを生成し、ログから問題を特定することができます。クエリログの詳細については、「RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする」参照してください。

次のトピックでは、PostgreSQL ログの基本的な詳細を制御するさまざまなパラメータの設定方法について説明します。

ログの保持期間の設定

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 ログの発行」を参照してください。

ログファイルのローテーションの設定

Amazon RDS は、デフォルトで 1 時間ごとに新しいログファイルを作成します。このタイミングは、log_rotation_age パラメータによって制御されます。このパラメータのデフォルト値は 60 (分) ですが、1 分から 24 時間 (1,440 分) までの任意の時間に設定できます。ローテーションの時期になると、新しい個別のログファイルが作成されます。ファイルには、log_filename パラメータによって指定されたパターンに従って名前が付けられます。

ログファイルは、log_rotation_size パラメータで指定されたサイズに従ってローテーションすることもできます。このパラメータは、ログが指定されたサイズ (キロバイト単位) に達したときにローテーションされるように指定します。RDS for PostgreSQL DB インスタンスの場合、log_rotation_size は未設定です。つまり、値が指定されていません。ただし、このパラメータは 0~2,097,151 KB (キロバイト) の範囲で設定できます。

ログファイル名は、log_filename パラメータで指定されたファイル名のパターンに基づきます。このパラメータに使用できる設定は次のとおりです。

  • postgresql.log.%Y-%m-%d — ログファイル名のデフォルトフォーマット。年、月、日をログファイルの名前に含めます。

  • postgresql.log.%Y-%m-%d-%H — ログファイル名形式に時間を含めます。

詳細については、PostgreSQL ドキュメントの「log_rotation_age」と「log_rotation_size」を参照してください。

ログの送信先の設定 (stderrcsvlog)

デフォルトでは、 Amazon RDS PostgreSQL はスタンダードエラー (stderr) 形式でログを生成します。この形式は、log_destination パラメータのデフォルト設定です。各メッセージには、log_line_prefix パラメータで指定したパターンを使用してプレフィックスが付きます。詳細については、「log_line_prefix パラメータの概要」を参照してください。

RDS for PostgreSQL は、csvlog フォーマットでログを生成することもできます。csvlog は、ログデータをカンマ区切り値 (CSV) データとして分析する場合に便利です。例えば、log_fdw 拡張機能を使用して外部テーブルとしてログを使用するとします。stderr ログファイルについて作成された外部テーブルには、ログイベントデータを含む 1 つの列が含まれます。log_destination パラメータに csvlog を追加すると、外部テーブルの複数の列の区切りを含む CSV 形式のログファイルが取得できます。ログをより簡単に分類して分析できるようになりました。log_fdwcsvlog を指定して使用する方法については、「SQL を使用した DB ログのアクセスのための log_fdw 拡張機能の使用」を参照してください。

このパラメータに csvlog を指定する場合、stderr ファイル と csvlog ファイルの両方が生成されることに注意してください。ログのストレージと回転率に影響する rds.log_retention_period とその他の設定を考慮し、ログによって消費されるストレージに注意してください。stderrcsvlog を使用すると、ログで消費されるストレージが 2 倍以上になります。

log_destinationcsvlog を追加して、stderr だけに戻す場合は、パラメータをリセットする必要があります。そのためには、Amazon RDS コンソールを開いて、インスタンスのカスタム DB パラメータグループを開きます。log_destination パラメータを選択し、[Edit parameter] (パラメータの編集) を選択し、[Reset] (リセット) を選択します。

ログの設定の詳細については、「Amazon RDS および Aurora PostgreSQL ログの操作:パート 1」を参照してください。

log_line_prefix パラメータの概要

stderr ログ形式では、log_line_prefix パラメータで指定された詳細が、以下のように各ログメッセージにプレフィックスとして付加されます。

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

この設定は変更できません。stderr に送信される各ログエントリには次の情報が含まれます。

  • %t – ログエントリの時刻。

  • %r – リモートホストのアドレス。

  • %u@%d – ユーザー名 @ データベース名。

  • [%p] – プロセス ID (使用可能な場合)。