Aurora PostgreSQL でのログ記録のパラメータ - Amazon Aurora

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

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

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

log_destination

stderr

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

log_filename

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

ログファイル名のパターンを指定します。デフォルトに加えて、このパラメータはファイル名パターンの postgresql.log.%Y-%m-%dpostgresql.log.%Y-%m-%d-%H をサポートします。Aurora PostgreSQL バージョン 17.4 以降では、このパラメータを変更することはできません。

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)。この値は 50,000~1,000,000 キロバイトの範囲で変更できます。詳細についてはログファイルのローテーションの設定を参照してください。

rds.log_retention_period

4320

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

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

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

ログの保持期間の設定

rds.log_retention_period パラメータは、Aurora PostgreSQL DB クラスター がログファイルを保持する期間を指定します。デフォルトの設定は 3 日 (4,320 分) ですが、この値を 1 日 (1,440 分) から 7 日 (10,080 分) までの任意の時間に設定できます。Aurora PostgreSQL DB クラスター に、一定期間ログファイルを保持するのに十分なストレージがあることを確認してください。

ログを定期的に Amazon CloudWatch Logs に公開することをお勧めします。これにより、ログが Aurora PostgreSQL DB クラスターから削除された後も、システムデータを表示して分析できます。詳細については、Amazon CloudWatch Logs への Aurora PostgreSQL ログの発行。CloudWatch での公開を設定した後、ログが CloudWatch Logs に公開されるまで、Aurora はログを削除しません。

Amazon Aurora は、DB インスタンスのストレージがしきい値に達すると、古い PostgreSQL ログを圧縮します。Aurora は、gzip 圧縮ユーティリティを使用してファイルを圧縮します。詳細については、gzip のウェブサイトを参照してください。

DB インスタンスのストレージが少なく、使用可能なすべてのログが圧縮されると、次のような警告が表示されます。

Warning: local storage for PostgreSQL log files is critically low for this Aurora PostgreSQL instance, and could lead to a database outage.

十分なストレージがない場合、Aurora は指定した保持期間が終了する前に圧縮済みの PostgreSQL ログを削除する可能性があります。その場合は、次のようなメッセージが表示されます。

The oldest PostgreSQL log files were deleted due to local storage constraints.

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

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

ログファイルは、log_rotation_size パラメータで指定されたサイズに従ってローテーションすることもできます。このパラメータは、ログが指定されたサイズ (キロバイト単位) に達したときにローテーションされるように指定します。デフォルトの log_rotation_size は、Aurora PostgreSQL DB クラスターの場合は 100,000 KB (キロバイト) ですが、この値を 50,000~1,000,000 キロバイトの任意の値に設定できます。

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

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

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

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

log_rotation_age パラメータを 60 分未満に設定した場合は、log_filename パラメータを分形式に設定します。

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

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

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

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

このパラメータに 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

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 – アプリケーション名