PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara merotasi log PgBouncer di Linux/Windows?

Sebelum mendalami subjek, garis besar singkat tentang PgBouncer, ini adalah kumpulan koneksi ringan untuk PostgreSQL yang secara dramatis mengurangi waktu pemrosesan dan sumber daya untuk mempertahankan sejumlah besar koneksi klien ke satu atau beberapa database. Biasanya digunakan untuk meningkatkan jumlah koneksi pengguna yang dapat ditangani di lingkungan kinerja tinggi. Untuk detail selengkapnya tentang Memasang/Mengonfigurasi PgBouncer, lihat dokumentasi di sini.
Seperti alat lainnya, PgBouncer memiliki arsitektur  stderr/syslog logging untuk merekam koneksi, pemutusan, dan  pooler_errors dengan tingkat verbositas yang berbeda. Sampai sekarang, sebagian besar logging pergi ke satu file "pgbouncer.log" dan tumbuh tanpa henti. Terkadang, ini mungkin merupakan risiko potensial membuat sistem tidak responsif karena kurangnya ruang disk di lokasi file log. Saat ini, logging PgBouncer tidak memiliki konfigurasi bawaan untuk memutar log berdasarkan usia atau ukuran, sehingga memaksa pengguna untuk memilih metode alternatif. IMO, ada dua pendekatan untuk menanganinya :-

  1. Konfigurasikan PgBouncer dalam metode “syslog” untuk mengandalkan rotasi log OS atau
  2. Konfigurasikan rotasi log menggunakan utilitas OS pada file “pgbouncer.log”.

Metode 1:

Cukup mudah untuk mengkonfigurasi syslog di PgBouncer, setel "syslog" ke 1 (default 0); beri nama untuk memulai baris log di log OS di "syslog_ident" (default 'pgbouncer') dan tentukan detail fasilitas di "syslog_facility" (daemon default). Contoh keluaran dari log OS saya(/var/log/messages):

5 Agustus 16:54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 upaya login:db=postgres user=postgres tls=tidak
5 Agustus 16:54:27 raghavt pgbouncer[62549]:S-0x1ce4b10:postgres/[email protected]:5432 koneksi baru ke server (dari 127.0.0.1:38947)
5 16 Agustus :54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 penutupan karena:permintaan penutupan klien (usia=0)

Catatan:Jika “syslog” diaktifkan, beri komentar atau kosongkan parameter “logfile”, jika tidak, itu akan menjadi pencatatan tambahan.

Metode 2:

Logrotate adalah salah satu utilitas OS yang memiliki kemampuan untuk memutar log secara sistematis dan mengarsipkan untuk mengurangi kebutuhan ruang disk sistem operasi. Setiap file log dapat ditangani setiap hari, setiap minggu, setiap bulan, atau jika terlalu besar. File konfigurasi default “/etc/logrotate.conf” mendefinisikan usia/ukuran/interval rotasi log. Menggunakan alat ini, log dapat disimpan lebih lama dengan ruang disk yang lebih sedikit. Banyak orang telah mengartikulasikan tentang penggunaan utilitas yang dapat Anda temukan melalui internet, jadi saya langsung masuk ke fase implementasi.
Pertama, buat file konfigurasi di direktori /etc/logrotate.d/ untuk log pgbouncer . Saya telah menamakannya sebagai “/etc/logrotate.d/pgbouncer” dengan detail di bawah ini:

/var/log/pgbouncer/pgbouncer.log {
putar 10
missingok
skrip bersama
notifempty
nocompress
ukuran 10m
setiap hari
buat 0640 postgres postgres
postrotate
/bin/kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> /dev/ null` 2>/dev/null ||true
skrip akhir
}

Tentang file konfigurasi, baris pertama menunjukkan lokasi file log pgbouncer (nilai parameter "logfile" dalam file pgbouncer.ini) dan selanjutnya adalah parameter yang bekerja pada ambang rotasi seperti; berapa banyak file log yang harus dipelihara (diputar); masalah tidak ada kesalahan dan pergi ke log berikutnya (missingok); skrip apa yang harus dijalankan sebelum/sesudah rotasi (prerotate/postrotate); menjalankan skrip pra/posting sekali atau beberapa kali (skrip bersama); jangan memutar log jika kosong (notifempty); setelah rotasi, file log lama harus dikompresi dengan utilitas gzip (kompres/nokompresi); tentang berapa banyak ukuran rotasi log yang harus dilakukan (ukuran); seberapa sering memutar log tertentu (harian); dan izin apa file log baru seharusnya (buat).

Sekarang kita dapat melihat file log baru diputar dengan ukuran 10 juta. (Kita bahkan dapat memaksa rotasi dengan perintah “logrotate -f /etc/logrotate.conf”)

[[email protected] pgbouncer]# ls -lrth
total 16K
-rw-r—–. 1 postgres postgres 10M 27 Jul 15:30 pgbouncer.log-20160727
-rw-r—–. 1 postgres postgres 11K 27 Juli 18:32 pgbouncer.log

Itu sederhana kan , sekarang mari kita periksa hal yang sama di lingkungan Windows.

Di Windows:

Saya tahu sedikit tentang utilitas windows, akibatnya saya melakukan googling dan menemukan utilitas versi Windows yang disebut “LogRotateWin” yang bekerja sama seperti versi Linux dari logrotate. Untuk detail selengkapnya, lihat dokumentasi mendetail yang tersedia di Penginstalan/Konfigurasi/Penggunaan di sini.
Mari kita lihat cara kerjanya, unduh terlebih dahulu LogRotateWin versi “.msi” yang tersedia di situs sebagai file “logrotateSetup*.zip”. Ekstrak dan jalankan file ".msi", itu akan menginstal utilitas ke lokasi "c:Program Files (x86)LogRotate". Anda dapat menemukan file konfigurasi default(logrotate.conf) di bawah “c:Program Files (x86)LogRotateContent”.
Selanjutnya, edit file “c:Program Files (x86)LogRotateContentlogrotate.conf” dan tentukan path lengkapnya dari file "pgbouncer.log" dengan parameter rotasi yang sama. Contoh salinan file konfigurasi saya yang diuji pada Windows 10. (Catatan:Nilai parameter di bawah ini digunakan untuk menguji utilitas)

c:Program Files (x86)LogRotateContent>lebih banyak logrotate.conf
“c:Program Files (x86)PgBouncerlogpgbouncer.log” {
rotate 10
copytruncate
buat
missingok
skrip bersama
nocompress
ukuran 200k
setiap hari
}

Untuk memverifikasi, saya telah memaksa rotasi log dengan opsi “-f”

c:Program Files (x86)LogRotate>logrotate.exe -f Contentlogrotate.conf
logrotate:Paksa opsi disetel ke true

Ini hasilnya:

C:Program Files (x86)PgBouncerlog>dir
Volume di drive C tidak memiliki label.
Nomor Seri Volume adalah F226-9FFB

Direktori C:Program Files (x86)PgBouncerlog

08/08/2016 13:31 PM

.
08/08/2016 13:31 PM ..
08/08/2016 13:31 PM 0 pgbouncer.log
08/08/2016 01:31 PM 6.626 pgbouncer.log.1
08/08/2016 13:31 PM 13,252 pgbouncer.log.2
3 File 19.878 byte
2 Dir 26.905.051.136 byte gratis

Bagus sekali !!!.
Pada kebanyakan distribusi Linux, logrotate berjalan setiap hari menggunakan “logrotate.conf” sebagai bagian dari cronjob, sama halnya di Windows, kita dapat menjadwalkan tugas di Windows Task Scheduler untuk memutar log setiap hari. FYI, saya belum banyak mengeksplorasi utilitas "LogRotateWin" hanya tingkat dasar. Jika Anda mengalami masalah apa pun, harap posting di forum Diskusi Umum logrotate.
Terima kasih telah membaca.
–Raghav


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Menampilkan Semua Database di PostgreSQL (psql)

  2. Mengapa bilangan bulat yang tidak ditandatangani tidak tersedia di PostgreSQL?

  3. Psycopg2 menggunakan memori pada kueri pemilihan besar

  4. Kesalahan sintaks tabel drop postgres

  5. Nantikan PGConf India 2017