إدارة السجلات: منع امتلاء القرص بـ logrotate
مواقع السجلات المهمة وتهيئة logrotate وحدود حجم journald وإيجاد ملفات السجلات الكبيرة وأساسيات تحليل السجلات. دليل منع امتلاء القرص على خوادم Linux.
جدول المحتويات
إدارة السجلات: منع امتلاء القرص بـ logrotate
ملفات السجلات لا غنى عنها لتشخيص مشكلات النظام ومراقبة أحداث الأمان. لكن إذا تُركت دون إدارة، يمكنها ملء مساحة القرص والتسبب في أعطال النظام. يغطي هذا الدليل مواقع السجلات المهمة وتهيئة logrotate وإدارة حجم journald وكيفية إيجاد ملفات السجلات الكبيرة.
مواقع السجلات المهمة
ملفات سجلات النظام
# مجلد سجلات النظام الرئيسي
ls -lh /var/log/
# ملفات السجلات المهمة:
# /var/log/syslog — رسائل النظام العامة (Debian/Ubuntu)
# /var/log/messages — رسائل النظام العامة (RHEL/CentOS)
# /var/log/auth.log — سجلات المصادقة (Debian/Ubuntu)
# /var/log/secure — سجلات المصادقة (RHEL/CentOS)
# /var/log/kern.log — رسائل النواة
# /var/log/cron — سجلات مهام cron
# /var/log/mail.log — سجلات خادم البريد
ملفات سجلات التطبيقات
# سجلات خادم الويب
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/apache2/access.log
/var/log/apache2/error.log
# سجلات قواعد البيانات
/var/log/mysql/error.log
/var/log/postgresql/
مراقبة ملفات السجلات
# مراقبة السجلات في الوقت الفعلي
tail -f /var/log/syslog
tail -f /var/log/nginx/access.log
# آخر 100 سطر
tail -n 100 /var/log/auth.log
# البحث عن كلمة مفتاحية
grep "ERROR" /var/log/nginx/error.log
grep "Failed password" /var/log/auth.log
# البحث في ملفات متعددة
grep -r "error" /var/log/nginx/
تحليل مساحة القرص
إيجاد ملفات السجلات الكبيرة
# إيجاد أكبر الملفات في /var/log
du -sh /var/log/* | sort -rh | head -20
# إيجاد الملفات الكبيرة في النظام (100 ميجابايت+)
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
# الملفات أكبر من 50 ميجابايت في /var/log
find /var/log -type f -size +50M -exec ls -lh {} \;
# التحقق من استخدام القرص
df -h
# عرض أحجام المجلدات
du -sh /var/log/
du -sh /var/log/* | sort -rh
تهيئة logrotate
logrotate أداة تقوم تلقائياً بتدوير ملفات السجلات وضغطها وحذفها.
كيف يعمل logrotate
# يعمل logrotate يومياً عادةً عبر cron
cat /etc/cron.daily/logrotate
# التشغيل اليدوي
sudo logrotate /etc/logrotate.conf
# وضع المحاكاة (بدون عمليات فعلية)
sudo logrotate --debug /etc/logrotate.conf
# إجبار التدوير
sudo logrotate --force /etc/logrotate.d/nginx
تهيئة logrotate الرئيسية
# ملف التهيئة الرئيسي
sudo nano /etc/logrotate.conf
# الإعدادات الافتراضية
weekly # التدوير أسبوعياً
rotate 4 # الاحتفاظ بـ 4 إصدارات قديمة
create # إنشاء ملف جديد بعد التدوير
compress # ضغط السجلات القديمة
delaycompress # عدم ضغط آخر سجل مُدار
include /etc/logrotate.d # تضمين إعدادات التطبيقات
تهيئة logrotate خاصة بالتطبيق
# تهيئة logrotate لـ Nginx
sudo nano /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily # التدوير يومياً
missingok # لا خطأ إذا كان الملف مفقوداً
rotate 14 # الاحتفاظ بسجلات 14 يوماً
compress # ضغط
delaycompress # عدم ضغط الأحدث
notifempty # عدم تدوير الملفات الفارغة
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
logrotate لتطبيق مخصص
sudo nano /etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
dateext
dateformat -%Y%m%d
postrotate
systemctl reload myapp 2>/dev/null || true
endscript
}
إدارة حجم journald
# التحقق من حجم السجل الحالي
journalctl --disk-usage
# تنظيف السجلات القديمة (أقدم من أسبوعين)
sudo journalctl --vacuum-time=2weeks
# التنظيف بحد الحجم
sudo journalctl --vacuum-size=500M
# الاحتفاظ بعدد محدد من الملفات
sudo journalctl --vacuum-files=5
تهيئة journald الدائمة
# تعديل ملف تهيئة journald
sudo nano /etc/systemd/journald.conf
[Journal]
# الحد الأقصى لاستخدام القرص
SystemMaxUse=500M
# الحد الأدنى للمساحة الحرة
SystemKeepFree=1G
# الحد الأقصى لحجم الملف
SystemMaxFileSize=50M
# فترة الاحتفاظ بالسجلات
MaxRetentionSec=2weeks
# الضغط
Compress=yes
# التخزين الدائم
Storage=persistent
# تطبيق التهيئة
sudo systemctl restart systemd-journald
أساسيات تحليل السجلات
# تحليل سجلات أخطاء Nginx
grep -c "error" /var/log/nginx/error.log
grep "error" /var/log/nginx/error.log | tail -20
# اكتشاف محاولات القوة الغاشمة على SSH
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -10
# إيجاد أكثر عناوين IP طلباً
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# عدّ رموز حالة HTTP
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# تصفية الأخطاء من journald
journalctl -p err --since "1 hour ago"
حالة طارئة: القرص ممتلئ
# الاستجابة السريعة عند امتلاء القرص
# 1. التحقق من حالة القرص
df -h
# 2. إيجاد أكبر الملفات
du -sh /var/log/* | sort -rh | head -10
# 3. تنظيف سجلات journal القديمة
sudo journalctl --vacuum-time=3days
# 4. ضغط السجلات القديمة غير المضغوطة
find /var/log -name "*.log.*" ! -name "*.gz" -exec gzip {} \;
# 5. إجبار logrotate
sudo logrotate --force /etc/logrotate.conf
# 6. تنظيف ذاكرة التخزين المؤقت للحزم
sudo apt clean # Ubuntu/Debian
sudo dnf clean all # RHEL/CentOS
أتمتة إدارة السجلات: راجع تهيئة logrotate بانتظام وحدد حدود حجم journald وأنشئ تنبيهات لمراقبة استخدام القرص.
الخلاصة
إدارة السجلات الفعّالة تمنع مشكلات امتلاء القرص وتحسن موثوقية النظام. مع التدوير التلقائي بـ logrotate وحدود حجم journald وتحليل السجلات المنتظم، يمكنك الحفاظ على خوادم REXE في حالة جيدة.
مقالات ذات صلة
الاتصال بخادم VDS عبر SSH: PuTTY والطرفية والمفاتيح
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
الاتصال بـ Windows VDS عبر RDP: دليل شامل للمبتدئين
دليل خطوة بخطوة للاتصال بـ Windows Server VDS عبر RDP: الإعداد الكامل، تفعيل NLA للأمان، إنشاء قاعدة تصفية Path Panel واستكشاف الأخطاء وإصلاحها.
تغيير نظام تشغيل خادم VDS: دليل إعادة التثبيت خطوة بخطوة
تغيير نظام تشغيل خادم VDS عبر لوحة REXE: نصائح النسخ الاحتياطي قبل التثبيت، توزيعات Linux المدعومة وإصدارات Windows Server المتاحة للتثبيت الآن.