メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

PostgreSQL データベースのログファイル

RDS PostgreSQL では、クエリおよびエラーログが生成されます。auto-vacuum 情報と rds_admin アクションがエラーログに書き込まれます。Postgres では、接続/切断/チェックポイントもエラーログに記録されます。詳細については、http://www.postgresql.org/docs/9.4/static/runtime-config-logging.html を参照してください。

DB インスタンスに関連付けられている DB パラメータグループの rds.log_retention_period パラメーターを使用して、システムログの保持期間を設定できます。このパラメーターは分単位です。たとえば 1440 に設定すると、ログは 1 日間保持されます。デフォルト値は 4320 (3 日間) です。最大値は 10080 (7 日間) です。インスタンスには、保持するログファイルを格納するだけの十分な割り当てストレージが必要です。

DB インスタンスに関連付けられている DB パラメータグループの 2 つパラメーター log_statementlog_min_duration_statement を設定することで、PostgreSQL DB インスタンスのクエリログ記録を有効にすることができます。log_statement パラメーターでは、どの SQL ステートメントをログに記録するかを制御します。このパラメーターを all に設定して、すべてのステートメントがログに記録されるようにすることをお勧めします。デフォルト値は none です。または、この値を ddl に設定して、すべてのデータ定義言語 (DDL) ステートメント (CREATE、ALTER、DROP など) がログに記録されるようにすることもできます。さらに、mod に設定して、すべての DDL とデータ変更言語 (DML) ステートメント (INSERT、UPDATE、DELETE) がログに記録されるようにすることもできます。

log_min_duration_statement パラメーターでは、ログに記録するステートメントの制限をミリ秒単位で設定します。このパラメーターで設定した時間より長く実行されたすべての SQL ステートメントがログに記録されます。このパラメーターはデフォルトでは無効になっており、マイナス 1 (-1) に設定されています。このパラメーターを有効にすると、最適化されていないクエリを見つけるために役立ちます。これらの設定の詳細については、PostgreSQL のドキュメントの「エラー報告とログ記録」を参照してください。

初めて DB パラメータグループのパラメーターを設定し、そのパラメータグループを DB インスタンスに関連付ける場合は、「DB パラメータグループを使用する」を参照してください。

クエリログ記録の設定手順は以下のとおりです。

  1. log_statement パラメーターを all に設定します。以下の例に示しているのは、postgres.log ファイルに書き込まれた情報です。

    Copy
    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_min_duration_statement" changed to "1"

    クエリを実行すると、追加の情報が postgres.log ファイルに書き込まれます。以下の例に示しているのは、クエリの実行後にファイルに書き込まれた情報です。

    Copy
    2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint starting: time 2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint complete: wrote 1 buffers (0.3%); 0 transaction log file(s) added, 0 removed, 1 recycled; write=0.000 s, sync=0.003 s, total=0.012 s; sync files=1, longest=0.003 s, average=0.003 s 2013-11-05 16:45:14 UTC:[local]:master@postgres:[8839]:LOG: statement: SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", d.datcollate as "Collate", d.datctype as "Ctype", pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" FROM pg_catalog.pg_database d ORDER BY 1; 2013-11-05 16:45:
  2. log_min_duration_statement パラメーターを設定します。以下の例に示しているのは、パラメーターを 1 に設定したときに postgres.log ファイルに書き込まれた情報です。

    Copy
    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_min_duration_statement" changed to "1"

    クエリを実行して、その実行時間がこのパラメーターの値を超えていると、追加の情報が postgres.log ファイルに書き込まれます。以下の例に示しているのは、クエリの実行後にファイルに書き込まれた情報です。

    Copy
    2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, i.indisvalid, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true), pg_catalog.pg_get_constraintdef(con.oid, true), contype, condeferrable, condeferred, c2.reltablespace FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x')) WHERE c.oid = '1255' AND c.oid = i.indrelid AND i.indexrelid = c2.oid ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.367 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '1255' ORDER BY inhseqno; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 1.002 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhrelid AND i.inhparent = '1255' ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: statement: select proname from pg_proc; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.469 ms