File log basis data RDS for PostgreSQL - 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.

File log basis data RDS for PostgreSQL

RDS for PostgreSQL mencatat aktivitas basis data ke file log PostgreSQL default. Untuk instans DB PostgreSQL on-premise, pesan ini disimpan secara titik waktu di log/postgresql.log. Untuk instans DB RDS for PostgreSQL, file log tersedia di instans Amazon RDS. Selain itu, Anda harus menggunakan Konsol Amazon RDS untuk melihat atau mengunduh kontennya. Tingkat pencatatan log default menangkap kegagalan masuk, kesalahan server fatal, kebuntuan, dan kegagalan kueri.

Untuk mengetahui informasi selengkapnya tentang cara menampilkan, mengunduh, dan melihat log basis data berbasis file, lihat Memantau file log Amazon RDS. Untuk mempelajari selengkapnya tentang log PostgreSQL, lihat Menggunakan log Amazon RDS dan Aurora PostgreSQL: Bagian 1 dan Menggunakan log Amazon RDS dan Aurora PostgreSQL: Bagian 2.

Selain log PostgreSQL standar yang dibahas dalam topik ini, RDS for PostgreSQL juga mendukung ekstensi PostgreSQL Audit (pgAudit). Sebagian besar industri dan lembaga pemerintah yang teregulasi perlu mempertahankan log audit atau jejak audit perubahan yang dibuat pada data untuk memenuhi persyaratan hukum. Untuk mengetahui informasi tentang cara menginstal dan menggunakan pgAudit, lihat Menggunakan pgAudit untuk membuat log aktivitas basis data.

Parameter yang memengaruhi perilaku pencatatan log

Anda dapat menyesuaikan perilaku pencatatan log untuk instans DB RDS for PostgreSQL dengan mengubah berbagai parameter. Dalam tabel berikut, Anda dapat menemukan parameter yang memengaruhi durasi penyimpanan log, waktu untuk memutar log, dan apakah akan menampilkan log sebagai format CSV (nilai yang dipisahkan koma). Anda juga dapat menemukan output teks yang dikirim ke STDERR, di antara pengaturan lainnya. Untuk mengubah pengaturan parameter yang dapat diubah, gunakan grup parameter DB kustom untuk Instans RDS for PostgreSQL. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan grup parameter DB dalam instance DB. Seperti disebutkan dalam tabel, log_line_prefix tidak dapat diubah.

Parameter Default Deskripsi

log_destination

stderr

Menetapkan format output untuk log. Default-nya adalah stderr, tetapi Anda juga dapat menentukan nilai dipisahkan koma (CSV) dengan menambahkan csvlog ke pengaturan. Untuk informasi selengkapnya, lihat Mengatur tujuan log (stderr, csvlog)

log_filename

postgresql.log.%Y-%m-%d-%H

Menentukan pola untuk nama file log. Selain default, parameter ini mendukung postgresql.log.%Y-%m-%d untuk pola nama file.

log_line_prefix

%t:%r:%u@%d:[%p]:

Mendefinisikan awalan untuk setiap baris log yang akan ditulis ke stderr, untuk mencatat waktu (%t), host jarak jauh (%r), pengguna (%u), basis data (%d), dan ID proses (%p). Anda tidak dapat mengubah parameter ini.

log_rotation_age

60

Menit setelah file log dirotasi secara otomatis. Anda dapat mengubah nilai ini dalam kisaran 1 dan 1440 menit. Untuk informasi selengkapnya, lihat Mengatur rotasi file log.

log_rotation_size

Ukuran (kB) tempat log dirotasi secara otomatis. Secara default, parameter ini tidak digunakan karena log diputar berdasarkan log_rotation_age parameter. Untuk mempelajari selengkapnya, lihat Mengatur rotasi file log.

rds.log_retention_period

4320

Log PostgreSQL yang lebih lama dari jumlah menit yang ditentukan dihapus. Nilai default 4320 menit menghapus file log setelah 3 hari. Untuk informasi selengkapnya, lihat Mengatur periode retensi log.

Untuk mengidentifikasi masalah aplikasi, Anda dapat mencari kegagalan kueri, kegagalan masuk, kebuntuan, dan kesalahan server fatal di log. Misalnya, anggaplah Anda mengonversi aplikasi lama dari Oracle ke Amazon RDS PostgreSQL, tetapi tidak semua kueri dikonversi dengan benar. Kueri yang salah format ini menghasilkan pesan kesalahan yang dapat Anda temukan di log untuk membantu mengidentifikasi masalah. Untuk mengetahui informasi selengkapnya tentang pencatatan log kueri, lihat Mengaktifkan pencatatan log kueri untuk instans DB RDS for PostgreSQL.

Dalam topik berikut, Anda dapat menemukan informasi tentang cara mengatur berbagai parameter yang mengontrol detail dasar untuk log PostgreSQL Anda.

Mengatur periode retensi log

Parameter rds.log_retention_period menentukan berapa lama instans DB RDS for PostgreSQL menyimpan file log-nya. Pengaturan default-nya adalah 3 hari (4.320 menit), tetapi Anda dapat mengatur nilai ini ke mana saja dari 1 hari (1.440 menit) hingga 7 hari (10.080 menit). Pastikan bahwa instans DB RDS for PostgreSQL Anda memiliki penyimpanan yang cukup untuk menyimpan file log selama periode waktu tertentu.

Kami menyarankan agar log Anda dipublikasikan secara rutin ke Amazon CloudWatch Logs sehingga Anda dapat melihat dan menganalisis data sistem lama setelah log dihapus dari cluster DB Aurora Anda. Instans DB RDS for PostgreSQL. Untuk mengetahui informasi selengkapnya, lihat Menerbitkan log PostgreSQL ke Amazon Logs CloudWatch . .

Mengatur rotasi file log

Amazon RDS membuat file log baru setiap jam secara default. Waktu dikontrol oleh parameter log_rotation_age. Parameter ini memiliki nilai default 60 (menit), tetapi Anda dapat mengaturnya ke mana saja dari 1 menit hingga 24 jam (1.440 menit). Ketika tiba waktunya rotasi, file log baru yang berbeda akan dibuat. File ini diberi nama sesuai dengan pola yang ditentukan oleh parameter log_filename.

File log juga dapat dirotasi sesuai dengan ukurannya, seperti yang ditentukan dalam parameter log_rotation_size. Parameter ini menentukan bahwa log harus dirotasi saat mencapai ukuran yang ditentukan (dalam kilobyte). Untuk instans DB RDS for PostgreSQL, log_rotation_size tidak diatur, yaitu tidak ada nilai yang ditentukan. Namun, Anda dapat mengatur parameter dari 0-2097151 kB (kilobyte).

Nama file log didasarkan pada pola nama file yang ditentukan dalam parameter log_filename. Pengaturan yang tersedia untuk parameter ini adalah sebagai berikut:

  • postgresql.log.%Y-%m-%d – Format default untuk nama file log. Termasuk tahun, bulan, dan tanggal dalam nama file log.

  • postgresql.log.%Y-%m-%d-%H – Termasuk jam dalam format nama file log.

Untuk mengetahui informasi selengkapnya, lihat log_rotation_age dan log_rotation_size dalam dokumentasi PostgreSQL.

Mengatur tujuan log (stderr, csvlog)

Secara default, Amazon RDS PostgreSQL menghasilkan log dalam format kesalahan standar (stderr). Format ini adalah pengaturan default untuk parameter log_destination. Setiap pesan diawali menggunakan pola yang ditentukan dalam parameter log_line_prefix. Untuk mengetahui informasi selengkapnya, lihat Memahami parameter log_line_prefix.

RDS for PostgreSQL juga dapat menghasilkan log dalam format csvlog. csvlog berguna untuk menganalisis data log sebagai data nilai yang dipisahkan koma (CSV). Misalnya, anggaplah Anda menggunakan ekstensi log_fdw untuk bekerja dengan log Anda sebagai tabel asing. Tabel asing yang dibuat pada file log stderr berisi satu kolom dengan data peristiwa log. Dengan menambahkan csvlog ke parameter log_destination, Anda mendapatkan file log dalam format CSV dengan demarkasi untuk beberapa kolom tabel asing. Anda kini dapat mengurutkan dan menganalisis log dengan lebih mudah. Untuk mempelajari cara menggunakan log_fdw dengan csvlog, lihat Menggunakan ekstensi log_fdw untuk mengakses log DB menggunakan SQL.

Jika Anda menentukan csvlog untuk parameter ini, perhatikan bahwa file stderr dan csvlog dihasilkan. Pastikan untuk memantau penyimpanan yang digunakan oleh log, dengan mempertimbangkan rds.log_retention_period dan pengaturan lain yang memengaruhi penyimpanan log dan omset. Menggunakan stderr dan csvlog lebih dari dua kali lipat penyimpanan yang digunakan oleh log.

Jika Anda menambahkan csvlog ke log_destination dan ingin kembali ke stderr sendiri, Anda perlu mengatur ulang parameter. Untuk melakukannya, buka Konsol Amazon RDS, lalu buka grup parameter DB untuk instans Anda. Pilih parameter log_destination, pilih Edit parameter, lalu pilih Atur ulang.

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi pencatatan log, lihat Menggunakan log Amazon RDS dan Aurora PostgreSQL: Bagian 1.

Memahami parameter log_line_prefix

Format log stderr mengawali setiap pesan log dengan detail yang ditentukan oleh parameter log_line_prefix, sebagai berikut.

%t:%r:%u@%d:[%p]:t

Anda dapat mengubah pengaturan ini. Setiap entri log yang dikirim ke stderr berisi informasi berikut.

  • %t – Waktu entri log

  • %r – Alamat host jarak jauh

  • %u@%d – Nama pengguna @ nama basis data

  • [%p] – ID Proses jika tersedia

Mengaktifkan pencatatan log kueri untuk instans DB RDS for PostgreSQL

Anda dapat mengumpulkan informasi yang lebih mendetail tentang aktivitas basis data, termasuk kueri, kueri yang menunggu kunci, titik pemeriksaan, dan banyak detail lainnya dengan mengatur beberapa parameter yang tercantum dalam tabel berikut. Topik ini berfokus pada kueri pencatatan log.

Parameter Default Deskripsi

log_connections

Mencatat log setiap koneksi yang berhasil.

log_disconnections

Mencatat log akhir setiap sesi dan durasinya.

log_checkpoints

1

Mencatat log setiap titik pemeriksaan.

log_lock_waits

Mencatat log waktu tunggu kunci yang panjang. Secara default, parameter ini tidak diatur.

log_min_duration_sample

(md) Menetapkan waktu eksekusi minimum yang jika terlampaui akan membuat sampel pernyataan dicatat. Ukuran sampel diatur menggunakan parameter log_statement_sample_rate.

log_min_duration_statement

Setiap pernyataan SQL yang berjalan setidaknya selama periode waktu tertentu atau lebih lama akan dicatat. Secara default, parameter ini tidak diatur. Mengaktifkan parameter ini dapat membantu Anda menemukan kueri yang belum dioptimalkan.

log_statement

Mengatur jenis pernyataan yang dicatat. Secara default, parameter ini tidak diatur, tetapi Anda dapat mengubahnya ke all, ddl, atau mod untuk menentukan jenis pernyataan SQL yang ingin Anda catat. Jika menentukan apa pun selain none untuk parameter ini, Anda juga harus mengambil langkah-langkah tambahan untuk mencegah eksposur kata sandi dalam file log. Untuk informasi selengkapnya, lihat Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri.

log_statement_sample_rate

Persentase pernyataan melebihi waktu yang ditentukan dalam log_min_duration_sample untuk dicatat, yang dinyatakan sebagai nilai titik mengambang antara 0,0 dan 1,0.

log_statement_stats

Menulis statistik performa kumulatif ke log server.

Menggunakan pencatatan log untuk menemukan kueri performa lambat

Anda dapat mencatat pernyataan dan kueri SQL untuk membantu menemukan kueri performa lambat. Anda mengaktifkan kemampuan ini dengan memodifikasi pengaturan di log_statement dan parameter log_min_duration seperti yang diuraikan dalam bagian ini. Sebelum mengaktifkan pencatatan log kueri untuk instans DB RDS for PostgreSQL, Anda harus mengetahui kemungkinan eksposur kata sandi di dalam log dan cara mengurangi risiko ini. Untuk informasi selengkapnya, lihat Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri.

Berikut ini, Anda dapat menemukan informasi referensi tentang parameter log_statement dan log_min_duration.

log_statement

Parameter ini menentukan jenis pernyataan SQL yang harus dikirim ke log. Nilai default-nya adalah none. Jika Anda mengubah parameter ini ke all, ddl, atau mod, pastikan untuk menerapkan tindakan yang disarankan untuk mengurangi risiko eksposur kata sandi di dalam log. Untuk informasi selengkapnya, lihat Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri.

all

Mencatat log semua pernyataan. Pengaturan ini direkomendasikan untuk tujuan debugging.

ddl

Mencatat log semua pernyataan bahasa definisi data (DDL), seperti CREATE, ALTER, DROP, dan seterusnya.

mod

Mencatat log semua pernyataan DDL dan pernyataan bahasa manipulasi data (DL), seperti INSERT, UPDATE, dan DELETE, yang mengubah data.

none

Tidak ada pernyataan SQL yang dicatat. Kami merekomendasikan pengaturan ini untuk menghindari risiko eksposur kata sandi di dalam log.

log_min_duration_statement

Setiap pernyataan SQL yang berjalan setidaknya selama periode waktu tertentu atau lebih lama akan dicatat. Secara default, parameter ini tidak diatur. Mengaktifkan parameter ini dapat membantu Anda menemukan kueri yang belum dioptimalkan.

–1–2147483647

Jumlah milidetik (md) runtime di mana pernyataan dicatat.

Untuk menyiapkan pencatatan log kueri

Langkah-langkah ini mengasumsikan bahwa Instans DB RDS for PostgreSQL menggunakan grup parameter DB kustom.

  1. Atur parameter log_statement ke all. Contoh berikut ini menunjukkan informasi yang ditulis ke file postgresql.log dengan pengaturan parameter ini.

    2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats: ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed ! [0.025146 s user, 0.000000 s system total] ! 36644 kB max resident size ! 0/8 [0/8] filesystem blocks in/out ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent ! 19/0 [27/0] voluntary/involuntary context switches 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC; ----------------------- END OF LOG ----------------------
  2. Atur parameter log_min_duration_statement. Contoh berikut ini menunjukkan informasi yang ditulis ke file postgresql.log saat pengaturan parameter ini diatur ke 1.

    Kueri yang melebihi durasi yang ditentukan dalam parameter log_min_duration_statement dicatat. Bagian berikut menunjukkan satu contoh. Anda dapat melihat file log untuk instans DB RDS for PostgreSQL di Konsol Amazon RDS.

    2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments; 2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms 2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time 2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB ----------------------- END OF LOG ----------------------

Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri

Sebaiknya Anda tetap mengatur log_statement ke none agar tidak mengekspos kata sandi. Jika Anda mengatur log_statement ke all, ddl, atau mod, sebaiknya Anda mengambil satu atau beberapa langkah berikut.

  • Untuk klien, enkripsi informasi sensitif. Untuk mengetahui informasi selengkapnya, lihat Opsi Enkripsi dalam dokumentasi PostgreSQL. Gunakan opsi ENCRYPTED (dan UNENCRYPTED) dari pernyataan CREATE dan ALTER. Untuk mengetahui informasi selengkapnya, lihat CREATE USER dalam dokumentasi PostgreSQL.

  • Untuk instans DB RDS for PostgreSQL, siapkan dan gunakan ekstensi PostgreSQL Audit (pgAaudit). Ekstensi ini menyunting informasi sensitif dalam pernyataan CREATE dan ALTER yang dikirim ke log. Untuk informasi selengkapnya, lihat Menggunakan pgAudit untuk membuat log aktivitas basis data.

  • Batasi akses ke CloudWatch log.

  • Gunakan mekanisme autentikasi yang lebih kuat seperti IAM.

Menerbitkan log PostgreSQL ke Amazon Logs CloudWatch

Untuk menyimpan catatan log PostgreSQL Anda dalam penyimpanan yang sangat tahan lama, Anda dapat menggunakan Amazon Logs. CloudWatch Dengan CloudWatch Log, Anda juga dapat melakukan analisis real-time data log dan digunakan CloudWatch untuk melihat metrik dan membuat alarm. Misalnya, jika Anda mengatur log_statement ke ddl, Anda dapat menyiapkan alarm untuk memperingatkan Anda setiap kali pernyataan DDL dijalankan. Anda dapat memilih agar log PostgreSQL Anda diunggah ke Log selama proses pembuatan RDS CloudWatch untuk instance PostgreSQL DB. Jika memilih untuk tidak mengunggah log pada saat itu, Anda nantinya dapat mengubah instans untuk mulai mengunggah log sejak saat itu. Dengan kata lain, log yang ada tidak diunggah. Hanya log baru yang diunggah saat dibuat pada instans DB RDS for PostgreSQL Anda yang dimodifikasi.

Semua RDS yang tersedia saat ini untuk versi PostgreSQL mendukung penerbitan file log ke Log. CloudWatch Untuk mengetahui informasi selengkapnya, lihat Pembaruan Amazon RDS for PostgreSQL di Catatan Rilis Amazon RDS for PostgreSQL.

Untuk bekerja dengan CloudWatch Log, konfigurasikan RDS Anda untuk instans PostgreSQL DB untuk mempublikasikan data log ke grup log.

Anda dapat mempublikasikan jenis log berikut ke CloudWatch Log untuk RDS untuk PostgreSQL:

  • Log Postgresql

  • Log peningkatan

Setelah Anda menyelesaikan konfigurasi, Amazon RDS menerbitkan peristiwa log untuk mencatat aliran dalam grup log. CloudWatch Sebagai contoh, data log PostgreSQL disimpan dalam grup log /aws/rds/instance/my_instance/postgresql. Untuk melihat log Anda, buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

Untuk mempublikasikan log PostgreSQL ke Log menggunakan konsol CloudWatch
  1. Buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Basis data.

  3. Pilih instans DB yang ingin diubah, lalu pilih Ubah.

  4. Di bagian Log ekspor, pilih log yang ingin Anda mulai terbitkan ke CloudWatch Log.

    Bagian ekspor Log hanya tersedia untuk versi PostgreSQL yang mendukung penerbitan ke Log. CloudWatch

  5. Pilih Lanjutkan, lalu pilih Ubah Instans DB di halaman ringkasan.

Anda dapat mempublikasikan log PostgreSQL dengan file. AWS CLI Anda dapat memanggil perintah modify-db-instance dengan parameter berikut.

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

catatan

Perubahan pada opsi --cloudwatch-logs-export-configuration selalu diterapkan ke instans DB secara langsung. Oleh karena itu, opsi --apply-immediately dan --no-apply-immediately tidak akan berpengaruh.

Anda juga dapat menerbitkan log PostgreSQL dengan memanggil perintah CLI berikut:

Jalankan salah satu perintah CLI ini dengan opsi berikut:

  • --db-instance-identifier

  • --enable-cloudwatch-logs-exports

  • --db-instance-class

  • --engine

Opsi lain mungkin diperlukan bergantung pada perintah CLI yang Anda jalankan.

contoh Memodifikasi instance untuk mempublikasikan log ke CloudWatch Log

Contoh berikut memodifikasi instance PostgreSQL DB yang ada untuk mempublikasikan file log ke Log. CloudWatch Nilai --cloudwatch-logs-export-configuration adalah objek JSON. Kunci untuk objek ini adalah EnableLogTypes, dan nilainya adalah serangkaian string dengan kombinasi postgresql dan upgrade apa pun.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'

Untuk Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'
contoh Buat instance untuk mempublikasikan log ke CloudWatch Log

Contoh berikut membuat instance PostgreSQL DB dan menerbitkan file log ke Log. CloudWatch Nilai --enable-cloudwatch-logs-exports adalah rangkaian string JSON. String dapat berupa kombinasi postgresql dan upgrade apa pun.

Untuk Linux, macOS, atau Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \ --db-instance-class db.m4.large \ --engine postgres

Untuk Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^ --db-instance-class db.m4.large ^ --engine postgres

Anda dapat menerbitkan log PostgreSQL dengan RDS API. Anda dapat memanggil tindakan ModifyDBInstance dengan parameter berikut:

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

catatan

Perubahan pada parameter CloudwatchLogsExportConfiguration selalu diterapkan ke instans DB secara langsung. Oleh karena itu, parameter ApplyImmediately tidak memiliki dampak.

Anda juga dapat menerbitkan log PostgreSQL dengan memanggil operasi RDS API berikut:

Jalankan salah satu operasi RDS API ini dengan parameter berikut:

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

Parameter lain mungkin diperlukan bergantung pada operasi yang Anda jalankan.