Logrotate là gì? Hướng dẫn tự động xoay vòng log trên VPS Linux
Tìm hiểu logrotate là gì và cách cấu hình công cụ này trên VPS Linux để xoay vòng, nén, lưu trữ và dọn log tự động an toàn.
- 8 phút đọc
- 0 lượt xem

CÔNG TY TNHH CÔNG NGHỆ INUX
Tìm hiểu logrotate là gì và cách cấu hình công cụ này trên VPS Linux để xoay vòng, nén, lưu trữ và dọn log tự động an toàn.

Tìm hiểu SOCKS5 và HTTP Proxy khác nhau ra sao về cách hoạt động, khả năng tương thích và mức độ phù hợp với từng nhu cầu. Bài viết cũng gợi ý cách chọn proxy an toàn, hiệu quả.
Khởi tạo tự động ngay sau khi thanh toán, chuyển khoản bằng mã QR, bật tắt và cài lại máy chủ trong trang quản lý.
Log trên VPS ghi lại hoạt động của hệ điều hành, ứng dụng và dịch vụ. Theo thời gian, các tệp log có thể tăng dung lượng, chiếm ổ đĩa và khiến việc tìm thông tin cần thiết trở nên khó khăn. Logrotate giúp tự động luân phiên các tệp này theo lịch hoặc theo dung lượng, đồng thời hỗ trợ nén, lưu trữ và xóa log cũ.
Trong bài viết này, bạn sẽ hiểu logrotate là gì, cách kiểm tra công cụ trên Linux và từng bước tạo cấu hình phù hợp cho dịch vụ chạy trên VPS.

Logrotate là tiện ích quản lý log Linux, thường có sẵn hoặc dễ cài đặt trên các bản phân phối như Ubuntu, Debian, AlmaLinux và Rocky Linux. Công cụ này đọc các quy tắc trong tệp cấu hình, sau đó đổi tên hoặc tạo lại log hiện tại, lưu bản cũ, nén và xóa các bản đã quá hạn.
Logrotate không thường chạy liên tục như một dịch vụ theo dõi tệp. Thay vào đó, hệ thống gọi công cụ theo lịch, thường thông qua cron hoặc systemd timer. Vì vậy, quy tắc daily có nghĩa là kiểm tra luân phiên theo chu kỳ hằng ngày khi tác vụ được chạy; không nhất thiết log sẽ được xoay đúng vào một giờ cố định.
Các tệp cấu hình phổ biến gồm:
/etc/logrotate.conf: thiết lập mặc định áp dụng chung./etc/logrotate.d/: chứa quy tắc riêng cho từng dịch vụ./var/lib/logrotate/status: lưu trạng thái và thời điểm xử lý log gần nhất.Cách chia cấu hình này giúp mỗi ứng dụng có chính sách riêng mà không cần chỉnh sửa tệp mặc định. Trước khi thêm quy tắc mới, hãy kiểm tra các tệp hiện có để tránh cùng một log bị khai báo nhiều lần.
Nếu không được kiểm soát, log có thể tăng đến hàng gigabyte, đặc biệt khi ứng dụng ghi thông tin gỡ lỗi quá chi tiết hoặc gặp lỗi lặp lại. Khi phân vùng lưu trữ đầy, dịch vụ có thể không ghi được dữ liệu mới, cơ sở dữ liệu gặp sự cố hoặc hệ thống Linux hoạt động bất ổn.
Cấu hình logrotate giúp bạn:
Lưu ý, xoay vòng log không thay thế việc sao lưu. Nếu cần lưu bằng chứng phục vụ kiểm toán hoặc điều tra sự cố lâu dài, hãy chuyển log quan trọng sang hệ thống lưu trữ riêng trước khi xóa bản cũ.

Đăng nhập VPS bằng SSH và kiểm tra phiên bản:
logrotate --versionNếu hệ thống báo không tìm thấy lệnh, cài đặt bằng trình quản lý gói tương ứng. Trên Ubuntu hoặc Debian:
sudo apt update
sudo apt install logrotateTrên AlmaLinux hoặc Rocky Linux:
sudo dnf install logrotateKiểm tra các tệp cấu hình và lịch chạy:
cat /etc/logrotate.conf
ls -l /etc/logrotate.d/
systemctl list-timers | grep -i logrotateMột số hệ thống sử dụng cron thay cho systemd timer. Có thể kiểm tra các thư mục như /etc/cron.daily/ và cấu hình cron liên quan. Tên tác vụ, lịch chạy và cách kích hoạt có thể khác nhau tùy bản phân phối; không nên tạo thêm lịch chạy trước khi xác nhận cơ chế hiện có.

Nên đặt quy tắc riêng trong /etc/logrotate.d/, thay vì sửa toàn bộ cấu hình mặc định. Ví dụ, ứng dụng ghi log vào /var/log/myapp/:
/var/log/myapp/*.log {
daily
rotate 14
missingok
notifempty
compress
delaycompress
dateext
create 0640 appuser appgroup
sharedscripts
postrotate
systemctl reload myapp.service >/dev/null 2>&1 || true
endscript
}Lưu nội dung vào tệp như /etc/logrotate.d/myapp. Thay đường dẫn, tên dịch vụ, người dùng và nhóm bằng thông tin thực tế trên VPS. Có thể tìm chủ sở hữu hiện tại bằng lệnh ls -l /var/log/myapp/. Tạo cấu hình với quyền quản trị, ví dụ sudo nano /etc/logrotate.d/myapp.
Ý nghĩa các chỉ thị chính:
daily: kiểm tra xoay log theo ngày. Có thể thay bằng weekly hoặc monthly nếu phù hợp.rotate 14: giữ tối đa 14 bản log đã xoay; các bản cũ hơn sẽ được xử lý theo quy tắc và xóa khi đến lượt.missingok: không báo lỗi nếu đường dẫn chưa tồn tại.notifempty: bỏ qua tệp log rỗng.compress: nén các bản log cũ, thường thành định dạng gzip.delaycompress: trì hoãn nén một chu kỳ để ứng dụng có thêm thời gian xử lý tệp vừa được xoay.dateext: thêm ngày vào tên bản lưu thay vì chỉ dùng số thứ tự.create 0640 appuser appgroup: tạo tệp log mới với quyền, chủ sở hữu và nhóm đã chỉ định.sharedscripts: chạy script trước hoặc sau một lần xoay cho cả nhóm tệp, thay vì chạy lặp lại cho từng tệp.postrotate và endscript: thực thi lệnh sau khi xoay log.Chỉ dùng lệnh reload hoặc tín hiệu trong postrotate nếu ứng dụng hỗ trợ thao tác đó để mở lại tệp log. Nếu dịch vụ không cần khởi động lại hay mở lại log, có thể bỏ phần script. Tránh dùng lệnh reload không đúng tên dịch vụ vì có thể gây gián đoạn hoặc khiến log mới không được ghi như mong muốn.
Nếu muốn xoay theo dung lượng, có thể dùng size 100M để xử lý khi log vượt ngưỡng đã chọn. Chỉ thị maxsize có thể kết hợp với lịch nhằm xoay khi tệp vượt ngưỡng trong lần Logrotate được gọi. Ngược lại, minsize chỉ cho phép xoay theo lịch khi log đạt dung lượng tối thiểu. Cần nhớ Logrotate chỉ kiểm tra điều kiện lúc tác vụ chạy; nó không theo dõi dung lượng liên tục. Tránh khai báo các lựa chọn thời gian và dung lượng xung đột trong cùng một khối nếu chưa hiểu rõ quy tắc ưu tiên.
Sau khi lưu, hãy kiểm tra cấu hình trước khi áp dụng. Chế độ mô phỏng dưới đây hiển thị dự kiến xử lý nhưng không thay đổi tệp log:
sudo logrotate -d /etc/logrotate.confNếu muốn xem thêm thông tin khi chạy kiểm tra:
sudo logrotate -v /etc/logrotate.confĐể thử quy tắc riêng, có thể chạy với tệp cấu hình tương ứng. Khi thử bằng -f, Logrotate ép xoay log ngay cả khi chưa đến hạn. Không nên chạy lệnh này tùy tiện trên log đang được ứng dụng sử dụng vì có thể tạo nhiều bản lưu hoặc ảnh hưởng hoạt động ghi. Hãy sao lưu log quan trọng và kiểm tra trước bằng -d.
Với môi trường thử nghiệm, có thể dùng trạng thái riêng để tránh tác động đến lịch sử của hệ thống:
sudo logrotate -vf -s /tmp/logrotate-test.status /etc/logrotate.d/myappSau khi thử, kiểm tra thư mục log để xác nhận tên tệp, quyền sở hữu, bản nén và log mới được tạo đúng. Xóa tệp trạng thái thử nghiệm khi không còn cần thiết.
Một số lỗi thường gặp và cách kiểm tra:
*.log, thời điểm xử lý gần nhất trong status file, cùng lịch cron hoặc timer.create, quyền thư mục và chủ sở hữu bằng ls -l. Ứng dụng cần quyền ghi vào thư mục, không chỉ tệp./etc/logrotate.conf và /etc/logrotate.d/, sau đó giữ một quy tắc phù hợp.Không nên đặt copytruncate làm lựa chọn mặc định. Chỉ thị này sao chép log rồi làm rỗng tệp cũ, có thể hữu ích khi ứng dụng không thể mở lại log, nhưng có nguy cơ mất một phần dữ liệu ghi đúng lúc sao chép. Nếu ứng dụng hỗ trợ mở lại tệp, dùng cơ chế đó thường đáng tin cậy hơn.
Log có thể chứa địa chỉ IP, đường dẫn nội bộ, thông tin tài khoản hoặc dữ liệu nhạy cảm. Hãy giới hạn quyền đọc phù hợp, không ghi mật khẩu hay khóa truy cập vào log và đặt chính sách lưu giữ theo nhu cầu thực tế. Kiểm tra định kỳ dung lượng bằng du -sh /var/log/* và theo dõi dung lượng phân vùng với df -h.
Khi chỉnh sửa quy tắc, ưu tiên thay đổi từng phần và theo dõi log sau lần chạy kế tiếp. Không giảm thời gian lưu quá nhanh nếu đội ngũ cần lịch sử để xử lý sự cố. Với VPS chạy nhiều ứng dụng, tách cấu hình theo dịch vụ giúp việc bảo trì và tìm lỗi dễ hơn.
Logrotate là công cụ thiết thực để tự động xoay vòng, nén, lưu trữ và dọn log trên VPS Linux. Hãy bắt đầu bằng một quy tắc rõ ràng, kiểm tra ở chế độ mô phỏng, xác nhận quyền sở hữu và chỉ kích hoạt script mà ứng dụng thực sự hỗ trợ. Nếu đang triển khai dịch vụ cần môi trường máy chủ riêng, bạn có thể tham khảo các gói VPS AMD EPYC Gen 3 của VibeVPS từ 81.000đ/tháng. Cấu hình Logrotate phù hợp sẽ giúp việc quản lý log Linux gọn gàng và chủ động hơn.
Hướng dẫn tạo tên miền phụ trên hosting, thiết lập thư mục lưu trữ riêng, cấu hình DNS và kiểm tra subdomain sau khi hoàn tất.
Lỗi 503 cho biết máy chủ tạm thời chưa thể xử lý yêu cầu. Bài viết hướng dẫn phân biệt nguyên nhân và kiểm tra lần lượt ứng dụng, tài nguyên máy chủ, cấu hình hosting để khắc phục.