すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:log_fdw拡張子を使用してログを照会する

最終更新日:Mar 19, 2024

このトピックでは、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ログファイル。

手順

  1. log_fdw拡張子を作成します。
    postgres=> create extension log_fdw;
    拡張の作成 
  2. ログサーバの定義を作成します。
    postgres=> create server <ログサーバーの名前> 外部データラッパーlog_fdw;

    例:

    postgres=> サーバーlog_server外部データラッパーlog_fdwを作成します。サーバーの作成 
  3. 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 
  4. 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行) 
  5. 外部テーブルを照会して、のデータを取得します。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 ')