(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Xoay vòng nhật ký (log rotation)

Các hoạt động nhất định của hệ thống được ghi thành nhật ký. Ví dụ như gỡ rối một ứng dụng, cảnh báo từ kernel, xác minh login, mail, cron, vv. Các file nhật ký thường lớn lên rất nhanh. Do vậy chúng cần được chia nhỏ, nén lại, rồi xóa đi những file cũ nhất và thay bằng file mới. Việc đó được gọi là xoay vòng nhật ký.

Systemd có dịch vụ systemd-journald quản lý nhật ký tương đối hoàn hảo, và có journalctl dùng để truy vấn nhật ký. journalctl có các lựa chọn để lọc thông tin trình bày. Chẳng hạn lệnh journalctl -b trình bày đầy đủ thông tin boot hệ thống nhưng lệnh journalctl -b -p err trình bày chỉ những thông điệp về tình trạng lỗi.

Dù có hệ thống quản lý nhật ký của systemd, vẫn còn nhiều chương trình thích làm việc với daemon nhật ký hệ thống (syslog) truyền thống. Cho nên systemd-journald vẫn cần cộng tác với daemon nhật ký truyền thống và sẵn sàng chia sẻ socket.

Syslog sử dụng trong Omarine 3.0 là sysklogd, bao gồm hai tiện ích hỗ trợ ghi nhật ký hệ thống và bẫy thông điệp kernel. Chúng tương ứng là syslogd và klogd.

File cấu hình /etc/syslog.conf chỉ ra các quy tắc ghi nhật ký. Mỗi quy tắc bao gồm hai trường là trường selector và trường action cách nhau bởi một hay nhiều khoảng trắng hoặc tab. Trường selector chỉ ra mẫu để lọc thông tin nhật ký khớp với mẫu, rồi kết quả được chuyển cho trường action.

Dòng bắt đầu với dấu # và dòng trống là không tính.

Một quy tắc có thể được chia ra thành nhiều dòng với điều kiện các dòng đầu được kết thúc bởi một dấu gạch chéo ngược (\).

Một selector về cơ bản có dạng

facility.priority

facility là loại ứng dụng, có thể ứng với một trong những từ khóa dưới đây:

  • auth: thông điệp xác minh / an ninh
  • authpriv: thông điệp xác minh / an ninh riêng
  • cron: daemon cron
  • daemon: các daemon hệ thống nói chung
  • ftp: daemon ftp
  • kern: thông điệp kernel
  • local0 đến local7: để dành cho sử dụng địa phương
  • lpr: hệ thống máy in dòng
  • mail: hệ thống thư
  • news: hệ thống tin Usenet
  • syslog: thông điệp sinh ra bên trong bởi syslogd
  • user: thông điệp mức user nói chung
  • uucp: hệ thống UUCP (Unix-to-Unix Copy Protocol)

priority là mức độ quan trọng hay độ ưu tiên của thông điệp, với các mức sau, xếp theo thứ tự tăng dần độ quan trọng:

  • debug: thông điệp mức gỡ rối
  • info: thông điệp thông tin
  • notice: tình trạng bình thường, nhưng đáng kể
  • warning: tình trạng cảnh báo
  • err: tình trạng lỗi
  • crit: tình trạng nghiêm trọng
  • alert: tình trạng báo động, cần hành động ngay lập tức
  • emerg: hệ thống bị treo, không sử dụng được

Tất cả các thông điệp có độ ưu tiên như được chỉ ra trong selector và cao hơn được ghi nhật ký tới action.

Quy định mở rộng

Dấu hoa thị (*) đại diện cho mọi facility và mọi priority. Từ khóa none đại diện cho không có priority cho facility tương ứng.

Bạn có thể chỉ ra nhiều facility với cùng độ ưu tiên trong một selector bằng cách sử dụng dấu phẩy (,). Có thể dùng nhiều selector ngăn cách bởi dấu chấm phẩy (;) cho một action đơn. Trong trường hợp này mỗi selector trong trường selector sẽ viết đè (đè ý nghĩa) lên selector đằng trước nó.

Nếu bạn đặt một dấu bằng (=) đằng trước độ ưu tiên thì syslogd chỉ tham chiếu tới độ ưu tiên đơn đó, mà không tính các độ ưu tiên cao hơn. Bạn cũng có thể đặt một dấu chấm than (!) đằng trước độ ưu tiên để syslogd lờ đi độ ưu tiên này và tất cả các mức cao hơn của nó. Hơn nữa, bạn có thể sử dụng cả dấu chấm than và dấu bằng nếu muốn syslogd lờ đi chỉ độ ưu tiên đơn đó (dấu chấm than phải đứng trước dấu bằng, đó là !=).

Action

Trường action mô tả thuật ngữ trừu tượng “file nhật ký”. Nhưng một “file nhật ký” không nhất thiết là một file thật.

Các thông điệp điển hình được ghi nhật ký vào các file thật. File phải được chỉ ra với đường dẫn đầy đủ (phải bắt đầu với dấu /).

Thêm vào đằng trước tên file một dấu gạch ngang (-) nghĩa là bỏ qua đồng bộ file sau mỗi lần ghi nhật ký. Điều này có thể dẫn đến mất thông tin nếu hệ thống bị treo ngay sau lúc ghi, bù lại là tăng hiệu suất thực hiện.

Thông điệp nhật ký còn có thể chuyển tới ống có tên (named pipe – file fifo), console, máy từ xa, tới những người sử dụng theo danh sách, hoặc tới mọi người sử dụng.

Để chuyển tiếp thông điệp tới máy từ xa, đặt trước tên host một dấu @. Cách này hữu ích khi máy bị treo và không ghi được trên đĩa thì bạn vẫn có thể thu được nhật ký trên máy từ xa để xem xét.

Ví dụ

kern.info;kern.!err -/var/log/adm/kernel-info

Ghi nhật ký tất cả các thông điệp kernel mức info, notice, warning vào file /var/log/adm/kernel-info, bỏ qua đồng bộ file.

kern.crit @eggplant

Chuyển tất cả các thông điệp kernel mức nghiêm trọng và cao hơn tới máy từ xa eggplant.

*.=info;\

mail,news.none /var/log/adm/messages

Ghi nhật ký tất cả các thông điệp mức info vào file /var/log/adm/messages, ngoại trừ đối với hai facility là mail và news.

Xoay vòng nhật ký

Để xoay vòng nhật ký tự động cần có ba bộ phận: syslog, logrotate và cron.

logrotate dùng cho xoay vòng nhật ký, với cấu hình nằm trong file /etc/logrotate.conf và thư mục /etc/logrotate.d. Cấu hình chính bao gồm chu kỳ xoay, số backup được giữ lại, nén tệp, chế độ cho file mới được tạo và ngưỡng của cỡ file để xoay. Những cấu hình này có thể áp dụng chung hoặc áp dụng cho một file hay một nhóm file nhật ký riêng biệt.

Omarine 3.0 tạo một dịch vụ gọi là dịch vụ logrotate. Dịch vụ này được khởi động định kỳ theo lịch cron. Công việc đặt lịch này dành cho root với nội dung mặc định như sau:

0 3 * * * /bin/systemctl start logrotate

Advertisements

Gửi phản hồi

%d bloggers like this: