السجلات وجورنالد
السجلات وجورنالد
حين يتصرف نظام إنتاجي بشكل غير متوقع — يتعطل سرفس، تنتهي مهلة طلب، أو ينتهي نشر بصمت تام — يكون السؤال الأول دائمًا: ماذا يقول السجل؟ السجلات هي السطح التشخيصي الأول في كل نظام لينوكس، وإتقانها أمر لا مفر منه في عمل DevOps. يغطي هذا الدرس منظومتي التسجيل التكامليتين اللتين ستصادفهما على كل مضيف لينوكس حديث: journald الخاص بـ systemd، وحزمة syslog التقليدية، إضافةً إلى مواقع ملفات السجل الأساسية التي يجب أن تحفظها عن ظهر قلب.
كيف يعمل التسجيل في لينوكس: طبقتان
على نظام حديث يعمل بـ systemd، تتدفق السجلات عبر قناتين متوازيتين:
- journald (
/usr/lib/systemd/systemd-journald) — عفريت دفتر يومية systemd. يلتقط كل ما يمر عبر حلقة مخزن النواة (dmesg)، ومدخلات السجل المنظم من وحدات systemd، وأي مخرجات تُكتب فيstdout/stderrمن الخدمات المُدارة. يخزن السجلات بصيغة ثنائية مفهرسة في/run/log/journal/(متطايرة) أو/var/log/journal/(دائمة). - rsyslog / syslog-ng — عفريت syslog نصي تقليدي يعمل بالتوازي على معظم التوزيعات. يستطيع journald إعادة توجيه الرسائل إليه عبر مقبس، مما ينتج الملفات النصية المألوفة تحت
/var/log/.
Storage=persistent في /etc/systemd/journald.conf.
تفعيل تخزين دفتر اليومية الدائم
أول ما تتحقق منه على أي خادم جديد هو ما إذا كان دفتر اليومية يبقى بعد إعادة التشغيل. يمكنك التحقق بالبحث عن /var/log/journal/:
journalctl: الأداة المثلى لكل استعلام عن السجلات
journalctl هو واجهة سطر الأوامر لـ journald. في بيئات الشركات الكبرى ستستخدمه مئات المرات أسبوعيًا — تعلم مرشحاته بعمق.
-o json. يخزن journald بيانات وصفية غنية (PID، UID، اسم الأمر، معرف التشغيل، الطابع الزمني الأحادي) في كل مدخلة — حقول يفقدها نص syslog العادي. تمتلك أدوات مثل Filebeat وFluentd مكونات إدخال journald أصيلة تستغل هذه البيانات المنظمة.
مخطط تدفق السجلات
Syslog التقليدي: مواقع ملفات السجل الأساسية
حتى في عالم تهيمن عليه journald، تظل ملفات السجل النصية أساسية — يمكن قراءتها دون أدوات، وتخضع للـ grep بسهولة، وتستهلكها عشرات العوامل القديمة. احفظ هذه المسارات على كل توزيعة:
| الملف / المسار | ما يحتويه |
|---|---|
/var/log/syslog (Debian/Ubuntu) |
رسائل النظام العامة؛ السجل الشامل |
/var/log/messages (RHEL/CentOS) |
مكافئ syslog في عائلة Debian |
/var/log/auth.log (Debian/Ubuntu) |
أحداث المصادقة: تسجيل دخول SSH، sudo، PAM |
/var/log/secure (RHEL/CentOS) |
مكافئ auth.log في عائلة Debian |
/var/log/kern.log |
رسائل النواة (OOM killer، أخطاء أجهزة، مشغّل الشبكة) |
/var/log/dmesg |
لقطة حلقة مخزن النواة عند الإقلاع |
/var/log/dpkg.log / yum.log |
سجل تثبيت/إزالة الحزم |
/var/log/nginx/، /var/log/apache2/ |
سجلات وصول وأخطاء خادم الويب (خاصة بالتطبيق) |
/var/log/audit/audit.log |
أحداث إطار التدقيق في لينوكس (SELinux، تدقيق استدعاءات النظام) |
قراءة السجلات بفاعلية: أنماط وتقنيات
قد يصل حجم السجلات الخام على خادم مشغول إلى ملايين الأسطر يوميًا. قراءة السجلات بفاعلية تعني تضييق نطاق البحث بسرعة:
تدوير السجلات مع logrotate
تنمو ملفات السجل النصية بلا حدود من دون تدوير. logrotate هو العفريت المعياري الذي يضغط ويعيد تسمية ويحذف السجلات القديمة وفق جدول زمني. يُضبط في /etc/logrotate.conf وفي ملفات مخصصة لكل خدمة داخل /etc/logrotate.d/. إليك إعدادًا نموذجيًا لسجل تطبيق:
RateLimitIntervalSec=30s، RateLimitBurst=10000) ويحدد حجم دفتر اليومية بـ 10% من نظام الملفات. احرص دائمًا على ضبط حدود صريحة في /etc/systemd/journald.conf: استخدم SystemMaxUse=2G وSystemKeepFree=500M حتى لا يحرم دفتر اليومية تطبيقك من مساحة القرص. نفِّذ journalctl --disk-usage دوريًا ضمن دفاتر المراقبة.
التوجيه إلى منصة تجميع مركزية للسجلات
سجلات الخادم الفردية مفيدة للفرز السريع، لكن على النطاق الواسع — عشرات المضيفين والميكروسرفيسز وحاويات Kubernetes — لا بد من نقل السجلات إلى منصة مركزية. المنظومة الإنتاجية المعيارية هي:
- Filebeat أو Fluentd/Fluent Bit — عوامل خفيفة الوزن تتابع الملفات أو تقرأ دفتر اليومية مباشرةً (مكوّن إدخال
journald) وتُعيد التوجيه إلى خادم خلفي. - Elasticsearch + Kibana (ELK/EFK) — منظومة البحث النصي الكامل والتصور الكلاسيكية. مُكلفة التشغيل على النطاق الواسع.
- Grafana Loki — مخزن السجلات السحابي الأصيل القائم على التسميات. أقل تكلفةً بكثير من Elasticsearch لأنه يُفهرس بيانات وصفية التسميات فقط لا النص الكامل. متكامل مع Prometheus وGrafana — الخيار المفضل للنشر الجديد على الأرض البكر.
لأغراض هذا المسار التعليمي، تتمحور المهارة الأساسية حول معرفة ما تبحث عنه وأين تجده على المضيف نفسه. خطوط أنابيب التجميع مغطاة في مسار الرصد والمراقبة لاحقًا في الدورة.
journalctl -u <service> -n 50 لمخرجات الخدمة الخاصة؛ (2) journalctl -k -b للمشكلات على مستوى النواة (OOM، الأجهزة)؛ (3) /var/log/auth.log أو /var/log/secure إن تضمّن العطل صلاحيات أو PAM أو SSH. معظم أعطال الإنتاج تترك أثرًا في واحد من هذه النطاقات الثلاثة على الأقل.