مراقبة السجلات (Logs) وتحليل الأخطاء (journalctl, /var/log)
مراقبة السجلات (Logs) وتحليل الأخطاء (journalctl, /var/log)
تُعد السجلات في لينكس خط الدفاع الأول عند تشخيص الأعطال، تتبّع السلوك غير الطبيعي، وفهم ما يحدث داخل النظام لحظة بلحظة. سواء كنت تدير خادماً إنتاجياً أو بيئة تطوير محلية، فإن قراءة السجلات بشكل صحيح تختصر ساعات طويلة من التخمين. عملياً، معظم المشكلات الجدية لا تبدأ من الشاشة، بل تترك بصمتها داخل journalctl أو تحت المسار /var/log.
لفهم هذه الطبقة بعمق، من المفيد أن تكون قد اطّلعت مسبقاً على إدارة الخدمات باستخدام (systemd) و (systemctl)، لأن كثيراً من الرسائل ترتبط مباشرة بالخدمات والوحدات. كما أن معرفة هيكلية ملفات لينكس (Filesystem Hierarchy Standard – FHS) تساعدك على فهم سبب تخزين السجلات في مواقع محددة.
ما الفرق بين journalctl و /var/log؟
في الأنظمة الحديثة المعتمدة على systemd، يقوم journald بتجميع سجلات النظام والخدمات والنواة ضمن سجل موحد قابل للفلترة الزمنية والهيكلية. هذا الأسلوب يمنحك ميزة هائلة في البحث حسب الخدمة، الإقلاع، الأولوية، أو معرف العملية.
أما /var/log فهو الموقع التقليدي لملفات السجلات النصية مثل auth.log و syslog و kern.log. بعض التوزيعات تعتمد أكثر على journal، بينما تستمر أخرى في كتابة نسخ إلى ملفات نصية عبر rsyslog أو خدمات مشابهة.
لا تتعامل مع السجل باعتباره أرشيف رسائل فقط؛ بل اعتبره خطاً زمنياً للأحداث. التوقيت، الخدمة المتأثرة، ومستوى الخطأ أهم من نص الرسالة وحده.
قراءة السجلات عبر journalctl باحتراف
عرض السجل الكامل والتنقل داخله
أبسط نقطة بداية هي عرض سجل النظام كاملاً. غالباً ستحتاج إلى امتيازات إدارية حسب التوزيعة وسياسات الصلاحيات، لذلك راجع أيضاً إدارة الصلاحيات والملكية (Chmod, Chown, Sudo).
sudo journalctl
لأن الناتج قد يكون ضخماً، يُفضَّل تصفية النتائج منذ البداية بدلاً من التمرير العشوائي. ويمكنك الاستفادة من مهارات الأنابيب وإعادة التوجيه (Pipes and Redirections: |, >, >>) لتمرير النتائج إلى أدوات أخرى عند الحاجة.
متابعة السجلات لحظياً
عند اختبار خدمة أو مراقبة مشكلة متكررة، استخدم الوضع التدفقي لمشاهدة الرسائل فور صدورها:
sudo journalctl -f
هذا النمط مفيد جداً أثناء تشغيل خدمة يدوياً، أو إعادة تشغيلها عبر systemctl restart ثم مراقبة أثر ذلك في الزمن الحقيقي.
فلترة السجلات حسب الخدمة
من أكثر الاستخدامات العملية تصفية السجل حسب اسم الوحدة. فإذا كنت تحقق في أخطاء خادم ويب أو خدمة قاعدة بيانات، استهدف الوحدة مباشرة:
sudo journalctl -u nginx.service
sudo journalctl -u ssh.service
sudo journalctl -u docker.service -f
هذا الأسلوب يتفوق على قراءة السجل الكامل لأنه يزيل الضجيج الناتج عن بقية الخدمات ويُظهر فقط الرسائل المرتبطة بالوحدة المعنية.
فلترة السجلات زمنياً وبحسب الإقلاع
أحياناً تكون المشكلة مرتبطة بإعادة تشغيل سابقة أو بفترة محددة. هنا تبرز قوة journal في التعامل الزمني:
sudo journalctl --since "2025-01-20 10:00:00" --until "2025-01-20 11:00:00"
sudo journalctl -b
sudo journalctl -b -1
sudo journalctl -b -2
الخيار -b يعرض رسائل الإقلاع الحالي، بينما -1 و -2 يعودان إلى الإقلاعات السابقة، وهي ميزة ممتازة عند تشخيص الأعطال التي ظهرت بعد إعادة تشغيل مفاجئة.
التركيز على الأخطاء والتحذيرات
ليست كل الرسائل متساوية الأهمية. لذلك من الذكاء تصفية السجل حسب مستوى الخطورة:
sudo journalctl -p err
sudo journalctl -p warning
sudo journalctl -p crit..alert
إذا كنت تتابع انهيار خدمة، فابدأ غالباً بـ err و warning قبل الخوض في السجل الكامل.
استكشاف ملفات /var/log بذكاء
رغم قوة journalctl، ما تزال ملفات /var/log أساسية، خصوصاً في البيئات التي تعتمد أدوات تحليل نصية أو حلول مراقبة خارجية. أهم الملفات تختلف حسب التوزيعة، لكن الشائع يشمل:
/var/log/syslog: رسائل النظام العامة./var/log/auth.log: محاولات الدخول وعمليات المصادقة./var/log/kern.log: رسائل النواة والتعريفات./var/log/dpkg.logأو سجلات مدير الحزم: تغييرات التثبيت والتحديث.
ولعرضها بكفاءة، يمكنك توظيف ما تعلّمته في أدوات عرض ومعالجة النصوص (cat, nano, vim, less, tail):
sudo tail -f /var/log/syslog
sudo less /var/log/auth.log
sudo tail -n 100 /var/log/kern.log
كما أن دمجها مع البحث المتقدم في النظام باستخدام (find, locate, grep) يسهّل التقاط الأنماط الحرجة:
sudo grep -i "failed" /var/log/auth.log
sudo grep -Ei "error|warn|critical" /var/log/syslog
سيناريوهات عملية لتحليل الأخطاء
1) فشل خدمة بعد التحديث
إذا توقفت خدمة بعد ترقية حزمة، ابدأ بقراءة سجل الوحدة ثم اربط ذلك بسجل مدير الحزم. هذا الربط يكشف بسرعة إن كان التحديث غيّر ملف إعداد، اعتماداً برمجياً، أو صيغة تشغيل.
sudo journalctl -u nginx.service --since "1 hour ago"
sudo grep nginx /var/log/dpkg.log
في مثل هذه الحالات، يفيد الرجوع إلى إدارة الحزم البرمجية وتحديث النظام (APT, YUM/DNF, Pacman) لفهم أثر الترقية على الخدمة.
2) بطء أو استهلاك مرتفع للموارد
بعض مشكلات الأداء تترك آثاراً في السجل قبل أن تظهر في أدوات المراقبة. قد تجد رسائل عن نفاد الذاكرة، إعادة تشغيل خدمة، أو تعليق في I/O. وبعد قراءة السجل، اربط النتائج مع فهم العمليات (Processes) ومراقبة استهلاك الموارد (top, htop, ps, kill) لتحديد العملية الفعلية المسببة.
sudo journalctl -p warning --since "30 minutes ago"
sudo journalctl | grep -i oom
3) محاولات دخول مشبوهة
السجل الأمني من أهم مصادر اكتشاف السلوك العدائي. ابحث عن المحاولات الفاشلة، المستخدمين غير المعروفين، أو الاتصالات من عناوين IP متكررة.
sudo grep "Failed password" /var/log/auth.log
sudo journalctl -u ssh.service --since "today"
ثم اربط النتائج مع أساسيات شبكات لينكس: العناوين، المنافذ، والبروتوكولات (IP, SSH, DNS) و جدار الحماية (Firewall) وتأمين النظام (UFW, Firewalld, Iptables) لاتخاذ إجراءات وقائية مناسبة.
الرسائل المتكررة ليست دائماً دليلاً على الخطر، لكنها قد تكون مؤشراً مبكراً على خلل تصميمي أو سوء تهيئة سيتحول لاحقاً إلى انقطاع فعلي للخدمة.
أفضل الممارسات في إدارة السجلات
- ابدأ دائماً بتحديد الزمن التقريبي للمشكلة قبل البحث.
- فلتر حسب الخدمة أو الأولوية لتقليل الضوضاء.
- لا تعتمد على رسالة منفردة؛ اقرأ السياق الذي قبلها وبعدها.
- راقب تدوير السجلات
log rotationحتى لا تمتلئ المساحة التخزينية. - وثّق الرسائل الحرجة المتكررة وأنشئ لها آلية تنبيه لاحقاً.
ومن الناحية التشغيلية، إذا كنت تتعامل مع خادم بعيد، فغالباً ستنفذ هذه الفحوصات عبر النقل الآمن للملفات وإدارة الاتصال عن بُعد (SSH, SCP, SFTP)، لذلك من المهم أن تكون جلساتك موثقة وآمنة.
خلاصة
إتقان تحليل السجلات في لينكس ليس مهارة ثانوية، بل هو جوهر العمل الاحترافي في الإدارة والدعم الفني والاستجابة للحوادث. استخدم journalctl عندما تحتاج إلى تصفية دقيقة ووعي زمني غني، واعتمد على /var/log عندما تريد فحص الملفات النصية مباشرة أو دمجها مع أدوات التحليل النصي. الجمع بين الطريقتين يمنحك رؤية تشخيصية أوسع، ويحوّل السجل من نص مبهم إلى دليل عملي لاتخاذ القرار الصحيح بسرعة.
38 comments