このトピックでは、log_fdw拡張機能を使用してApsaraDB RDS for PostgreSQLインスタンスのデータベースログを照会する方法について説明します。
前提条件
RDSインスタンスはPostgreSQL 11を実行します。 RDSインスタンスがPostgreSQL 11を実行しても拡張機能を作成できない場合は、RDSインスタンスのマイナーエンジンバージョンを更新する必要があります。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのマイナーエンジンバージョンの更新」をご参照ください。背景情報
log_fdw拡張機能は、次の機能を提供します。list_postgres_log_files()
: すべてをリストします。csvログファイル。create_foreign_table_for_log_file(IN table_name text, IN log_server text, IN log_file text)
: 特定に関連付けられた外部テーブルを作成します。csvログファイル。
手順
- log_fdw拡張子を作成します。
postgres=> create extension log_fdw; 拡張の作成
- ログサーバの定義を作成します。
postgres=> create server <ログサーバーの名前> 外部データラッパーlog_fdw;
例:
postgres=> サーバーlog_server外部データラッパーlog_fdwを作成します。サーバーの作成
list_postgres_log_files()
関数を呼び出して、すべてを一覧表示します。csvログファイル。postgres=> select * from list_postgres_log_files() file_name | file_size_bytes ---------------------------------- + ----------------- postgresql-2020-01-10_095546.csv | 3794 postgresql-2020-01-10_100336.csv | 318318 postgresql-2020-01-11_000000.csv | 198437 postgresql-2020-01-11_083546.csv | 4775 postgresql-2020-01-13_030618.csv | 3347
create_foreign_table_for_log_file(IN table_name text, IN log_server text, IN log_file text)
関数を呼び出して、特定に関連付けられた外部テーブルを作成します。csvログファイル。postgres=> select create_foreign_table_for_log_file('<外部テーブルの名前>' 、'<ログサーバーの名前>' 、'<外部テーブルに関連付けられた. csvログファイルの名前>');
例:
postgres=> select create_foreign_table_for_log_file('ft1', 'log_server', 'postgresql-2020-01-13_030618.csv '); create_foreign_table_for_log_file ----------------------------------- t (1行)
- 外部テーブルを照会して、のデータを取得します。csvログファイル。
postgres=> select log_time, message from <The name of the foreign table> order by log_time desc limit 2;
例:
postgres=> select log_time、ft1からのメッセージlog_time desc limit 2; log_time | メッセージ ---------------------------- + ------------------------------------------------------------------- 2020-01-13 03:35:00.003 + 00 | cron job 1 completed: INSERT 0 1 2020-01-13 03:35:00 + 00 | cronジョブ1開始: cron_test値に挿入 ('Hello World ') (2行)
外部テーブルのスキーマ
postgres=> \d + ft1
外国のテーブル "public.ft1"
列 | タイプ | 照合順序 | Nullable | デフォルト | FDWオプション | ストレージ | ターゲット統計 | 説明
------------------------ ----------------------------- + -------------------------------------------------------------------------------------------
log_time | タイムスタンプ (3) とタイムゾーン | | | | | | プレーン | |
user_name | テキスト | | | | | | 拡張 | |
database_name | テキスト | | | | | | 拡張 | |
process_id | integer | | | | | プレーン | |
connection_from | text | | | | | | 拡張 | |
session_id | text | | | | | | 拡張 | |
session_line_num | bigint | | | | | プレーン | |
command_tag | text | | | | | | 拡張 | |
session_start_time | タイムゾーンのタイムスタンプ | | | | | プレーン | |
virtual_transaction_id | text | | | | | | 拡張 | |
transaction_id | bigint | | | | | | プレーン | |
error_severity | text | | | | | | 拡張 | |
sql_state_code | テキスト | | | | | | 拡張 | |
メッセージ | テキスト | | | | | | 拡張 | |
detail | text | | | | | | 拡張 | |
ヒント | テキスト | | | | | | 拡张 | |
internal_query | テキスト | | | | | 拡張 | |
internal_query_pos | 整数 | | | | | | プレーン | |
コンテキスト | text | | | | | | 拡張 | |
クエリ | テキスト | | | | | | 拡張 | |
query_pos | 整数 | | | | | | プレーン | |
場所 | テキスト | | | | | | 拡張 | |
application_name | text | | | | | | 拡張 | |
サーバー: log_server
FDWオプション :( ファイル名 'postgresql-2020-01-13_030618.csv ')