logrotate sẽ không tự động xoay nhật ký của tôi


8

Tôi có hai hộp Debian (i386 v AMD) khác nhau và có cùng một vấn đề. logrotate sẽ không tự động xoay nhật ký của tôi. Nó hoạt động tốt khi tôi buộc nó bằng tay như

/usr/sbin/logrotate -f /etc/logrotate.conf

nhưng nó không ổn với tôi

Các cài đặt không được sửa đổi (ít nhất là tôi đã không sửa đổi chúng), hộp AMD là một cài đặt mới chưa thực hiện được.

Nếu bạn đã nhận thấy một vấn đề tương tự, xin vui lòng giúp tôi.

Cập nhật (một số đầu ra máy chủ):

logrotate -d http://pastebin.com/e6AshtGq

ls -l /var/log http://pastebin.com/Y2A4Li59

cat /etc/logrotate.conf http://pastebin.com/1h7Uwctr

ls -l /etc/logrotate.d http://pastebin.com/NvUAeszM


Bạn có bất kỳ loại lỗi? Xác minh rằng "bao gồm /etc/logrotate.d" không được nhận xét.
Torian

1
Làm thế nào để bạn biết nó sẽ không xoay vòng nhật ký của bạn? Lỗi? Không xảy ra sau 30 ngày? Có phải những chiếc hộp này luôn luôn hoạt động? Là logrotate theo lịch trình trong cron?
EightBitTony

Tôi có thể xác minh rằng "bao gồm /etc/logrotate.d" được đặt ở cả hai hệ thống. Không có lỗi ngoại trừ một số mục thú vị trong syslog, như ...rsyslogd was HUPed...không chắc chắn về điều này có nghĩa là bất cứ điều gì.
fabrik

@EightBitTony Đây là những máy chủ để chúng hoạt động liên tục. Các cài đặt ít nhiều là mặc định (cấu hình logrotate không được tôi sửa đổi), chỉ những thứ thông thường được cài đặt. logrotate được bao gồm trong việc cron.dailyquay vòng sẽ không xảy ra.
fabrik

@Fabrik vui lòng thêm đầu ra logrotate -d /etc/logrotate.conf vào câu hỏi
EightBitTony

Câu trả lời:


8

Kiểm tra xem logrotate của bạn đang được chạy bởi cron.

Biên tập:

Từ các cuộc thảo luận bình luận - có vẻ như cron không hoạt động chính xác. Tôi đã có một cronjob trong crontab của mình mà không có người dùng nhưng điều này chỉ được đưa ra khi tôi khởi động lại cron daemon

Các hệ thống Ubuntu và centos của tôi có một /etc/cron.daily/logrotatetệp chứa nội dung

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

My / etc / crontab có dòng sau để chạy các công việc hàng ngày

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily 

Điều này hoàn toàn giống với cấu hình của tôi ngoại trừ thực tế là tôi không hoạt động :(
fabrik

Là cron chạy kiểm tra đầu ra của ps -ef | grep cron| grep -v grep? Thêm một tiếng vang vào đầu /etc/cron.daily/logrotate echo "logrotate runing" >>/tmp/logrotate.outvà xem nếu nó được tạo.
dùng9517

Có vẻ như đã xảy ra sự cố với crontab của tôi. cronđang hoạt động nhưng sẽ không chạy công việc logrotate hàng ngày. Nếu tôi chạy /etc/cron.daily/logrotatethủ công, nó sẽ quay các bản ghi của tôi, /tmp/logrotate.outcũng được viết.
fabrik

Đừng quên công việc hàng ngày sẽ không chạy lại cho đến ngày mai!
dùng9517

tất nhiên nhưng hôm qua tôi đã sửa đổi /etc/cron.daily/logrotatenên tôi đã thêm một -ftham số để buộc quay nhưng sáng hôm nay nhật ký của tôi không được quay.
fabrik

10

Tôi đã có một vấn đề tương tự nhưng crontabđã làm việc và đối với một số thư mục nhật ký logrotatehoạt động nhưng đối với một số thì không. Khi tôi cố chạy logrotate bằng tay, tôi nhận được một số thông báo lỗi.

user@server:/var/log/apache2$ sudo /usr/sbin/logrotate -f /etc/logrotate.conf
error: error creating output file /var/log/apache2/access.log.1.gz: File exists
error: error creating output file /var/log/apache2/error.log.1.gz: File exists
...

Tất cả các *.1.gztệp có kích thước bằng 0. Tôi đã xóa thủ công tất cả các tệp được đề cập trong thông báo lỗi, chạy sudo /usr/sbin/logrotate -f /etc/logrotate.conflại và nó hoạt động.

Mặc dù tôi cũng nên chia sẻ giải pháp thay thế này tại đây, vì đây là kết quả tìm kiếm đầu tiên xuất hiện khi tôi tìm kiếm vấn đề nhưng giải pháp được đề xuất không phù hợp với tôi. Có lẽ điều này giúp những người khác cũng đang ở trong hoàn cảnh giống như tôi.


cảm ơn, đã có vấn đề này Đã xóa tất cả các tệp 1.gz và cuối cùng nó đã hoạt động trở lại. Thật là một đoạn mã khủng khiếp.
Florian Heigl

2

Tôi biết rồi mà. Chủ đề 5 tuổi.

Chỉ cần nghĩ rằng nếu nó vẫn tăng khá cao trong các tìm kiếm, tôi sẽ đóng góp và đưa ra giải pháp cho vấn đề tôi gặp phải. Công việc logrotate của tôi không được xử lý tự động trên một trong các máy chủ của tôi. Buộc xoay hoạt động tốt. Tôi đã đưa ra một giải pháp sau khi tôi chạy lệnh xoay vòng hàng ngày bằng tay:

( cd / && run-parts --report /etc/cron.daily )

Sau đó, tôi thấy lỗi đã dừng công việc logrorate bắn:

/etc/cron.daily/logrotate:
error: iptraf-ng:2 duplicate log entry for /var/log/iptraf/*.log

Vâng, đơn giản như vậy. Tôi có hai tệp xác định các bản ghi giống nhau để xoay (iptraf và iptraf-ng). Chỉ cần loại bỏ một trong những định nghĩa logrotate xung đột cho iptraf đã thực hiện thủ thuật này.

rm /etc/logrotate.d/iptraf

Một vấn đề khác có thể là một tập tin botnet / etc / crontab. Có nghĩa là gấp đôi hoặc gấp ba kiểm tra cú pháp trên tệp đó vì nó không cung cấp bất kỳ đầu ra nào tôi có thể tìm thấy nếu cú ​​pháp sai. Lặng lẽ thoát ra sau khi xác nhận cú pháp thất bại.

Hy vọng điều này sẽ giúp ai đó tiết kiệm thời gian.


1

OK tôi đã có một vấn đề tương tự.

"Nhật ký không được quay?" nhưng chạy logrotate bằng tay (hoặc chạy /etc/cron.dailyvà nó xoay chúng tốt.

Vì vậy, có vẻ như cron chỉ "không chạy" hàng ngày. Lạ Vì vậy, tôi đã xem trong logfile nơi cron xuất dữ liệu của nó và thấy "Mã xác thực không còn hợp lệ; yêu cầu mới" để khắc phục sự cố cụ thể đó, xem tại đây


1

Tôi đã thấy điều này xảy ra thường xuyên theo thời gian khi các dịch vụ thay đổi và các tùy chọn được sử dụng trong logrotate đã được điều chỉnh lại, khiến logrotate bị lỗi mỗi ngày.

Để cung cấp cho bạn một ý tưởng, cách khắc phục cuối cùng liên quan đến tùy chọn notifyempty trong tệp logrotate apache không còn hiệu lực nữa, đến lượt nó khiến logrotate dừng tất cả lại với nhau.

Mặc dù điều này đã được đề cập đến một điểm, tôi muốn chia sẻ quá trình tôi trải qua khi theo dõi các vấn đề này:

  1. bắt đầu bằng cách chạy #/usr/sbin/logrotate -f /etc/logrotate.confđể tìm bất kỳ lỗi nào (ví dụ: postfix: 3 'Mất tích'.)
    Tệp và số dòng mà nó đề cập đến là tệp trong thư mục logrotate.d.
  2. Chỉnh sửa tệp trong câu hỏi: # vi /etc/logrotate.d/postfixvà xóa tùy chọn gây ra sự cố và lưu tệp.
  3. Lặp lại bước đầu tiên để xem liệu xoay có hoạt động không, hoặc nếu có vấn đề khác.

Có những lúc bước đầu tiên đơn giản là không tạo ra bất cứ thứ gì, nhưng bạn biết có một vấn đề. Vì toàn bộ điều này bắt đầu vì các tệp nhật ký cho một dịch vụ không được xoay vòng, bạn có thể xem quy trình logrotate đang tìm kiếm dịch vụ cụ thể đó để xem điều gì đang ngăn chặn nó quay. Để làm điều này, hãy thêm thẻ verbose vào lệnh logrotate của bạn và xem để xem điều gì xảy ra trong thư mục đó (nếu có gì).


1

Kiểm tra các tham số cấu hình logrotation xung đột !!

Tôi đã vật lộn với vấn đề này và cuối cùng tôi đã đọc một số tài liệu về logrotate rất chặt chẽ, tôi đã tìm thấy một số tài liệu hữu ích ở đây .

Tôi đã chỉ định cả tham số Kích thước và tham số Xoay vòng , trong khi thực tế tôi không muốn. Tôi muốn xoay vòng của tôi xảy ra chính xác khi chúng được lên lịch trong cron.

  1. Tham số kích thước sẽ ghi đè bất kỳ khoảng thời gian xoay. Vì vậy, nhật ký của tôi cần phải vượt quá tham số này trước khi chúng được xoay. (Tôi có thể thấy điều này sẽ hữu ích như thế nào khi bạn lo lắng nhất về việc sử dụng đĩa. Nhưng đó không phải là cách tôi muốn sử dụng nó.)
  2. Khoảng thời gian quay sẽ kiểm tra khi lần quay cuối cùng xảy ra và đảm bảo vòng quay tiếp theo bị trễ bởi số lượng đã chỉ định. Nhưng, tôi không rõ về cách bạn kiểm soát khi thời gian đó xảy ra, nó dựa trên lần cuối cùng xảy ra một vòng quay.

Vì vậy, hãy loại bỏ tham số Rotation Interval and Size . Sau đó, bạn sẽ nhận được một vòng quay mỗi khi logrotate được gọi mà không phải buộc nó.

EDIT : OK ngay cả điều này không hoàn toàn làm việc! Nếu tệp nhật ký dưới một ngưỡng nhất định, nhật ký sẽ không xoay. Vì vậy, khi tôi chạy một công việc định kỳ xoay cứ sau 2 phút, nó không xoay vòng các bản ghi.

Bạn có thể xem thông tin gỡ lỗi chi tiết nếu bạn chạy logrotate -d. Điều này cung cấp một số thông tin gỡ lỗi rất hữu ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.