Mongo docs mengatakan bahwa saya dapat:
- gunakan sinyal -SIGUSR1 dan dapatkan log lama diganti namanya dan saat ini diaktifkan
- gunakan logrotate dari OS
Saya ingin kemampuan logrotate OS untuk zip file lama dan menghapus tertua, tetapi tidak melihat cara untuk memberitahu proses mongod untuk beralih log saat ini selain mengirim SIGUSR1.
Jadi saya menulis
/var/log/mongodb/*.log {
daily
rotate 5
compress
dateext
missingok
notifempty
sharedscripts
postrotate
/usr/bin/killall -SIGUSR1 mongod
/usr/bin/killall -SIGUSR1 mongos
endscript
}
ke /etc/logrotate.d/mongo.
Dan sekarang dapatkan logfiles dengan nama baik dari logrotate dan kosongkan logfile seperti mongodb.log.2013-09-18T23-49-44
jejak switching SIGUSR1. Bagaimana cara menyingkirkan yang terakhir?
Server macet untuk saya jika Anda mengirim SIGUSR1 ke mongod setelah Anda memindahkan logfile dengan logrotate.
Konfigurasi berikut aman untuk versi yang telah saya uji - 2.6.6 di ubuntu 12.04 - contoh sebelumnya membuat server crash. Masukkan ini ke /etc/logrotate.d/mongod:
Lihat: https://jira.mongodb.org/browse/SERVER-11087 untuk rincian lebih lanjut dan saran dari Akshay Kumar yang saya gunakan di atas (gunakan create bukan nocreate dan cp / dev / null ke logfile).
Dalam rilis selanjutnya seharusnya ada opsi logRotate yang dapat Anda gunakan untuk membuka kembali file - bukan mengganti nama - yang akan mengatasi masalah ganti nama - tetapi tidak berfungsi dalam versi saya (tidak didukung).
Lihat: https://github.com/mongodb/mongo/commit/616461d294bd9f5054ca38b302b6fc5d70fde20c
Saya sudah menguji ini dengan
sumber
systemLog.logRotate: reopen
dalammongod.conf
, maka pkill akan berfungsi sebagaimana dimaksud dan tidak ada penghapusan file log yang diubah namanya karena tidak ada yang dibuat.Karena mongodb 3.0 Anda dapat mengubah perilaku mongodb dengan parameter logRotate, ubah /etc/mongod.conf
Lihat juga Manual Mongo .
Kemudian Anda dapat menggunakan konfigurasi logrotate ini:
sumber
processManagement.pidFilePath
di config atau pengaturan PIDFile file unit SystemD (/var/run/mongodb/mongod.pid
untuk saya)Berikut ini bekerja untuk saya:
Catatan:
kill
adalah Bash builtin tetapi logrotate berjalan di bawah/bin/sh
- yang tidak dikenaliSIGUSR1
pada RedHat 6.5compress
tetapi harus menjadi tambahan yang lurussumber
Perhatikan bahwa dalam versi 3.0 dan lebih tinggi tidak diperlukan untuk mematikan daemon database Anda hanya untuk memutar log. Lihat dokumentasi di sini:
https://docs.mongodb.com/manual/tutorial/rotate-log-files/
sumber