Logrotate được biết đến như một tiện ích tuyệt vời trên hệ điều hành Linux giúp việc quản trị log file trở nên đơn giản và hiệu quả hơn. Sau khi thiết lập, Logrotate sẽ hoạt động tự động không cần tới sự điều khiển của con người. Để hiểu rõ hơn Logrotate là gì và cách cài đặt nó trên hệ điều hành, hãy cùng theo dõi bài viết sau đây của Vietnix.
Logrotate là gì?
Logratate là một chương trình có sẵn trên hệ điều hành Linux giúp hỗ trợ quản lý các log files – một yếu tố quan trọng để lập trình viên theo dõi tình trạng hệ thống. Cụ thể, Logrotate giúp xoay vòng file log, nén, di chuyển, gửi tự động,… trong hệ thống.
Trong đó, xoay vòng (rotate) ở đây được hiểu là tiến trình xử lý file log cũ theo quy trình có sẵn (nén/xóa/di chuyển) đồng thời tạo ra file log mới theo thời gian. Logrotate hoạt động tự động mà không cần can thiệp bằng thao tác thủ công nhờ các thiết lập thông qua file cấu hình.
Tính năng của Logrotate
Logrotate cung cấp các tính năng cơ bản trong quản lý file log như sau:
- Xoay vòng file log cho đến khi đáp ứng dung lượng đã được thiết lập.
- Ghi tiếp dữ liệu log vào file mới khi đã hoàn thành xoay vòng.
- Nén file log đã xoay vòng.
- Tùy chọn kiểu nén file log.
- Thêm ngày tháng vào tên file khi thực hiện xoay vòng.
- Thực thi shell script khi xoay vòng file log.
- Xóa các file xoay vòng cũ.
Cách cài đặt Logrotate
Logrotate được mặc định cài sẵn trên hầu hết các phiên bản Linux. Bạn có thể dùng lệnh #logrotate
để kiểm tra đối với phiên bản đang dùng. Kết quả trả về sẽ cho biết bản Logrotate đang cài trên máy của bạn.
#logrotate
logrotate 3.8.7 - Copyright (C) 1995-2001 Red Hat, Inc.
Nếu Logrotate vẫn chưa được cài trên máy, bạn có thể tự cập nhật system packages và cài đặt bằng các câu lệnh.
Đối với hệ điều hành Ubuntu/Debian
Câu lệnh sử dụng để cài đặt Logrotate trên Ubuntu/Debian như sau:
# sudo apt-get update
# sudo apt-get install logrotate
Đối với hệ điều hành CentOS/Redhat
Câu lệnh sử dụng để cài đặt Logrotate trên CentOS/Redhat như sau:
# sudo yum update
# sudo yum install logrotate
Các cấu hình Logrotate trên Linux
Toàn bộ thông tin log files mà Logrotate quản lý được lưu tại /etc/logrotate.conf
, tại đây chứa các thông tin như chu kỳ lặp, nén file, dung lượng file log,… Còn thông tin về cấu hình file log đối với từng ứng dụng được lưu tại /etc/logrotate.d/
.
Nhìn chung, cấu trúc của cấu hình Logrotate khá đơn giản, chỉ gồm các log file và các thông tin thiết lập cấu hình được đặt trong dấu { }
. Ngay sau đây chúng tôi sẽ giới thiệu cụ thể hơn về một số cấu hình phổ biến nhất:
Lựa chọn file log được rotate
Bạn có thể chỉ định trực tiếp các file log được rotate bằng đường dẫn chính xác đến nó, danh sách các file log được phân cách bằng khoảng trắng. Ví dụ như sau:
/home/*/logs/mysql*.log
/home/*/logs/access.log
/home/*/logs/error.log
/home/*/logs/nginx_error.log
Rotate theo thời gian
Có 4 kiểu thiết lập cấu hình thời gian cho file log được rotate đó là:
Daily
: Mỗi ngày.Weekly
: Mỗi đầu tuần.Monthly
: Mỗi đầu tháng.Yearly
: Mỗi năm.
Rotate theo dung lượng file log
Bạn cũng có thể quy định tiến trình xoay vòng file log dựa trên dung lượng file. Ví dụ như quy định nếu dung lượng file đạt đến 50MB thì bắt đầu xoay vòng:
size 50M
Việc xoay vòng file log theo dung lượng luôn được ưu tiên cao hơn việc xoay vòng theo thời gian. Có nghĩa là khi file log đã đạt dung lượng theo cấu hình đã quy định thì sẽ tiến hành xoay vòng, đồng thời khoảng thời gian rotate sẽ được khởi tạo lại.
Ví dụ như một file log được cấu hình xoay vòng là weekly và dung lượng 50MB. Nếu đến giữa tuần file đạt dung lượng 50MB thì sẽ hoàn thành rotate, đồng thời Logrotate cũng phải đợi tới tuần tiếp theo để thực hiện rotate lượt kế tiếp.
Rotate theo số lượng file log
Cấu hình:
rotate [number]
Cấu hình này quy định số lượng file log cũ được giữ lại sau khi rotate. Ví dụ như đối với rotate 3 thì sẽ có 3 file log cũ được lưu giữ lại. Nếu đã có đủ 3 file cũ thì sẽ tiến hành xóa đi file cũ nhất dành chỗ chứa file mới được tạo.
Xử lý file log trống
Các thiết lập với file log trống:
- Tham số
missingok
: Nếu file log bị mất hoặc không tồn tại*.log
thì sẽ được di chuyển tới phần cấu hình log của file log khác mà không cần phải thông báo lỗi. Ngược lại sẽ được cấu hìnhnomissingok
. - Tham số
Notifempty
: Không thực hiện rotate đối với file log trống này.
Tự động nén file log
Các tùy chọn nén file có thể cấu hình là:
- Tùy chọn
Compress
: Các file log sẽ được nén sau khi xoay vòng với dạng mặc định là gzip. - Tùy chọn
Compresscmd xz/zip/...
: Giúp bạn nén file log dưới dạng khác như xz, zip, bzip2,… - Tham số
Delaycompress
: Tham số này sẽ hữu ích khi bạn không muốn nén file log cũ ngay sau khi rotate. Công việc nén sẽ được thực hiện vào lần rotate kế tiếp. Để sử dụng tùy chọn này bạn cần phải cấu hình compress trước đó. - Tùy chọn
nocompress
: Không nén file log cũ.
Phân quyền file log
Bạn có thể chỉ định phân quyền cụ thể cho file log mới ngay sau khi hoàn thành rotate. Ở đây, bạn cấu hình tham số create để quy định file mới được tạo ra, hoạt động này sẽ khởi tạo trước script postrotate.
Ví dụ:
create 660 appuser www-data
File log mới tạo ra có owner là appuser, thuộc group www-data, quyền hạn 660 cho phép cả user và owner trong cùng nhóm được viết, sửa nội dung có trên file.
Nếu như bạn không muốn tạo file log mới thì có thể dùng tùy chọn nocreate. Bên cạnh đó, tham số Dateext giúp người dùng cài đặt hậu tố tên file là thời gian theo cấu trúc yyyymmdd.
Thực thi lệnh trước hoặc sau rotate
Logrotate có thể sử dụng để khởi chạy các câu lệnh trước hoặc sau khi rotate. Điều này rất hữu ích trong các trường hợp cần khởi động lại dịch vụ có sử dụng file log mà không ảnh hưởng quá trình ghi log.
Nếu muốn chạy lệnh trước khi bắt đầu rotate, bạn thực thi câu lệnh nằm giữa prerotate và endscript.
Ví dụ:
Prerotate
Touch /var/www/html/stop.txt
Endscript
Nếu muốn thực thi lệnh sau khi rotate kết thúc, bạn đặt câu lệnh thực thi giữa postrotate và endscript.
Ví dụ:
Postrotate
/etc/init.d/apache2 reload > /dev/null
Endscript
Ngoài ra, tùy chọn sharedscripts sẽ khiến đoạn script postrotate đ
ược khởi chạy sau khi rotate xong toàn bộ file log.
Lời kết
Trên đây là toàn bộ thông tin chia sẻ để giúp bạn hiểu rõ hơn Logrotate là gì và cách cài đặt, cấu hình Logrotate trên hệ điều hành Linux. Để việc quản trị file log trở nên đơn giản và chặt chẽ hơn, bạn không thể bỏ qua tiện ích này trên nền tảng Linux. Hy vọng những chia sẻ trên đây của Vietnix sẽ giúp bạn tiết kiệm thời gian trong việc lập trình.