logrotate berdasarkan ukuran - apakah saya perlu mengubah cron?

10

Konfigurasi logrotate saya saat ini terlihat seperti ini (menggunakan logrotate 3.8.7)

"/var/log/haproxy.log" {
  daily
  size 250M
  rotate 1
  create 644 root root
  missingok
  compress
  notifempty
  copytruncate
}

Ini berhasil berjalan sekali sehari, tetapi ketika ukurannya melebihi 250 juta, ia tidak bisa diputar. Jadi ia menunggu sampai akhir hari untuk berputar, berapapun ukurannya.

Saya pernah membaca bahwa ada pilihan maxsize, dan setelah mengubah size 250Mke maxsize 250Mmasih tidak bekerja.

Apakah saya perlu mengatur cron untuk menjalankan logrotate setiap jam, atau logrotate dijalankan secara otomatis karena mendengarkan ukuran file itu, dan ada sesuatu yang salah terjadi?

Hommer Smith
sumber

Jawaban:

7

Ya, Anda perlu berlari logrotatelebih dari sekali sehari untuk mencapai ini. Ini dijawab dalam paragraf detik dari halaman manual logrotate(8) :

Biasanya, logrotatedijalankan sebagai pekerjaan cron harian. Itu tidak akan mengubah log beberapa kali dalam satu hari kecuali kriteria untuk log itu didasarkan pada ukuran log dan logrotatedijalankan beberapa kali setiap hari, atau kecuali jika opsi -fatau --forcedigunakan.

Jika Anda ingin menjalankan logrotatesetiap jam, bukan setiap hari, Anda dapat memindahkannya:

mv /etc/cron.daily/logrotate /etc/cron.hourly

Sejak 3.8.1 telah ada maxsize. Perbedaan antara sizedan maxsizedijelaskan di sini:

maxsize ukuran

File log yang diputar ketika mereka tumbuh lebih besar dari ukuran byte bahkan sebelum interval waktu tambahan yang ditentukan ( daily, weekly, monthly, atau yearly). sizeOpsi terkait serupa kecuali bahwa itu saling eksklusif dengan opsi interval waktu, dan itu menyebabkan file log diputar tanpa memperhatikan waktu rotasi terakhir. Saat maxsizedigunakan, ukuran dan stempel waktu dari file log dipertimbangkan.

Ini akan membuat keduanya cocok untuk Anda gunakan: sizetanpa interval apa pun dan maxsizejika juga interval diperlukan. Namun, ini tidak mengubah fakta bahwa secara default logrotatehanya berjalan setiap hari. Interval itu cocok untuk sebagian besar, karena dalam banyak kasus dibutuhkan lebih lama dari satu hari untuk log tumbuh 250M.

Esa Jokinen
sumber
1
FYI ada arahan maksimal, mulai dari 8.1: hpux.connect.org.uk/hpux/Sysadmin/logrotate-3.8.7/…
Hommer Smith
Terima kasih telah memperhatikan bahwa saya membaca versi kuno manual ini, @HommerSmith! Saya mengoreksi jawaban saya sesuai.
Esa Jokinen