VPS
Hosting
Email
Máy chủ
Firewall Anti DDoS
Tên Miền
SSL
3
3

Logrotate là gì? Hướng dẫn cấu hình Logrotate trên Linux

8
Lượt xem
Home Tài Liệu Kỹ Thuật Logrotate là gì? Hướng dẫn cấu hình Logrotate trên Linux

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.

Logrotate là gì?
Logrotate là gì?

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. 

banner hosting gif

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ình nomissingok.
  • 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 prerotateendscript.

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 postrotateendscript.

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.

Chia sẻ bài viết
Đánh giá
Kết nối với mình qua
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix
Bài viết liên quan
Bình luận
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Yêu cầu Vietnix gọi lại

Vui lòng nhập thông tin để chúng tôi liên hệ lại với bạn