Menggunakan ekstensi log_fdw untuk mengakses log DB menggunakan SQL - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan ekstensi log_fdw untuk mengakses log DB menggunakan SQL

untuk instans Postgre SQL DB mendukung log_fdw ekstensi, yang dapat Anda gunakan untuk mengakses log mesin database Anda menggunakan antarmuka. SQL Ekstensi log_fdw ini memberikan dua fungsi yang memudahkan pembuatan tabel asing untuk log basis data:

  • list_postgres_log_files – Mencantumkan file di direktori log basis data dan ukuran file dalam byte.

  • create_foreign_table_for_log_file(table_name text, server_name text, log_file_name text) – Membangun tabel asing untuk file yang ditentukan dalam basis data saat ini.

Semua fungsi yang dibuat oleh log_fdw dimiliki oleh rds_superuser. Anggota dengan peran rds_superuser dapat memberikan akses ke fungsi ini kepada pengguna basis data lain.

Secara default, file log dihasilkan oleh dalam format stderr (kesalahan standar), seperti yang ditentukan dalam log_destination parameter. Hanya ada dua opsi untuk parameter ini, stderr dan csvlog (nilai yang dipisahkan koma,CSV). Jika Anda menambahkan csvlog opsi ke parameter, menghasilkan keduanya stderr dan csvlog log. Hal ini dapat memengaruhi kapasitas penyimpanan pada klaster DB sehingga Anda perlu mengetahui parameter lain yang memengaruhi penanganan log. Untuk informasi selengkapnya, lihat Mengatur tujuan log (stderr, csvlog).

Salah satu manfaat pembuatan log csvlog adalah ekstensi log_fdw memungkinkan Anda membangun tabel asing dengan data yang terbagi dengan rapi menjadi beberapa kolom. Untuk melakukannya, instans Anda harus terkait dengan grup parameter DB kustom sehingga Anda dapat mengubah pengaturan log_destination. Untuk informasi selengkapnya tentang cara melakukannya, lihat Bekerja dengan parameter pada instans DB RDS for PostgreSQL.

Contoh berikut mengasumsikan bahwa parameter log_destination mencakup cvslog.

Untuk menggunakan ekstensi log_fdw
  1. Instal ekstensi log_fdw.

    postgres=> CREATE EXTENSION log_fdw; CREATE EXTENSION
  2. Buat server log sebagai pembungkus data asing.

    postgres=> CREATE SERVER log_server FOREIGN DATA WRAPPER log_fdw; CREATE SERVER
  3. Pilih semua dari daftar file log.

    postgres=> SELECT * FROM list_postgres_log_files() ORDER BY 1;

    Respons sampel sebagai berikut.

    file_name | file_size_bytes ------------------------------+----------------- postgresql.log.2023-08-09-22.csv | 1111 postgresql.log.2023-08-09-23.csv | 1172 postgresql.log.2023-08-10-00.csv | 1744 postgresql.log.2023-08-10-01.csv | 1102 (4 rows)
  4. Membuat tabel dengan satu kolom 'log_entry' untuk file yang dipilih.

    postgres=> SELECT create_foreign_table_for_log_file('my_postgres_error_log', 'log_server', 'postgresql.log.2023-08-09-22.csv');

    Respons tersebut tidak memberikan detail selain memberitahukan bahwa tabel telah ada.

    ----------------------------------- (1 row)
  5. Pilih sampel file log. Kode berikut mengambil waktu log dan deskripsi pesan kesalahan.

    postgres=> SELECT log_time, message FROM my_postgres_error_log ORDER BY 1;

    Respons sampel sebagai berikut.

    log_time | message ----------------------------------+--------------------------------------------------------------------------- Tue Aug 09 15:45:18.172 2023 PDT | ending log output to stderr Tue Aug 09 15:45:18.175 2023 PDT | database system was interrupted; last known up at 2023-08-09 22:43:34 UTC Tue Aug 09 15:45:18.223 2023 PDT | checkpoint record is at 0/90002E0 Tue Aug 09 15:45:18.223 2023 PDT | redo record is at 0/90002A8; shutdown FALSE Tue Aug 09 15:45:18.223 2023 PDT | next transaction ID: 0/1879; next OID: 24578 Tue Aug 09 15:45:18.223 2023 PDT | next MultiXactId: 1; next MultiXactOffset: 0 Tue Aug 09 15:45:18.223 2023 PDT | oldest unfrozen transaction ID: 1822, in database 1 (7 rows)