Xử lý log file có dung lượng lớn với Logrotate

Nguyễn Thành Luân 3 phút đọc

Log file – nơi ghi nhận lại các hoạt động của hệ thống bạn. Chắc hẳn lợi ích của log file là không thể bàn cãi.

Tuy nhiên lợi bất cập hại nếu chúng ta không kiểm soát tốt “chất lượng” của các file này. Có nhiều tình huống Khách hàng thắc mắc với chúng tôi: website họ hoạt động ổn định nhưng dung lượng file log lưu lại lớn quá, cứ lâu lâu phải vào xóa 1 lần, vậy có cách nào để chúng ta quy định xóa hay giới hạn dung lượng không? Ví dụ: hệ thống tự động xóa những log cũ hơn 3 ngày hoặc không cho file log lớn hơn 50MB… Bạn hoàn toàn có thể sử dụng công cụ Logrotate.

Logrotate là một công cụ hữu hiệu hỗ trợ cho việc quản trị các file log. Với Logrotate các file log có thể được định kỳ sử dụng lại theo ngày tuần tháng hay theo kích thước file log, nén, xoá bỏ file log…

Bạn có thể tham khảo thêm tại link : http://linux.die.net/man/8/logrotate

Các tham số thường dùng :

  • compress : nén những file log đã sử dụng
  • nocompress: ngược lại với tuỳ chọn compress
  • create mode owner group: khi sử dụng một file log mới, file log mới được tạo sẽ có các thuộc tính (mode, owner group).
  • nocreate : không tạo file log mới.
  • mail address : khi hết chu kỳ sử dụng file log sẽ được gửi tới địa chỉ (address).
  • nomail : ngược lại với tuỳ chọn trên.
  • daily : chu kỳ sử dụng file log theo ngày
  • weekly : chu kỳ sử dụng file log theo tuần.
  • monthly : chu kỳ sử dụng file log theo tháng.
  • rotate count : xác định số lần luân phiên sử dụng file log.
  • size size : chu kỳ sử dụng file log được xác định theo kích thước.
  • include /etc/logrotate.d : đọc thêm các thông tin cấu hình tại các file trong thư mục /etc/logrotate. Các tham số khai báo ở các file này có độ ưu tiên cao hơn các tham số khai báo trong file /etc/logrotate.conf.

Chúng ta sẽ lấy ví dụ minh họa:

  • Trước tiên mở file config của logrotate :

vi /etc/logrotate.conf

<code class=”brush:bash;”>”/var/log/httpd/error.log {
weekly
rotate 1
endscript
}</code>

File log /var/log/httpd/error.log được ghi log trong một tuần, chỉ lưu thông tin log trong tuần.