Quản lý Log bằng Logrotate trên Ubuntu

Tác giả Network Engineer, T.Tư 21, 2022, 10:28:47 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Quản lý Log bằng Logrotate trên Ubuntu


Hiệu suất của một máy tính hoặc môi trường máy chủ phụ thuộc rất nhiều vào bộ nhớ hệ thống và việc sử dụng đĩa. Nếu thứ gì đó đang tiêu tốn nhiều dung lượng đĩa hơn thì nó sẽ dẫn đến lỗi hệ thống. Tương tự như vậy, việc tăng kích thước tập tin nhật ký phải được kiểm soát để giảm rủi ro đó.

Logrotate được giới thiệu là một tiện ích hệ thống xoay, nén các tập tin nhật ký và gửi nhật ký hệ thống qua thư. Việc quản lý tập tin nhật ký như vậy làm giảm việc sử dụng dung lượng ổ đĩa và ngăn ngừa lỗi hệ thống.

Trong bài viết này, chúng ta sẽ thảo luận về quá trình cài đặt và cấu hình logrotate trên máy chủ Ubuntu 20.04 LTS.

1. Cài đặt Logrotate trên máy chủ Ubuntu 20.04

Trên Ubuntu, logrotate được cài đặt mặc định nhưng trong trường hợp chưa được cài đặt, bạn có thể cài đặt bằng lệnh như hình dưới đây.

Mã nguồn [Chọn]
$ sudo apt update

Mã nguồn [Chọn]
$ sudo apt install logrotate
Bạn có thể xác nhận cài đặt bằng lệnh như hình dưới đây.

Mã nguồn [Chọn]
$ logrotate --version
2. Các tập tin cấu hình Logrotate

Tập tin cấu hình cho logrotate được tạo bởi daemon logrotate. Có hai đường dẫn cho cấu hình như hình dưới đây.

Mã nguồn [Chọn]
/etc/logrotate.conf
Đây là tập tin cấu hình thường được tạo cho tiện ích logrotate

Mã nguồn [Chọn]
/etc/logrotate.d/
Nó là thư mục bao gồm các vòng quay cụ thể của các ứng dụng. Theo mặc định, /etc/logrotate.conf được sử dụng nhưng để mỗi ứng dụng có cấu hình khác nhau, bạn có thể đặt nó trong thư mục /etc/logrotate.d/.

3. Tập tin cấu hình Logrotate mặc định

Như bạn đã biết rằng /etc/logrotate.conf là tập tin cấu hình mặc định. Hãy kiểm tra tập tin cấu hình như được hiển thị trên ảnh chụp màn hình bên dưới.

Kiểm tra tập tin cấu hình bằng lệnh như hình dưới đây.

Mã nguồn [Chọn]
$ cat /etc/logrotate.conf
Đầu ra:


4. Cấu hình cho một ứng dụng cụ thể

Trên ảnh chụp màn hình ở trên, có một cấu hình như include /etc/logrotate.d có nghĩa là cấu hình cho các ứng dụng cụ thể có thể được đặt trên thư mục này. Ở đây, mình sẽ hiển thị cấu hình cho dpkg như hình dưới đây.

Mã nguồn [Chọn]
$ cd /etc/logrotate.d/
Mã nguồn [Chọn]
$ cat dpkg

Để biết chi tiết về từng dòng cấu hình, hãy kiểm tra các điểm được thảo luận bên dưới. Các cấu hình này sẽ thay thế cấu hình mặc định của /etc/logrotate.conf cho các ứng dụng cụ thể như dpkg.

  • monthly: Luân phiên mỗi tháng một lần. Bạn có thể thay thế bằng hàng ngày, hàng tuần theo yêu cầu của bạn.
  • rotate 12: Mười hai tập tin nhật ký cũ sẽ được giữ lại. Nó thay thế 4 mặc định trên /etc/logrotate.conf
  • compress: các tập tin nhật ký cho ứng dụng này sẽ được nén bằng cách sử dụng gzip
  • delaycompress: việc nén tập tin nhật ký trước đó sang chu kỳ quay tiếp theo bị hoãn lại vì nó vẫn được một số chương trình sử dụng.
  • missingok: Không viết bất kỳ thông báo lỗi nào nếu thiếu tập tin nhật ký
  • notifempty: Không xoay tập tin nhật ký nếu nó trống
  • create 644 root root: tập tin nhật ký được tạo với quyền 644, với người dùng và nhóm là root

5. Tạo tập tin cấu hình Logrotate

Giả sử bạn đã cài đặt một ứng dụng như nginx và tập tin nhật ký của nó được tạo trên /var/log/nginx/ thì bạn có thể thiết lập tập tin cấu hình logrotate cho ứng dụng cụ thể này bằng lệnh như hình dưới đây.

Điều hướng đến thư mục logrotate

Mã nguồn [Chọn]
$ cd /etc/logorate.d/
Tạo tập tin logrotate bằng trình chỉnh sửa

Mã nguồn [Chọn]
$ vim nginx

Mã nguồn [Chọn]
/var/log/nginx/*.log {
   daily
   missingok
   rotate 14
   compress
   delaycompress
   notifempty
   create 0640 www-data adm
   sharedscripts
   prerotate
   if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
      run-parts /etc/logrotate.d/httpd-prerotate; \
   fi \
   endscript
   postrotate
   invoke-rc.d nginx rotate >/dev/null 2>&1
   endscript
}

Trong cấu hình trên, mình đã đặt xoay vòng cho 14 nên 14 tập tin nhật ký cũ sẽ được giữ lại và tập tin nhật ký được nén bằng cách sử dụng gzip. Một cấu hình khác được sử dụng trong tập tin ở trên gần như được giải thích trong phần tập tin cấu hình logrotate. Bạn có thể chạy cấu hình mới được tạo với người dùng đặc quyền sudo như hình dưới đây.

Mã nguồn [Chọn]
$ sudo logrotate -d /etc/logrotate.d/nginx

Tại đây, các tập tin nhật ký được thực thi như thể hiện trong ảnh chụp màn hình bên dưới.


6. Logrotate với cron

Trong khi cài đặt gói logrotate, một tập tin crontab cũng được tạo trên tiến trình bên trong /etc/cron.daily với tên logrotate. Kiểm tra ảnh chụp màn hình như được hiển thị bên dưới để biết thêm chi tiết.

Mã nguồn [Chọn]
$ cat /etc/cron.daily/logrotate

Trong bài viết này, bạn đã học cách cài đặt gói logrotate và kiểm tra tập tin cấu hình ứng dụng mặc định và cụ thể cho logrotate với việc triển khai crontab.