Aurora PostgreSQL 9.6 互換でクエリログを取得してみた。
設定
- DB Parameter Group をパラメータグループファミリー"aurora-postgresql9.6" で作成する
- log_statement=all
- log_min_duration_statement=0
- 単位はミリ秒、指定したミリ秒以上要したクエリを記録する。0にすると全てのクエリを記録する。
- log_destination=csvlog
- CSV に出力する必要がなければ不要(PostgreSQL ログにクエリログを出力し、CSV ログは出力しない設定 - ablog)
- log_duration=1
- クエリの実行時間を記録する
- log_error_verbosity=verbose
- TERSE、DEFAULT、VERBOSE から指定できる
- DBインスタンスの DB Parameter Group を作成したものに変えて再起動する。
クエリログを確認する
- クエリを実行する
> select * from (select * from pg_tables a, pg_tables b, pg_tables c) d;
- AWSマネジメントコンソールで[ログ]の error/postgresql.log.*.csv をクリックする
2018-10-24 17:15:00.599 UTC,"awsuser","mydb",26380,"**.*.*.145:54214",5bd0a876.670c,5,"idle",2018-10-24 17:14:30 UTC,6/26561,0,LOG,00000,"statement: select count(*) from (select * from pg_tables a, pg_tables b) d;",,,,,,,,"exec_simple_query, postgres.c:942","psql" 2018-10-24 17:15:00.600 UTC,"awsuser","mydb",26380,"**.*.*.145:54214",5bd0a876.670c,6,"SELECT",2018-10-24 17:14:30 UTC,6/0,0,LOG,00000,"duration: 1.014 ms",,,,,,,,"exec_simple_query, postgres.c:1171","psql"
18.8.4. CSV書式のログ出力の利用
log_destinationリストにcsvlogを含めることは、ログファイルをデータベーステーブルにインポートする簡便な方法を提供します。このオプションはカンマ区切り値書式(CSV)で以下の列を含むログ行を生成します。 ミリ秒単位のtimestamp、 ユーザ名、 データベース名、 プロセス識別子、 クライアントホスト:ポート番号、 セッション識別子、 セッション前行番号、 コマンドタグ、 セッション開始時間、 仮想トランザクション識別子、 通常トランザクション識別子、 エラーの深刻度、 SQL状態コード、 エラーメッセージ、 詳細エラーメッセージ、 ヒント、 エラーとなった内部的な問い合わせ(もしあれば)、 内部問い合わせにおけるエラー位置の文字数、 エラーの文脈、 PostgreSQLソースコード上のエラー発生場所(log_error_verbosityがverboseに設定されているならば) アプリケーション名。 以下にcsvlog出力を格納するためのテーブル定義のサンプルを示します。CREATE TABLE postgres_log ( log_time timestamp(3) with time zone, user_name text, database_name text, process_id integer, connection_from text, session_id text, session_line_num bigint, command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, error_severity text, sql_state_code text, message text, detail text, hint text, internal_query text, internal_query_pos integer, context text, query text, query_pos integer, location text, application_name text, PRIMARY KEY (session_id, session_line_num) );https://www.postgresql.jp/document/9.4/html/runtime-config-logging.html