Tại sao logrotate CentOS của tôi chạy vào thời điểm ngẫu nhiên?


10

Tôi đặt một logrotatetệp cấu hình vào /etc/logrotate.d/và dự kiến ​​các bản ghi sẽ xoay cùng một lúc; tuy nhiên, họ không ... thời gian luân chuyển nhật ký dường như ngẫu nhiên +/- một giờ.

Tại sao thời gian quay vòng của nhật ký bắt đầu ngẫu nhiên và làm cách nào để thay đổi điều này?


Thông tin: tập tin cấu hình logrotate của tôi trông như thế này ...

/opt/backups/network/*.conf {
        copytruncate
        rotate 30
        daily
        create 644 root root
        dateext
        maxage 30
        missingok
        notifempty
        compress
        delaycompress
        postrotate
            ## Create symbolic links in daily/
            PATH=`/usr/bin/dirname $1`;
            FILE=`/bin/basename $1`;
            /bin/ln -s $1 $PATH/daily/$FILE
        endscript
}

Câu trả lời:


10

Điều quan trọng là biết rằng CentOS chạy các script trong /etc/cron.{daily,weekly,monthly} từ anacron... /etc/anacrontabđược thiết lập RANDOM_DELAY, mà làm những gì bạn có thể mong đợi (nó trì hoãn đến RANDOM_DELAYphút trước khi bắt đầu công việc) ...

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Cài đặt RANDOM_DELAY=0/ START_HOURS_RANGE=3khắc phục sự cố ...

BIÊN TẬP

Sau khi suy nghĩ thêm, tôi sẽ gỡ bỏ anacronvà cài đặt vixie bình thường cron...


Hãy nhớ rằng nếu máy chủ của bạn bị tắt vì một số lý do khi anacron được cho là chạy, thì nó sẽ chạy khi đôi khi hệ thống khởi động. Vì vậy, bạn vẫn có thể nhận được luân chuyển nhật ký như thời gian khác nhau. Có lẽ không phải là một vấn đề lớn, nhưng đáng chú ý.
AngerClown

Đặt START_HOURS_RANGE thành một giá trị (= 3) sẽ không hoạt động, vì phạm vi mong đợi var này, không phải là số đơn. Vì vậy, nó phải là 3-4 trong ví dụ trên.
Slavik

6

Không phải là câu trả lời, nhưng gần đây tôi đã cố gắng tìm hiểu điều này vì một lý do khác và không thể tìm thấy bất kỳ tài liệu nào về cách Redhat 6, Centos, v.v. chạy cron. Đây là những gì tôi đảo ngược thiết kế:

  1. crond vẫn chạy khi khởi động hệ thống - nó tải tất cả các tệp trong /etc/cron.d
  2. /etc/cron.d/0hourly chạy tất cả các tập tin trong /etc/cron.hourly
  3. /etc/cron.hourly/0anacron chạy anacron
  4. tải anacron /etc/anacrontab
  5. /etc/anacrontabchạy (thông qua run-parts) /etc/cron.daily, /etc/cron.weekly/etc/cron.monthly

Vì vậy, nó phức tạp hơn so với các phiên bản trước.

Có thể khôi phục hành vi cũ bằng cách thêm các mục nhập hàng giờ, hàng tuần và hàng tháng trở lại /etc/crontab(hiện đang trống), nhưng anacrontabcũng cần phải được cập nhật. Điều này có thể hoặc không thể phá vỡ các bản cập nhật trong tương lai ...


4

Câu trả lời khác bao gồm cách nhưng không nhất thiết do tại sao . Các lý do là để giữ cho công việc cron đêm đồng thời từ cơ sở hạ tầng giết chết bạn. (Hãy tưởng tượng bộ nhớ được chia sẻ hoặc có thể 1000 máy chủ đang chạy trên một máy chủ VM hoặc chỉ các công việc hàng đêm đánh vào một số dịch vụ được kết nối mạng.)

Tôi luôn giải quyết vấn đề này để luân chuyển nhật ký cụ thể trên các hệ thống của mình bằng cách di chuyển công việc xoay vòng nhật ký cụ thể từ cron.dailymục nhập có thời gian mã hóa cứng cron.d. Bằng cách đó, bạn vẫn có được các hoạt động so le cho các dịch vụ như updateb trong đó thời gian thực sự không cần thiết, nhưng thời gian nhất quán để xoay vòng nhật ký.

Tất nhiên, khi bạn đạt đến một kích thước nhất định, bạn sẽ muốn tất cả các nhật ký của mình được gửi khỏi máy chủ đến máy chủ log, và sau đó thời gian quay của các tệp trên các nút riêng lẻ ít quan trọng hơn, vì chúng chỉ ở đó cho thuận tiện (thường theo đuôi của tập tin) hoặc như một dự phòng cuối cùng. Sau đó, bạn chắc chắn đặt xoay vòng trên máy chủ nhật ký của mình thành hệ thống.

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.