تدويرُ السجلّات ليس إعدادًا يشمل الخادم. فكلُّ خدمةٍ تأتي بقاعدتها، وكلُّ ما نُصِّب باليد — أو ضُبط ليكتب في مكانٍ غير معتاد — بلا تدويرٍ البتّة، فينمو حتى يمتلئ القرص.

اعثر على الذي ينمو

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 يمسك الجامحَ قبل أن يمسكه القرص.