Perputaran log bukanlah setelan yang berlaku bagi seluruh server. Tiap layanan datang membawa aturannya sendiri, sehingga apa pun yang dipasang dengan tangan — atau diatur untuk menulis ke tempat yang tak lazim — sama sekali tak punya perputaran dan terus membesar sampai cakramnya penuh.
Temukan yang sedang membesar
du -h /var/log --max-depth=2 | sort -h | tail -15
ls -lhS /var/log/*.log | head
Putarlah ia
# /etc/logrotate.d/mysite
/var/www/site/storage/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
}
Empat belas hari dalam bentuk terkompres adalah bawaan yang baik: cukup untuk menyelidiki pekan lalu, cukup kecil untuk dilupakan.
logrotate -d /etc/logrotate.d/mysite # dry run, prints what it would do
Log yang penuh dalam hitungan jam
Itu bukan masalah perputaran. Satu peringatan yang berulang pada tiap permintaan menulis bergiga-giga dalam sehari, dan memutarnya hanya menghapus buktinya lebih cepat.
sort /var/log/nginx/error.log | uniq -c | sort -rn | head -5
Baris paling atas hampir selalu merupakan seluruh persoalannya: satu berkas yang hilang tetapi diminta sejuta kali, atau satu peringatan PHP di setiap halaman.
Melapangkan ruang dengan menghapus log yang sedang ditulisi sebuah layanan tak mengembalikan ruangnya — prosesnya masih memegang gagangnya. Pangkaslah:
: > /var/log/big.logPutarlah menurut ukuran, bukan hanya menurut hari, untuk apa pun yang bisa melonjak:
size 100M berdampingan dengan daily menangkap yang kebablasan sebelum cakramnya sempat menangkapnya.