Contents:
Đối với những ai sử dụng Linux, sẽ quen với việc xem, quản lý log của các dịch vụ/ ứng dụng trên hệ thống. Tuy các file log ở dạng text nhưng nếu không quản lý, dung lượng của chúng có thể lên đến hàng GB gây lãng phí dung lượng ổ cứng.
Mặt khác nếu chúng ta không quản lý log, sẽ dẫn đến việc xem log trở nên khó khăn khi mở một file log dung lượng cao, hay tìm tới khoảng thời gian cần xem nếu không quản lý file log theo thời gian.
Bài viết này sẽ giới thiệu và hướng dẫn các bạn sử dụng công cụ Logrotate để quản lý log trên Linux
Log là gì?
Log tập tin ghi lại liên tục các thông báo về hoạt động của cả hệ thống hoặc của các dịch vụ được triển khai trên hệ thống và file tương ứng. Log file thường là các file văn bản thông thường dưới dạng “clear text” tức là bạn có thể dễ dàng đọc được nó, vì thế có thể sử dụng các trình soạn thảo văn bản (vi, vim, nano…) hoặc các trình xem văn bản thông thường (cat, tailf, head…) là có thể xem được file log.
Các file log có thể nói cho bạn bất cứ thứ gì bạn cần biết, để giải quyết các rắc rối mà bạn gặp phải miễn là bạn biết ứng dụng nào, tiến trình nào được ghi vào log nào cụ thể.
/var/log là nơi lưu lại hầu hết tất cả các log.
LOGROTATE là một công cụ giúp đơn giản hóa việc quản lý log files trên hệ thống. Nó hỗ trợ quản lý Log theo nguyên tắc xoay vòng file log, Logrotate tự động tạo ra các file log mới theo thời gian (ngày, tuần…), theo dung lượng. Các file log cũ sẽ được xóa/nén/di chuyển theo cấu hình trước đó.
Logrotate hoạt động một cách tự động, không cần can thiệp thủ công.
Thông thường Logrotate được cài sẵn trên các bản phân phối Linux, bạn có thể kiểm tra bằng lệnh sau:
# logrotate logrotate 3.8.7 - Copyright (C) 1995-2001 Red Hat, Inc.
Nếu chưa được cài bạn có thể cài đặt bằng lệnh sau:
Trên hệ thống Ubuntu/Debian:
# apt-get update # apt-get install logrotate
Trên hệ thống CentOS/Redhat:
# yum update # yum install logrotate
/etc/logrotate.conf là file cấu hình mặc định của Logrotate.
root@itfromzero:~# cat /etc/logrotate.conf
Nội dung:
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
Hệ thống Linux sẽ chạy Logrotate theo crontab, mặc định Logrotate sẽ chạy hàng ngày nên script chạy Logrotate sẽ được đặt ở /etc/cron.daily/logrotate:
root@itfromzero:~# cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
Nếu bị mất file script trên bạn có thể tạo file mới và copy nội dung phía trên vào là được.
Để cấu hình Logrotate cho từng dịch vụ, chúng ta tạo các file tương ứng với các dịch vụ và để trong thư mục /etc/logrotate.d
Ví dụ cấu hình Logrotate của yum như sau:
root@itfromzero:~# cat /etc/logrotate.d/yum /var/log/yum.log { missingok notifempty yearly create 0600 root root }
Ví dụ mình có một dịch vụ gửi file có tên là send_file. Thư mục log để ở /var/log/ (/var/log/send_file.log), mình sẽ tạo cấu hình Logrotate cho send_file như sau:
root@itfromzero:~# nano /etc/logrotate.d/send_file
Nội dung như sau:
/var/log/send_file.log { daily rotate 4 missingok notifempty create 660 root root }
Theo file cấu hình trên Logrotate sẽ rotate file log của dịch vụ send_file (/var/log/send_file.log) theo các option như:
Để kiểm tra cấu hình của Logrotate đúng hay sai, chúng ta sử dụng lệnh logrotate -d. Ví dụ kiểm tra cấu hình của send_file:
root@itfromzero:~# logrotate -d /etc/logrotate.d/send_file
Output:
reading config file /etc/logrotate.d/send_file reading config info for /var/log/send_file.log Handling 1 logs rotating pattern: /var/log/send_file.log after 1 days (4 rotations) empty log files are not rotated, old logs are removed considering log /var/log/send_file.log log does not need rotating
Bạn có thể chỉ định cụ thể một hay nhiều file log với đường dẫn tuyệt đối của file log đó, phân biệt danh sách các log file cụ thể bằng khoảng trắng. Ví dụ:
/var/log/send_file.log /var/log/*.log/
Có 4 giá trị cấu hình theo thời gian tương ứng như sau:
Chúng ta có thể cấu hình rotate dựa vào dung lượng file, ví dụ nếu file đó đạt dung lượng 1GB thì tiến hành rotate tạo file log mới. Các đơn vị kích thước file có thể sử dụng là K, M, G.
Ví dụ: rotate 4 sẽ giữ lại 4 file log cũ.
File log mới được tạo với quyền 660 và chỉ root mới có quyền tạo và chỉnh sửa file log.
LogRotate có thể chạy các lệnh trước hay sau quá trình rotate. Điều này thường được áp dụng để khởi động lại dịch vụ sử dụng file log nhằm không làm gián đoạn quá trình ghi log.
Để chạy một số lệnh trước khi quá trình rotate bắt đầu, ta đặt lệnh thực thi nằm giữa prerotate và endscript. Ví dụ:
Prerotate systemctl restart httpd > /dev/null Endscript
Để chạy lệnh sau khi quá trình rotate kết thúc, ta đặt lệnh thực thi nằm giữa postrotate và endscript. Ví dụ:
Postrotate systemctl restart httpd > /dev/null Endscript
sharedscripts: Script postrotate sẽ được chạy sau khi toàn bộ các file logs được rotate. Nếu không có tùy chọn này, postrotate script sẽ được chạy sau mỗi log file được rotate.
Trong trường hợp bạn muốn chạy ngay LogRotate, hãy dùng lệnh bên dưới:
root@itfromzero:~# logrotate -vf /etc/logrotate.d/send_file
Trong đó:
Chúc các bạn thành công.
Như các bạn đã biết thì Telegram là một dịch vụ tin nhắn tuyệt vời…
Apache Tomcat là gì? Apache Tomcat là một web server HTTP được phát triển bởi…
20 triệu có lẽ là một mức chi phí khá lý tưởng cho một máy…
Micosoft chính thức phát hành Microsoft Edge Chromium Microsoft đã chính thức tung ra trình…
CentOS 8 đã phát hành ngày 25/09/2019, phiên bản 8 lần này có những thay đổi…
Thời buổi công nghệ phát triển, phần lớn công việc của con người đều có…
Leave a Comment