تدويرُ السجلّات ليس إعدادًا يشمل الخادم. فكلُّ خدمةٍ تأتي بقاعدتها، وكلُّ ما نُصِّب باليد — أو ضُبط ليكتب في مكانٍ غير معتاد — بلا تدويرٍ البتّة، فينمو حتى يمتلئ القرص.
اعثر على الذي ينمو
du -h /var/log --max-depth=2 | sort -h | tail -15
ls -lhS /var/log/*.log | head
دوّره
# /etc/logrotate.d/mysite
/var/www/site/storage/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
}
أربعةَ عشرَ يومًا مضغوطةً افتراضٌ جيّد: يكفي للتحقيق في الأسبوع الماضي، وصغيرٌ بما يُنسى معه.
logrotate -d /etc/logrotate.d/mysite # dry run, prints what it would do
سجلٌّ يمتلئ في ساعات
تلك ليست مشكلةَ تدوير. فتحذيرٌ واحد يتكرّر مع كل طلبٍ يكتب جيجابايتاتٍ في يوم، وتدويرُه إنما يحذف الدليل أسرع.
sort /var/log/nginx/error.log | uniq -c | sort -rn | head -5
والسطرُ الأعلى هو المشكلةُ كلُّها في الغالب: ملفٌّ واحد مفقود يُطلَب مليون مرّة، أو تنبيهُ PHP واحد في كل صفحة.
وتحريرُ المساحة بحذف سجلٍّ تكتب فيه خدمةٌ لا يُرجِع المساحة — فالعمليّة تحتفظ بالمقبض. اقتطعه:
: > /var/log/big.logودوّر بالحجم كما تدوّر باليوم لكلّ ما قد يقفز: فـ
size 100M إلى جانب daily يمسك الجامحَ قبل أن يمسكه القرص.