Bạn thích công cụ xoay vòng nào?
Bạn thích công cụ xoay vòng nào?
Câu trả lời:
Theo kinh nghiệm của tôi, logrotate là tuyệt vời. Nó rất linh hoạt và hoạt động tốt với hầu hết các phần mềm.
Tuy nhiên, có một số vấn đề với nó và vì cronolog chủ yếu là một công cụ xoay vòng nhật ký web, tôi sẽ ghi lại trải nghiệm của mình với logrotate + apache có vấn đề:
Khi xoay nhật ký, chúng ta phải thông báo cho apache rằng một bản ghi đang được xoay, vì ngay cả khi logrotate đổi tên access.log thành access.log.1, apache sẽ tiếp tục ghi vào access.log.1, vì nó đang ghi vào inode và đổi tên tập tin không ảnh hưởng đến số inode.
Trên debian etch (và có lẽ nhiều bản phân phối khác), logrotate đang được sử dụng để xoay các bản ghi apache. Bây giờ, apache có một khởi động lại duyên dáng khuyên cho các tiến trình apache con thoát ra khi chúng kết thúc việc phục vụ các kết nối hiện có, apache sau đó đọc lại cấu hình của nó, sinh ra các tiến trình con mới, bắt đầu ghi vào một tệp nhật ký mới (trong trường hợp trước đó là xoay vòng).
Điều này nghe có vẻ là một giải pháp tuyệt vời, tuy nhiên khởi động lại duyên dáng không phải lúc nào cũng hoạt động trong một số điều kiện nhất định (như tải nặng), vì vậy các nhà phát triển debian đã quyết định sử dụng khởi động lại apache thay vì khởi động lại duyên dáng, trong cấu hình logrotate apache. Thật không may, điều này làm cho tất cả các kết nối bị hủy cùng một lúc, điều này rất tệ cho các trang web được tải nặng. Ngoài ra, khởi động lại apache cũng có thể gây ra các vấn đề như dừng apache và không bắt đầu (cũng trong các tình huống tải nhất định), xem các liên kết lỗi bên dưới để biết chi tiết.
Điểm mấu chốt là, logrotate là tuyệt vời, nhưng có thể dẫn đến một số vấn đề nhất định cho các chương trình nhất định. Tôi không có nhiều kinh nghiệm về thời gian, nhưng vì nó ghi nhật ký thông qua một đường ống, nên nó không yêu cầu tải lại apache khi xoay tệp nhật ký, về cơ bản giải quyết tất cả những gì được mô tả ở trên.
Các lỗi debian logrotate / apache có liên quan:
Tôi thích cronolog, nhưng nó không phải là một ưu tiên thực sự mạnh mẽ.
logrotate nơi được bắt đầu bởi cron và nếu một hệ thống ngừng hoạt động vì một số lý do khi việc quay vòng xảy ra, thì các tệp nhật ký của bạn sẽ không được xoay.
Tôi cũng thích có các tệp nhật ký có ngày (% Y% m.combined.access.log) trong tên vì tôi giữ các nhật ký đó trong một thời gian dài. Trên hầu hết các hệ thống, theo mặc định, logacheate apache sẽ đặt tên cho các tệp access.log, access.log.1, v.v. Có thể sử dụng một ngày trong logfiles bằng logrotate, nhưng tôi không thể tìm ra cách làm lần cuối cùng tôi nhìn.
Chỉ bao giờ sử dụng logrotate. Đó là những gì Debian sử dụng theo mặc định và tôi chưa bao giờ có bất kỳ khiếu nại nào với nó.
Tôi hầu như chỉ sử dụng cronolog
hơn logrotate
.
logrotate
đi kèm với Debian và tôi cho phép nó tiếp tục hoạt động cho các dịch vụ hệ thống như nhật ký máy chủ thư. Nhưng đối với lighttpd
các tệp nhật ký và Apache , tất cả chỉ có thế cronolog
.
Một trong những lý do tại sao tôi sử dụng cronolog
là tất cả các cấu hình xảy ra trong dòng tệp nhật ký của cấu hình máy chủ web
ví dụ: trong lighttpd
tệp cấu hình, bạn có thể đặt:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"
Và tất cả nhận được một tệp nhật ký mới mỗi tuần mà không cần bất kỳ cấu hình nào khác. Hoặc bạn có thể sáng tạo và làm một cái gì đó như:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"
Và nhận được một tệp nhật ký hiển thị lưu lượng truy cập theo ngày trong tuần. ví dụ tất cả các ngày chủ nhật, tất cả các ngày thứ ba.
Điều tốt hơn là ngay cả khi máy chủ ngừng hoạt động trong bất kỳ khoảng thời gian nào, tệp nhật ký chính xác sẽ được sử dụng khi khởi động lại.