logrotate tidak akan memutar log saya secara otomatis


8

Saya memiliki dua kotak Debian (i386 v AMD) yang berbeda dan memiliki masalah yang sama. logrotate tidak akan memutar log saya secara otomatis. Ini berfungsi dengan baik ketika saya memaksakan secara manual suka

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

tapi itu tidak baik untukku.

Pengaturan tidak diubah (setidaknya saya tidak mengubahnya), kotak AMD adalah instalasi baru namun tidak akan melakukan pekerjaannya.

Jika Anda memperhatikan masalah yang sama, tolong bantu saya.

Pembaruan (beberapa output server):

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


Apakah Anda memiliki kesalahan? Verifikasi bahwa "sertakan /etc/logrotate.d" tidak dikomentari.
Torian

1
Bagaimana Anda tahu itu tidak akan memutar log Anda? Kesalahan? Tidak terjadi setelah 30 hari? Apakah kotak-kotak ini selalu ada? Apakah logrotate dijadwalkan di cron?
EightBitTony

Saya dapat memverifikasi bahwa "sertakan /etc/logrotate.d" sudah ada di kedua sistem. Tidak ada kesalahan kecuali beberapa entri menarik di syslog, seperti ...rsyslogd was HUPed...tidak yakin tentang ini berarti apa-apa.
fabrik

@EightBitTony Ini adalah server sehingga mereka aktif dan berjalan terus menerus. Pengaturan lebih atau kurang adalah default (konfigurasi logrotate tidak dimodifikasi oleh saya), hanya hal-hal biasa yang diinstal. logrotate sudah termasuk dalam tetapi cron.dailyberputar tidak akan terjadi.
fabrik

@Fabrik silakan tambahkan keluaran logrotate -d /etc/logrotate.conf ke pertanyaan
EightBitTony

Jawaban:


8

Pastikan logrotate Anda dijalankan oleh cron.

Edit:

Dari diskusi komentar - tampaknya cron tidak berfungsi dengan benar. Saya memiliki cronjob di crontab saya tanpa pengguna tetapi ini hanya terungkap ketika saya me-restart daemon cron

Sistem ubuntu dan centos saya memiliki /etc/cron.daily/logrotatefile yang isinya

#!/bin/sh

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

/ Etc / crontab saya memiliki baris berikut untuk menjalankan pekerjaan sehari-hari

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

Ini benar-benar seperti konfigurasi saya kecuali milik saya tidak berfungsi :(
fabrik

Apakah cron running memeriksa output ps -ef | grep cron| grep -v grep? Tambahkan gema ke awal /etc/cron.daily/logrotate echo "logrotate runing" >>/tmp/logrotate.outdan lihat apakah ia dibuat.
user9517

Sepertinya ada yang salah dengan crontab saya. cronsudah berjalan dan berjalan tetapi tidak akan menjalankan pekerjaan logrotate harian. Jika saya menjalankan /etc/cron.daily/logrotatesecara manual itu memutar log saya, /tmp/logrotate.outjuga ditulis.
fabrik

Jangan lupa pekerjaan sehari-hari tidak akan berjalan lagi sampai besok!
user9517

tentu saja tetapi kemarin saya telah memodifikasi /etc/cron.daily/logrotatejadi saya telah menambahkan -fparameter untuk memaksa memutar namun hari ini log saya tidak diputar.
fabrik

10

Saya memiliki masalah serupa tetapi crontabbekerja dan untuk beberapa direktori log logrotateberhasil tetapi untuk beberapa tidak. Ketika saya mencoba menjalankan logrotate secara manual, saya mendapat beberapa pesan kesalahan.

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
...

Semua *.1.gzfile memiliki ukuran 0. Saya secara manual menghapus semua file yang disebutkan dalam pesan kesalahan, dijalankan sudo /usr/sbin/logrotate -f /etc/logrotate.conflagi dan berfungsi.

Saya hanya ingin berbagi solusi alternatif di sini juga, karena ini adalah hasil pencarian pertama yang muncul ketika saya mencari masalah tetapi solusi yang disarankan tidak bekerja untuk saya. Mungkin ini membantu orang lain yang berada dalam situasi yang sama dengan saya.


terima kasih, punya masalah ini juga. Menghapus semua file 1.gz dan akhirnya kembali berfungsi. sepotong kode yang mengerikan.
Florian Heigl

2

Saya tahu saya tahu. Utas berusia 5 tahun.

Hanya berpikir jika masih muncul cukup tinggi dalam pencarian, saya akan berkontribusi dan memberikan solusi saya untuk masalah yang saya temui. Pekerjaan logrotate saya tidak ditangani secara otomatis di salah satu server saya. Memaksa rotasi bekerja dengan baik. Saya datang dengan solusi setelah saya menjalankan perintah rotasi harian dengan tangan:

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

Lalu saya melihat kesalahan yang menghentikan pekerjaan logrorate dari menembak:

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

Ya, sesederhana itu. Saya punya dua file yang mendefinisikan log yang sama untuk diputar (iptraf dan iptraf-ng). Hanya menghapus salah satu definisi logrotate yang bertentangan untuk iptraf yang berhasil.

rm /etc/logrotate.d/iptraf

Masalah lain mungkin file / etc / crontab yang dirusak. Berarti periksa dua atau tiga sintaks pada file itu karena tidak memberikan output apa pun yang bisa saya temukan jika sintaks salah. Diam-diam keluar setelah validasi sintaksis gagal.

Semoga ini menghemat waktu seseorang.


1

OK saya punya masalah serupa.

"Log tidak diputar?" tetapi menjalankan logrotate secara manual (atau menjalankan /etc/cron.dailydan memutarnya dengan baik.

Jadi sepertinya cron "tidak berjalan" setiap hari. Aneh. Jadi saya melihat di file log tempat cron mengeluarkan datanya dan melihat "Otentikasi token tidak lagi valid; yang baru diperlukan" untuk memperbaiki masalah tertentu, lihat di sini


1

Saya telah melihat ini sering terjadi seiring berjalannya waktu layanan berubah, dan opsi yang digunakan dalam logrotate telah dihapus, menyebabkan logrotate gagal setiap hari.

Untuk memberi Anda ide, perbaikan terakhir melibatkan opsi notifyempty dalam file apache logrotate tidak lagi valid, yang pada gilirannya menyebabkan logrotate untuk berhenti bersama-sama.

Meskipun hal ini telah dibahas pada satu titik, saya ingin membagikan proses yang saya lalui saat melacak masalah ini:

  1. mulai dengan menjalankan #/usr/sbin/logrotate -f /etc/logrotate.confuntuk mencari kesalahan (misalnya postfix: 3 'missingok'.)
    File dan nomor baris yang dimaksud adalah file dalam folder logrotate.d.
  2. Edit file yang dimaksud # vi /etc/logrotate.d/postfix:, dan hapus opsi yang menyebabkan masalah, dan simpan file tersebut.
  3. Ulangi langkah pertama untuk melihat apakah rotasi berfungsi, atau jika ada masalah lain.

Ada saat-saat ketika langkah pertama hanya menghasilkan apa-apa, tetapi Anda tahu ada masalah. Karena semua ini dimulai karena file log untuk layanan tidak diputar, Anda dapat menonton proses logrotate mencari layanan spesifik untuk melihat apa yang menghentikannya dari memutar. Untuk melakukan ini, tambahkan tag verbose ke perintah logrotate Anda, dan perhatikan untuk melihat apa yang terjadi di folder itu (jika ada).


1

Periksa parameter konfigurasi logrotasi yang saling bertentangan !!

Saya berjuang dengan masalah ini dan saya akhirnya membaca beberapa dokumentasi tentang logrotate dengan sangat cermat, saya menemukan beberapa dokumentasi yang berguna di sini .

Saya telah menentukan parameter Ukuran dan parameter Interval Rotasi , padahal sebenarnya saya tidak menginginkan keduanya. Saya ingin rotasi saya terjadi tepat ketika mereka dijadwalkan dalam cron.

  1. Parameter ukuran akan mengesampingkan interval rotasi. Jadi, log saya harus melebihi parameter ini sebelum bisa diputar. (Saya bisa melihat bagaimana ini akan berguna ketika Anda paling khawatir tentang penggunaan disk. Tapi bukan itu yang ingin saya gunakan.)
  2. Rotasi Interval akan memeriksa kapan rotasi terakhir terjadi dan memastikan rotasi berikutnya tertunda oleh jumlah yang ditentukan. Tapi, saya tidak jelas tentang bagaimana Anda mengontrol kapan waktu itu terjadi, itu didasarkan pada terakhir kali rotate terjadi.

Jadi, singkirkan parameter Rotation Interval dan Size . Maka Anda akan mendapatkan rotasi setiap kali logrotate dipanggil tanpa harus memaksanya.

EDIT : OK, bahkan ini tidak sepenuhnya berfungsi! Jika file log berada di bawah ambang batas tertentu, log tidak akan diputar. Jadi ketika saya menjalankan pekerjaan cron yang diputar setiap 2 menit, itu tidak memutar log.

Anda dapat melihat informasi debug terperinci jika Anda menjalankan logrotate -d. Ini memberikan beberapa informasi debug yang sangat berguna.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.