PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để xoay nhật ký PgBouncer trong Linux / Windows?

Trước khi đi sâu vào chủ đề này, hãy giới thiệu sơ lược về PgBouncer, một trình gộp kết nối nhẹ cho PostgreSQL giúp giảm đáng kể thời gian xử lý và tài nguyên để duy trì một số lượng lớn các kết nối máy khách với một hoặc nhiều cơ sở dữ liệu. Thường được sử dụng để tăng số lượng kết nối người dùng có thể được xử lý trong môi trường hiệu suất cao. Để biết thêm chi tiết về Cài đặt / Định cấu hình PgBouncer, hãy tham khảo tài liệu tại đây.
Giống như các công cụ khác, PgBouncer có kiến ​​trúc ghi nhật ký stderr / syslog để ghi lại kết nối, ngắt kết nối và pooler_errors với các mức độ chi tiết khác nhau. Kể từ bây giờ, phần lớn việc ghi nhật ký được chuyển đến một tệp duy nhất “pgbouncer.log” và phát triển không ngừng. Đôi khi, nó có thể tiềm ẩn nguy cơ làm cho hệ thống không phản hồi do thiếu dung lượng đĩa trên vị trí tệp nhật ký. Hiện tại, ghi nhật ký PgBouncer không có cấu hình tích hợp để xoay nhật ký dựa trên độ tuổi hoặc kích thước, do đó, nó buộc người dùng phải chọn các phương pháp thay thế. IMO, có hai cách tiếp cận để xử lý:-

  1. Định cấu hình PgBouncer trong phương thức “nhật ký hệ thống” để dựa vào xoay nhật ký hệ điều hành hoặc
  2. Định cấu hình xoay vòng nhật ký bằng các tiện ích hệ điều hành trên tệp “pgbouncer.log”.

Phương pháp 1:

Nó khá đơn giản để cấu hình nhật ký hệ thống trong PgBouncer, hãy đặt “nhật ký hệ thống” thành 1 (mặc định là 0); đặt tên để bắt đầu dòng nhật ký trong nhật ký hệ điều hành trong “syslog_ident” (mặc định ‘pgbouncer’) và chỉ định chi tiết cơ sở trong “syslog_facility” (daemon mặc định). Một đầu ra mẫu từ nhật ký hệ điều hành của tôi (/ var / log / messages):

5 tháng 8 16:54:27 raghavt pgbouncer [62549]:C-0x1cdfe60:postgres / postgres @ unix (62621):6432 lần đăng nhập:db =postgres user =postgres tls =không
5 tháng 8 16:54:27 raghavt pgbouncer [62549]:S-0x1ce4b10:postgres/[email protected]:5432 kết nối mới với máy chủ (từ 127.0.0.1:38947)
ngày 5 tháng 8 16 :54:27 raghavt pgbouncer [62549]:C-0x1cdfe60:postgres / postgres @ unix (62621):6432 đang đóng vì:yêu cầu đóng của khách hàng (age =0)

Lưu ý:Nếu “nhật ký hệ thống” được bật, hãy nhận xét hoặc bỏ trống thông số “tệp nhật ký”, nếu không nó sẽ là ghi nhật ký bổ sung.

Phương pháp 2:

Logrotate là một trong những tiện ích hệ điều hành có khả năng xoay vòng nhật ký một cách có hệ thống và lưu trữ để giảm yêu cầu về dung lượng đĩa của hệ điều hành. Mỗi tệp nhật ký có thể được xử lý hàng ngày, hàng tuần, hàng tháng hoặc khi nó phát triển quá lớn. Tệp cấu hình mặc định “/etc/logrotate.conf” xác định tuổi / kích thước / khoảng thời gian xoay vòng nhật ký. Sử dụng công cụ này, nhật ký có thể được lưu giữ lâu hơn với ít dung lượng ổ đĩa hơn. Nhiều người đã nói rõ về cách sử dụng tiện ích mà bạn có thể khám phá nó qua mạng, do đó, tôi đang chuyển trực tiếp vào giai đoạn triển khai.
Đầu tiên, hãy tạo tệp cấu hình trong thư mục /etc/logrotate.d/ cho nhật ký pgbouncer . Tôi đã đặt tên nó là “/etc/logrotate.d/pgbouncer” với chi tiết bên dưới:

/var/log/pgbouncer/pgbouncer.log {
xoay 10
missingok
sharedscripts
notifempty
nocompress
kích thước 10m
hàng ngày
tạo 0640 postgres postgres
postrotate
/ bin / kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> / dev / null` 2> / dev / null || true
endcript
}

Về tệp cấu hình, dòng đầu tiên cho biết vị trí tệp nhật ký pgbouncer (các giá trị tham số “logfile” trong tệp pgbouncer.ini) và tiếp theo là các thông số hoạt động trên các ngưỡng xoay như; có bao nhiêu tệp nhật ký để duy trì (xoay); không có lỗi và chuyển sang nhật ký tiếp theo (thiếu); script nào nên được thực hiện xoay vòng trước / sau (prerotate / postrotate); chạy một lần hoặc nhiều lần tập lệnh trước / sau (sharedscripts); không xoay nhật ký nếu nó trống (notifempty); sau khi xoay, một tệp nhật ký cũ sẽ được nén bằng tiện ích gzip (nén / nocompress); xoay vòng nhật ký kích thước bao nhiêu nên được thực hiện (kích thước); tần suất xoay một nhật ký cụ thể (hàng ngày); và quyền nào tệp nhật ký mới sẽ được (tạo).

Bây giờ chúng ta có thể thấy các tệp nhật ký mới được xoay với kích thước 10M. (Chúng tôi thậm chí có thể buộc xoay vòng bằng lệnh “logrotate -f /etc/logrotate.conf”)

[[email protected] pgbouncer] # ls -lrth
tổng cộng 16K
-rw-r—–. 1 postgres postgres 10 M ngày 27 tháng 7 15:30 pgbouncer.log-20160727
-rw-r—–. 1 postgres postgres 11K ngày 27 tháng 7 18:32 pgbouncer.log

Điều đó thật đơn giản phải không , bây giờ hãy kiểm tra tương tự trên môi trường Windows.

Trên Windows:

Tôi biết rất ít về các tiện ích của windows, do đó tôi đã thực hiện một số googling và tìm thấy một tiện ích phiên bản Windows có tên là “ LogRotateWin” hoạt động giống như phiên bản Linux của logrotate. Để biết thêm chi tiết, hãy tham khảo tài liệu chi tiết có sẵn về Cài đặt / Cấu hình / Sử dụng tại đây.
Hãy xem nó hoạt động như thế nào, trước tiên hãy tải xuống phiên bản “.msi” của LogRotateWin có sẵn trên site dưới dạng tệp “logrotateSetup * .zip”. Giải nén và thực thi tệp “.msi”, nó sẽ cài đặt tiện ích vào vị trí “c:Program Files (x86) LogRotate”. Bạn có thể tìm thấy tệp cấu hình mặc định (logrotate.conf) trong “c:Program Files (x86) LogRotateContent”.
Tiếp theo, chỉnh sửa tệp “c:Program Files (x86) LogRotateContentlogrotate.conf” và chỉ định đường dẫn đầy đủ của tệp “pgbouncer.log” với các thông số xoay vòng giống nhau. Bản sao mẫu của tệp cấu hình của tôi đã được thử nghiệm trên Windows 10. (Lưu ý:Các giá trị tham số dưới đây được sử dụng để kiểm tra tiện ích)

c:Program Files (x86) LogRotateContent> more logrotate.conf
“c:Program Files (x86) PgBouncerlogpgbouncer.log” {
xoay 10
/> copytruncate
tạo
missok
sharedscripts
nocompress
kích thước 200k
hàng ngày
}

Để xác minh, tôi đã buộc xoay vòng nhật ký với tùy chọn “-f”

c:Program Files (x86) LogRotate> logrotate.exe -f Contentlogrotate.conf
logrotate:Buộc tùy chọn được đặt thành true

Đây là kết quả:

C:Program Files (x86) PgBouncerlog> dir
Volume trong ổ C không có nhãn.
Volume Serial Number là F226-9FFB

Thư mục của C:\ Program Files (x86) \ PgBouncerlog

08/08/2016 01:31 PM

.
08/08/2016 01:31 PM ..
08/08/2016 01:31 PM 0 pgbouncer.log
08/08/2016 01:31 PM 6.626 pgbouncer.log.1
08/08/2016 01:31 PM 13.252 pgbouncer.log.2
3 (Các) tệp 19.878 byte
2 Dir (s) 26.905.051.136 byte trống

Tuyệt vời đúng không !!!.
Trên hầu hết các bản phân phối Linux, logrotate chạy hàng ngày bằng cách sử dụng “logrotate.conf” như một phần của cronjob, tương tự trên Windows, chúng ta có thể lập lịch tác vụ trong Windows Task Scheduler để xoay nhật ký hàng ngày. FYI, tôi chưa khám phá nhiều về tiện ích “LogRotateWin” chỉ ở mức cơ bản. Trong trường hợp, nếu bạn gặp bất kỳ vấn đề nào, vui lòng đăng nó trên logrotate diễn đàn Thảo luận chung.
Cảm ơn bạn đã đọc.
–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. Generate_series in Postgres từ ngày bắt đầu và ngày kết thúc trong một bảng

  2. Tôi có thể yêu cầu Postgresql bỏ qua lỗi trong giao dịch không

  3. PostgreSQL:Tạo chỉ mục cho cột boolean

  4. Kiểm tra xem NULL có tồn tại trong mảng Postgres không

  5. Chuyển tên bảng làm tham số trong psycopg2