HƯỚNG DẪN Rotate Apache logs

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 20/12/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Log Rotate hay còn gọi là “quay vòng log” nó có tác dụng chia log ra thành file nhỏ, rồi nén log theo từng ngày để dễ dàng quản lý giảm dung lượng đĩa cứng.
    Với mỗi website lại có access log và error log khác nhau thì bạn phải cấu hình lại logrotate nếu không toàn bộ log sẽ được dồn vào một file duy nhất, rất khó khăn khi đọc log và quản lý.

    Sau đây tôi sẽ hướng dẫn bạn tự động rotate các file access_log apache và error_log. Điều này có thể được sử dụng tiện ích logrotate như giải thích dưới đây.
    Thêm các dòng sau đây đến thư mục./etc/logrotate.d
    Mã:
    # vi /etc/logrotate.d/apache
    /usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
        size 100M
        compress
        dateext
        maxage 30
        postrotate
          /usr/bin/killall -HUP httpd
          ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" ramesh@thegeekstuff.com
        endscript
    }
    Giải thích:
    • size 100M - Khi access_log, và error_log đạt 100M, nó sẽ được luân chuyển. Bạn cũng có thể sử dụng 100k (cho Kb), 100G (đối với GB). Thay vì kích thước, bạn cũng có thể luân chuyển các bản log apache sử dụng tần số (hàng ngày, hàng tuần, hàng tháng).
    • compress - Chỉ ra rằng các tập tin log luân chuyển sẽ được nén. Theo mặc định ta sẽ sử dụng gzip. Vì vậy, các tập tin luân chuyển sẽ có phần đuôi là .gz.
    • dateext - Thêm định dạng YYYYMMDD vào các tập tin luân chuyển log tức là thay vì access_log.1.gz, nó tạo ra access_log-20110616.gz.
    • maxage - Chỉ ra thời gian bao lâu các tập tin luân chuyển log nên được giữ. Trong ví dụ này, nó sẽ được giữ trong 30 ngày.
    • postrotate endscript - Bất kỳ lệnh kèm theo giữa hai thông số này sẽ được thực hiện sau log được luân chuyển.
    Quan trọng: Khi bạn luân chuyển các tập tin log, bạn muốn apache để viết các tin nhắn log mới cho access_log và error_log mới được tạo ra. Để làm được điều này, bạn cần phải gửi các tín hiệu HUP cho apache. Hãy chắc chắn sử dụng đoạn mã /usr/bin/killall -HUP httpd, nó sẽ khởi động lại apache sau khi luân chuyển các tập tin log.

    Ngoài ra, bạn có thể muốn gửi một email cho bản thần để thông báo rằng các tập tin log đã được luân chuyển, cùng với kết quả đầu ra của lệnh ls -ltr là body của email. tức là thêm những điều sau đây giữa "postrotate" và "endscript" tùy chọn (sau khi dùng lệnh killall).
    Mã:
    ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" ramesh@thegeekstuff.com
    Script /etc/cron.daily/logrotate chạy hằng ngày sẽ thực hiện luân chuyển log của tất cả các tập tin như quy định trong /etc/logrotate.conf và tất cả các tập tin trong thư mục /etc/logrotate.d.

    Sau khi cấu hình tập tin /etc/logrotate.d/apache, cho mục đích thử nghiệm, bạn có thể gọi script logrotate như dưới đây.
    Mã:
    /etc/cron.daily/logrotate
    Một khi các tập tin log được luân chuyển, sử dụng lệnh ls để xác minh. Như chúng tôi đã giải thích ở trên, các tập tin luân chuyển log sẽ được giữ trong 30 ngày.
    Mã:
    # ls /usr/local/apache2/logs
    access_log
    error_log
    access_log-20110716.gz
    error_log-20110716.gz
     

Chia sẻ trang này

Đang tải...