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
-
Instal ekstensi
log_fdw
.postgres=>
CREATE EXTENSION log_fdw;
CREATE EXTENSION
-
Buat server log sebagai pembungkus data asing.
postgres=>
CREATE SERVER log_server FOREIGN DATA WRAPPER log_fdw;
CREATE SERVER
-
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)
-
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)
-
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)