Trong thế giới quản trị hệ thống, các tập tin nhật ký (log files) đóng vai trò như người ghi chép thầm lặng, lưu lại mọi hoạt động, lỗi và sự kiện quan trọng. Chúng là nguồn thông tin vô giá để chẩn đoán sự cố, giám sát hiệu suất và tăng cường bảo mật. Tuy nhiên, nếu không được quản lý đúng cách, các tập tin này có thể nhanh chóng chiếm dụng toàn bộ dung lượng đĩa, khiến việc theo dõi trở nên khó khăn và làm chậm hệ thống. Đây chính là lúc công cụ logrotate trên Ubuntu 20.04 phát huy vai trò của mình. Logrotate là một giải pháp tự động hóa mạnh mẽ, giúp bạn xoay vòng, nén và xóa các tập tin nhật ký một cách hiệu quả. Bài viết này sẽ hướng dẫn bạn từ A đến Z cách sử dụng logrotate để tối ưu hóa hệ thống.
Tổng quan về tập tin nhật ký và công cụ Logrotate trên Ubuntu 20.04
Tập tin nhật ký là gì và vai trò trên hệ thống?
Tập tin nhật ký, hay log file, là các tệp văn bản được hệ điều hành và các ứng dụng tự động tạo ra để ghi lại thông tin về hoạt động của chúng. Hãy tưởng tượng nó như một cuốn nhật ký hành trình của hệ thống, nơi mọi sự kiện đều được ghi lại một cách chi tiết. Trên Ubuntu, bạn có thể tìm thấy chúng chủ yếu trong thư mục /var/log.

Một vài ví dụ phổ biến bao gồm:
/var/log/syslog(hoặcjournaltrên các hệ thống dùng systemd): Ghi lại các thông điệp chung của toàn hệ thống./var/log/auth.log: Ghi lại các hoạt động xác thực, như đăng nhập thành công hay thất bại./var/log/apache2/access.log: Ghi lại mọi yêu cầu truy cập đến máy chủ web Apache.
Việc giám sát và quản lý các tập tin này là cực kỳ quan trọng. Chúng giúp quản trị viên phát hiện sớm các vấn đề, truy vết nguyên nhân lỗi và theo dõi các hành vi truy cập bất thường có thể là dấu hiệu của một cuộc tấn công. Đây cũng là một phần quan trọng trong quản lý của hệ điều hành là gì và cách mà hệ thống xử lý tài nguyên.
Logrotate là gì và lợi ích khi sử dụng
Logrotate là một tiện ích được thiết kế để đơn giản hóa việc quản lý các tập tin nhật ký. Chức năng chính của nó là tự động “xoay vòng” (rotate) các log file. Điều này có nghĩa là nó sẽ đổi tên file log hiện tại (ví dụ: access.log thành access.log.1), tạo một file log mới trống, và sau một thời gian sẽ nén hoặc xóa các file log cũ.

Sử dụng logrotate mang lại nhiều lợi ích thiết thực:
- Tiết kiệm dung lượng: Bằng cách nén và xóa các file log cũ, logrotate ngăn chặn việc chúng chiếm dụng không gian đĩa quý giá, có thể kết hợp với kỹ thuật lưu trữ như Raid là gì.
- Tăng cường bảo mật: Lưu trữ các bản ghi cũ một cách có tổ chức giúp cho việc kiểm tra và phân tích bảo mật sau này dễ dàng hơn.
- Quản lý dễ dàng: Tự động hóa toàn bộ quy trình giúp bạn tiết kiệm thời gian và công sức, không cần phải can thiệp thủ công.
Trên Ubuntu 20.04, logrotate được cài đặt sẵn và tích hợp sâu vào hệ thống, khiến nó trở thành công cụ lý tưởng để bắt đầu quản lý nhật ký một cách chuyên nghiệp. Để hiểu rõ hơn về hệ thống này, bạn có thể tìm hiểu thêm về Phần mềm hệ thống là gì.
Hướng dẫn cài đặt và cấu hình Logrotate trên Ubuntu 20.04
Cài đặt logrotate
Trên hầu hết các phiên bản Ubuntu, bao gồm cả 20.04, logrotate đã được cài đặt mặc định. Tuy nhiên, để chắc chắn, bạn có thể kiểm tra sự hiện diện của nó bằng một lệnh đơn giản. Hãy mở terminal và gõ: logrotate --version
Nếu lệnh trả về phiên bản của logrotate, có nghĩa là nó đã sẵn sàng để sử dụng. Trong trường hợp bạn nhận được thông báo lỗi “command not found”, bạn chỉ cần cài đặt nó thông qua trình quản lý gói apt.
Chạy các lệnh sau để cập nhật danh sách gói và cài đặt logrotate: sudo apt update sudo apt install logrotate

Sau khi cài đặt, dịch vụ sẽ được cấu hình để chạy tự động thông qua một cron job hàng ngày, bạn không cần phải khởi động hay kích hoạt nó. Điều này tương tự như các dịch vụ nền được quản lý trên hệ điều hành như Windows Server, tham khảo thêm Windows Server là gì.
Cấu hình cơ bản logrotate
Logrotate sử dụng một hệ thống cấu hình phân cấp rất linh hoạt, giúp bạn dễ dàng quản lý. Có hai vị trí chính bạn cần quan tâm:
- /etc/logrotate.conf: Đây là file cấu hình chính, chứa các thiết lập mặc định áp dụng cho tất cả các log file trừ khi bị ghi đè.
- /etc/logrotate.d/: Đây là một thư mục chứa các file cấu hình riêng cho từng ứng dụng hoặc dịch vụ. Đây là nơi bạn nên đặt các tùy chỉnh của mình.
Hãy xem một ví dụ về file cấu hình trong /etc/logrotate.d/apt:
/var/log/apt/term.log {
rotate 12
monthly
compress
missingok
notifempty
}
Trong ví dụ này, file /var/log/apt/term.log sẽ được xoay vòng hàng tháng (monthly), giữ lại 12 bản sao cũ (rotate 12), và các bản sao này sẽ được nén (compress). Việc chỉnh sửa các file này cho phép bạn kiểm soát hoàn toàn vòng đời của tập tin nhật ký. Đây là nền tảng trong quản lý các Hệ quản trị cơ sở dữ liệu mà bạn cần biết khi làm việc với các hệ thống có quản lý dữ liệu lớn.
Quản lý tự động xoay vòng, nén và xóa tập tin nhật ký
Thiết lập vòng đời log: xoay vòng theo thời gian hoặc kích thước
Một trong những sức mạnh lớn nhất của logrotate là khả năng tùy chỉnh vòng đời của tập tin nhật ký. Bạn có thể quyết định khi nào và làm thế nào để xoay vòng chúng. Có hai cách tiếp cận chính: theo thời gian hoặc theo kích thước.
Các tham số dựa trên thời gian rất phổ biến:
daily: Xoay vòng log mỗi ngày.weekly: Xoay vòng mỗi tuần.monthly: Xoay vòng mỗi tháng.yearly: Xoay vòng mỗi năm.
Nếu bạn muốn kiểm soát dựa trên kích thước, bạn có thể dùng tham số size. Ví dụ, size 100M sẽ xoay vòng tập tin nhật ký khi nó đạt đến kích thước 100 megabyte.
Tham số rotate xác định số lượng bản sao lưu của file log sẽ được giữ lại. Ví dụ, rotate 7 có nghĩa là logrotate sẽ giữ lại 7 file log cũ nhất. Khi đến lần xoay vòng thứ tám, file cũ nhất (ví dụ: log.8) sẽ bị xóa để nhường chỗ cho file mới.

Kết hợp các tham số này, bạn có thể tạo ra một chiến lược quản lý phù hợp. Ví dụ, một máy chủ web có lưu lượng truy cập cao có thể cần xoay vòng log hàng ngày (daily) và giữ lại 14 bản (rotate 14) để có dữ liệu trong hai tuần. Đây là một phần quan trọng khi bạn quản lý hạ tầng lớn, có thể tham khảo thêm các công cụ ảo hóa như Hypervisor là gì hay Máy ảo là gì.
Nén và xóa log tự động
Để tiết kiệm không gian đĩa một cách tối đa, việc nén các tập tin nhật ký cũ là cực kỳ cần thiết. Logrotate làm cho việc này trở nên vô cùng đơn giản với tùy chọn compress. Khi bạn thêm dòng này vào file cấu hình, tất cả các file log đã được xoay vòng (ngoại trừ file gần nhất) sẽ được nén bằng gzip và có phần mở rộng là .gz.
Nếu bạn muốn file log vừa được xoay vòng (ví dụ access.log.1) chưa bị nén ngay lập tức để tiện cho việc kiểm tra, bạn có thể sử dụng thêm tùy chọn delaycompress. Với cả compress và delaycompress, access.log.1 sẽ ở dạng văn bản thuần, còn access.log.2.gz, access.log.3.gz… sẽ bị nén.

Việc xóa log cũ được quản lý một cách gián tiếp thông qua tham số rotate. Nếu bạn đặt rotate 4, logrotate sẽ chỉ giữ lại 4 phiên bản cũ nhất. Ở lần xoay vòng thứ năm, phiên bản thứ năm sẽ bị xóa đi. Bạn cũng có thể sử dụng maxage days để xóa các file log cũ hơn số ngày được chỉ định, bất kể số lượng file là bao nhiêu. Hiểu rõ ý nghĩa của từng tùy chọn giúp bạn cân bằng giữa nhu cầu lưu trữ và tối ưu dung lượng, tương tự như các quy tắc quản lý dữ liệu trong Hệ quản trị cơ sở dữ liệu.
Tùy chỉnh thiết lập Logrotate theo nhu cầu quản trị hệ thống
Logrotate không chỉ dừng lại ở các cấu hình chung. Bạn hoàn toàn có thể tạo ra các quy tắc riêng cho từng ứng dụng, dịch vụ cụ thể để đáp ứng chính xác nhu cầu quản trị. Cách tốt nhất để làm điều này là tạo một file cấu hình mới trong thư mục /etc/logrotate.d/.
Ví dụ, giả sử bạn có một ứng dụng tùy chỉnh ghi log vào file /var/log/myapp/error.log. Bạn có thể tạo file /etc/logrotate.d/myapp với nội dung sau:
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 myapp_user myapp_group
}
Lệnh create ở đây đặc biệt hữu ích, nó đảm bảo rằng sau khi xoay vòng, một file log mới sẽ được tạo ra với quyền và chủ sở hữu chính xác.

Hai tùy chọn nâng cao cực kỳ mạnh mẽ là prerotate và postrotate. Chúng cho phép bạn chạy các đoạn mã script tùy chỉnh ngay trước và ngay sau khi quá trình xoay vòng diễn ra.
/var/log/nginx/*.log {
daily
rotate 5
# ... các tùy chọn khác
postrotate
systemctl reload nginx > /dev/null 2>&1
endscript
}
Trong ví dụ trên, sau khi các file log của Nginx được xoay vòng, dịch vụ Nginx sẽ được tải lại (reload) để nó bắt đầu ghi vào file log mới. Việc này rất quan trọng đối với nhiều dịch vụ để tránh làm gián đoạn quá trình ghi log. Tùy chỉnh này cho phép bạn tích hợp logrotate một cách liền mạch vào quy trình vận hành của bất kỳ dịch vụ nào. Đây là khía cạnh nâng cao trong quản lý hệ thống, đồng thời liên quan đến các kỹ thuật sử dụng Windows PowerShell là gì hoặc Cli là gì để tự động hóa trên các nền tảng khác nhau.
Kiểm tra và xử lý sự cố khi quản lý tập tin nhật ký
Logrotate không xoay log như mong muốn
Đôi khi, bạn có thể thấy rằng logrotate không hoạt động như kỳ vọng. Các file log không được xoay vòng, hoặc quá trình bị lỗi. Có hai nguyên nhân phổ biến nhất cho vấn đề này: sai quyền truy cập và lỗi cú pháp trong file cấu hình.
Logrotate thường chạy với quyền root, nhưng nếu file log hoặc thư mục chứa nó có quyền không phù hợp, nó sẽ không thể đọc hoặc sửa đổi chúng. Hãy đảm bảo rằng người dùng root có đủ quyền trên các file log bạn muốn quản lý.
Lỗi cú pháp trong file cấu hình cũng là một vấn đề thường gặp. Một dấu ngoặc nhọn bị thiếu hoặc một tùy chọn sai tên có thể khiến toàn bộ quy tắc bị bỏ qua. Để gỡ lỗi, công cụ tốt nhất chính là bản thân logrotate. Bạn có thể thực hiện một lần chạy thử (dry run) với chế độ debug: sudo logrotate --debug /etc/logrotate.conf

Lệnh này sẽ mô phỏng toàn bộ quá trình xoay vòng và hiển thị chi tiết các hành động nó sẽ thực hiện, cùng với bất kỳ lỗi nào nó gặp phải, mà không thực sự thay đổi bất kỳ file nào. Đây là cách an toàn và hiệu quả nhất để xác thực cấu hình của bạn. Việc này rất giống với các bước kiểm tra và quản lý trên các nền tảng hệ điều hành khác như Windows Server là gì hoặc Linux với các công cụ Linux là gì.
Vấn đề dung lượng log phát sinh không kiểm soát
Một trong những mục tiêu chính của logrotate là kiểm soát dung lượng đĩa, nhưng đôi khi bạn vẫn thấy thư mục /var/log bị đầy lên một cách bất thường. Nguyên nhân có thể đến từ một cấu hình chưa hợp lý. Ví dụ, bạn có thể đã đặt giá trị size quá lớn hoặc rotate quá nhiều cho một dịch vụ tạo ra lượng log khổng lồ.
Một nguyên nhân khác có thể là do script trong postrotate bị lỗi. Nếu script này thất bại, logrotate có thể không hoàn thành chu trình của nó một cách chính xác, dẫn đến việc các lần chạy sau bị ảnh hưởng. Hãy kiểm tra nhật ký hệ thống (syslog) để tìm các thông báo lỗi liên quan đến cron job của logrotate.
Để giải quyết vấn đề, hãy bắt đầu bằng việc xem lại các file cấu hình trong /etc/logrotate.d/ để xác định xem dịch vụ nào đang tạo ra nhiều log nhất. Điều chỉnh lại các tham số rotate, size hoặc tần suất xoay vòng (ví dụ từ daily thành hourly nếu cần). Trong trường hợp khẩn cấp, bạn có thể cần phải thực hiện vệ sinh log thủ công bằng cách xóa các file log đã nén quá cũ để giải phóng dung lượng ngay lập tức. Việc này cũng liên quan đến các kỹ thuật backup, xem thêm Backup là gì và cách áp dụng hiệu quả.
Những lưu ý và thực hành tốt nhất khi dùng Logrotate
Để khai thác tối đa sức mạnh của logrotate và duy trì một hệ thống ổn định, việc tuân theo các thực hành tốt nhất là rất quan trọng. Dưới đây là những lưu ý bạn nên ghi nhớ:
- Luôn sao lưu file cấu hình: Trước khi thực hiện bất kỳ thay đổi nào đối với
/etc/logrotate.confhay các file trong/etc/logrotate.d/, hãy tạo một bản sao lưu. Một lỗi nhỏ có thể gây ra những hậu quả không mong muốn. - Kiểm tra trước khi áp dụng: Luôn sử dụng chế độ debug (
logrotate -dhoặclogrotate --debug) để kiểm tra cú pháp và logic của cấu hình mới. Điều này giúp bạn phát hiện lỗi sớm mà không ảnh hưởng đến hệ thống thực. - Đừng xoay vòng quá thường xuyên: Tránh đặt tần suất xoay vòng cao hơn mức cần thiết (ví dụ:
hourly) trừ khi ứng dụng của bạn tạo ra một lượng log cực lớn. Mỗi lần xoay vòng đều tiêu tốn một lượng tài nguyên CPU và I/O nhất định. - Theo dõi log của chính logrotate: Logrotate cũng ghi lại hoạt động của nó vào nhật ký hệ thống. Thường xuyên kiểm tra syslog để đảm bảo các cron job của logrotate đang chạy đúng lịch và không có lỗi nào bị bỏ sót.
- Tích hợp vào lịch trình bảo trì: Hãy xem việc quản lý cấu hình logrotate như một phần của quy trình bảo trì hệ thống định kỳ. Khi bạn cài đặt một dịch vụ mới, hãy ngay lập tức tạo một file cấu hình logrotate cho nó.

Bằng cách áp dụng những nguyên tắc này, bạn sẽ biến logrotate thành một đồng minh đắc lực, giúp hệ thống của bạn luôn gọn gàng, hiệu quả và dễ dàng quản lý. Việc này hỗ trợ cho mục tiêu duy trì Uptime là gì cao và High availability là gì cho hệ thống của bạn.
Kết luận
Quản lý tập tin nhật ký là một nhiệm vụ thiết yếu nhưng thường bị bỏ qua trong quản trị hệ thống. Trên Ubuntu 20.04, công cụ logrotate cung cấp một giải pháp mạnh mẽ và linh hoạt để tự động hóa hoàn toàn quy trình này. Bằng cách thiết lập xoay vòng, nén và xóa log một cách thông minh, bạn không chỉ tiết kiệm được dung lượng đĩa quý giá mà còn đảm bảo rằng hệ thống luôn hoạt động với hiệu suất tối ưu. Hơn nữa, việc có một kho lưu trữ nhật ký gọn gàng giúp cho việc chẩn đoán sự cố và phân tích bảo mật trở nên nhanh chóng và hiệu quả hơn rất nhiều.
AZWEB hy vọng rằng qua bài hướng dẫn chi tiết này, bạn đã có thể tự tin cài đặt, cấu hình và tùy chỉnh logrotate để phù hợp với nhu cầu của mình. Hãy bắt đầu áp dụng ngay hôm nay để trải nghiệm sự khác biệt trong việc bảo trì hệ thống. Đừng quên theo dõi các bài viết tiếp theo của chúng tôi để cập nhật thêm nhiều kiến thức hữu ích về quản trị hệ thống. Nếu bạn thấy bài viết này có giá trị, hãy chia sẻ nó cho bạn bè và đồng nghiệp nhé.