
مقدمة
غالبًا ما يحتاج مدراء النظام الذين يعملون مع أوبونتو ودبيان إلى الاستشارة ملفات السجل لاستكشاف المشاكل. هذه خطوة أساسية في تشخيص المشاكل وحلها على هذه أنظمة التشغيل.
تولد أنظمة لينكس ، بما في ذلك أوبونتو ودبيان ، مجموعة متنوعة من الرسائل التي يتم تسجيلها في ملفات السجل. هذه رسائل السجل حاسمة لفهم سلوك النظام وتحديد المشاكل. يعتمد لينكس على مزيج من ملفات التكوين والدلائل والبرامج والأوامر والخوادم لإدارة هذه رسائل السجل وتنظيمها. إن الإلمام بمواقع ملفات السجل والأوامر ذات الصلة يمكن أن يسرع بشكل كبير من عملية استكشاف الأخطاء وإصلاحها.
في هذا الدليل ، سنستكشف الجوانب الرئيسية لنظام تسجيل لينكس في سياق أوبونتو ودبيان.
الخطوة 1 – تحديد مواقع ملفات السجل الافتراضية
بشكل افتراضي ، يتم تخزين ملفات السجل على أوبونتو ودبيان في دليل /var/log. يمكنك عرض قائمة ملفات السجل في هذا الدليل باستخدام الأمر التالي:
$ ls -l /var/logعند تنفيذه على النظام الخاص بك ، ستكون النتيجة مشابهة لما يلي:
total 49316
drwxr-xr-x. 2 root root 6 Sep 27 19:17 anaconda
drwx------. 2 root root 99 Jan 3 08:23 audit
-rw-rw----. 1 root utmp 1234560 Jan 3 16:16 btmp
-rw-rw----. 1 root utmp 17305344 Jan 1 00:00 btmp-20230101
drwxr-x---. 2 chrony chrony 6 Aug 10 2021 chrony
-rw-r--r--. 1 root root 130466 Dec 8 22:12 cloud-init.log
-rw-r-----. 1 root adm 10306 Dec 8 22:12 cloud-init-output.log
-rw-------. 1 root root 36979 Jan 3 16:03 cron
-rw-------. 1 root root 27360 Dec 10 23:15 cron-20221211
-rw-------. 1 root root 94140 Dec 17 23:07 cron-20221218
-rw-------. 1 root root 95126 Dec 24 23:14 cron-20221225
-rw-------. 1 root root 95309 Dec 31 23:04 cron-20230101
... الخطوة 2 – عرض محتويات ملف السجل
تحت /var/log ، ستجد ملفات سجل مختلفة لأغراض محددة. بعض الأمثلة الشائعة تشمل:
wtmputmpdmesgmessagesmaillogأوmail.logspoolerauth.logأوsecure
تتتبع ملفات wtmp و utmp تسجيل دخول المستخدمين وخروجهم. لرؤية المستخدمين المسجلين حاليًا على خادم لينكس ، استخدم الأمر who. على أوبونتو ، يمكن أن يبدو الإخراج كالتالي:
root@ubuntu-22:~# who
root pts/0 2023-01-03 16:23 (198.7.211.4)لاسترداد سجلات الدخول ، الأمر last مفيد:
root@ubuntu-22:~# last
root pts/0 198.7.211.4 Tue Jan 3 16:23 still logged in
reboot system boot 5.19.0-23-generi Thu Dec 8 21:48 still running
wtmp begins Thu Dec 8 21:48:51 2022لتحديد وقت إعادة التشغيل الأخير ، استخدم:
$ last rebootفي دبيان ، قد يظهر الإخراج على النحو التالي:
root@debian-11-trim:~# last reboot
reboot system boot 5.10.0-11-amd64 Thu Dec 8 21:49 still running
wtmp begins Thu Dec 8 21:49:39 2022يمكن للأمر lastlog أن يكشف عن أوقات آخر تسجيل دخول للمستخدمين:
$ lastlogقد يشبه الإخراج على نظام دبيان ما يلي:
root@debian-11-trim:~# lastlog
Username Port From Latest
root pts/0 162.243.188.66 Tue Jan 3 16:23:03 +0000 2023
daemon **Never logged in**
bin **Never logged in**
sys **Never logged in**
sync **Never logged in**
games **Never logged in**
man **Never logged in**
lp **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
proxy **Never logged in**
www-data **Never logged in**
backup **Never logged in**
list **Never logged in**
irc **Never logged in**
gnats **Never logged in**
nobody **Never logged in**
_apt **Never logged in**
messagebus **Never logged in**
uuidd **Never logged in**
...للوصول إلى محتويات ملفات السجل النصية ، يمكن استخدام أوامر مثل cat أو head أو tail. على سبيل المثال ، لعرض آخر عشرة أسطر من ملف /var/log/messages على خادم دبيان:
$ sudo tail /var/log/messagesالمخرج المتوقع:
root@debian-11-trim:~# tail /var/log/messages
Jan 1 00:10:14 debian-11-trim rsyslogd: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="30025" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 ssh_watcher.go:65: [SSH Watcher] Port knocking detected.
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:43: [DO-Managed Keys Actioner] Metadata contains 1 ssh keys and 1 dotty keys
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:49: [DO-Managed Keys Actioner] Attempting to update 1 dotty keys
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:65: [DO-Managed Keys Actioner] Attempting to create 1 ssh keys
Jan 3 16:23:01 debian-11-trim DropletAgent[808]: INFO:2023/01/03 16:23:01 do_managed_keys_actioner.go:105: [DO-Managed Keys Actioner] Action metadata updated
Jan 3 16:23:02 debian-11-trim kernel: [ 22.685314] Bluetooth: RFCOMM TTY layer initialized
Jan 3 16:23:02 debian-11-trim kernel: [ 22.685320] Bluetooth: RFCOMM socket layer initialized
Jan 3 16:23:02 debian-11-trim kernel: [ 22.685321] Bluetooth: RFCOMM ver 1.11
Jan 3 16:23:03 debian-11-trim login[956]: ROOT LOGIN on '/dev/pts/0'للسجلات التي تتحدث في الوقت الفعلي ، يمكن استخدام الأمر tail -f لـ “متابعة” السجل وعرض الإدخالات الجديدة أثناء إضافتها:
$ sudo tail -f /var/log/syslogلعرض بداية ملف سجل ، استخدم head:
$ sudo head /var/log/syslog الخطوة 3 – استخدام Logrotate لإدارة السجلات
يؤتمت المساعد logrotate إدارة ملفات السجل. يمكنه أرشفة ملفات السجل القديمة ، وضغط السجلات ، وتنظيف دلائل السجل لمنع الاستخدام المفرط للقرص.
لتكوين logrotate ، قم بتحرير ملف /etc/logrotate.conf باستخدام محرر نصوص (مثل nano أو vim). ملف تكوين logrotate معلق بشكل جيد ويوفر إرشادات واضحة حول كيفية إعداد قواعد التدوير لملفات السجل.
فيما يلي مثال على ما قد يبدو عليه ملف التكوين:
# انظر "man logrotate" للتفاصيل
# دوّر ملفات السجل أسبوعيًا
weekly
# احتفظ بسجلات 4 أسابيع
rotate 4
# أنشئ ملفات سجل جديدة (فارغة) بعد تدوير القديمة
create
# استخدم التاريخ كلاحقة للملف المدوّر
dateext
# ألغ تعليق هذا إذا كنت تريد ضغط ملفات السجل الخاصة بك
#ضغط
# تترك الحزم معلومات تدوير السجل في هذا الدليل
include /etc/logrotate.d
# لا تملك أي حزمة wtmp ، أو btmp -- سندورها هنا
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# يمكن أيضًا تكوين سجلات محددة للنظام هنافي هذا المثال ، يتم تدوير ملفات السجل أسبوعيًا ، والاحتفاظ بها لمدة 4 أسابيع إجمالًا ، ويتم إنشاء ملفات سجل جديدة بعد التدوير. بالإضافة إلى ذلك ، يتم ضغط ملفات السجل بعد التدوير.
لإضافة أو تحرير قواعد أو تحرير قواعد التدوير المحددة للسجل ، يمكنك إنشاء أو تحرير الملفات في الدليل /etc/logrotate.d. على سبيل المثال ، سيحتوي الملف /etc/logrotate.d/nginx على قواعد محددة لتدوير سجلات خادم Nginx للويب.
الخطوة 4 – استخدام خادم rsyslog
خادم rsyslog هو خدمة تسجيل نظام قوية ومرنة متاحة على أنظمة أوبونتو ودبيان. يحل محل خدمة syslog القديمة ويوفر ميزات متقدمة للتعامل مع رسائل السجل. يسمح rsyslog لك بتصفية رسائل السجل وتوجيهها وتخزينها بتنسيقات ووجهات مختلفة.
التثبيت والتكوين الأساسي
- التثبيت:
تحقق مما إذا كان rsyslog مثبتًا بالفعل على النظام الخاص بك عن طريق تشغيل:
$ sudo dpkg -l | grep rsyslogإذا لم يكن مثبتًا ، يمكنك تثبيته باستخدام الأمر التالي:
$ sudo apt-get update
$ sudo apt-get install rsyslog- ملفات التكوين: يقع ملف التكوين الرئيسي لـ
rsyslogفي/etc/rsyslog.conf. ومع ذلك ، يُنصح بإجراء تغييرات التكوين في ملفات منفصلة في/etc/rsyslog.d/للحفاظ على التنظيم وتجنب تعديل الملف الرئيسي مباشرةً.
فهم أسطر التكوين
يتكون ملف rsyslog.conf من سلسلة من أسطر التكوين ، يتألف كل منها من تعليمة من جزأين: محدد و إجراء. يتم فصل هذه الأجزاء بمسافات بيضاء.
- المُحدِد: يحدد جزء المُحدِد مصدر وأهمية رسالة السجل. وهو ينقسم إلى مكونين بنقطة (.):
- المرفق: يدل على منشأ الرسالة ، مثل
auth،kern،mail،user، إلخ. - الأولوية: تمثل مستوى خطورة الرسالة ، من
debug(الأدنى) إلىemerg(الأعلى).
- المرفق: يدل على منشأ الرسالة ، مثل
- الإجراء: يحدد جزء الإجراء ما يجب على
rsyslogالقيام به بالنسبة لرسائل السجل التي تطابق المحدد المقدم. يمكن أن يتضمن ذلك كتابة الرسائل إلى ملفات سجل محددة أو تحويلها إلى خوادم بعيدة ، وما إلى ذلك.
سطر تكوين مثال
فيما يلي مثال على سطر تكوين يسجل رسائل النواة (kern) ذات مستوى أولوية err (خطأ):
kern.err /var/log/kernel_errors.logفي هذا المثال:
kern.errهو المُحدِد ، مما يشير إلى أنه لرسائل النواة ذات أولوية الخطأ./var/log/kernel_errors.logهو الإجراء ، والذي يحدد أنه يجب حفظ رسائل السجل المطابقة في ملفkernel_errors.log.
عرض ملفات التكوين
على أنظمة أوبونتو ، غالبًا ما يتم العثور على ملف التكوين الافتراضي في /etc/rsyslog.d/50-default.conf. يمكنك استخدام الأمر التالي لعرض محتوياته:
$ cat /etc/rsyslog.d/50-default.confالمرافق والأولويات
تمثل المرافق المختلفة مصادر متنوعة لرسائل السجل ، مثل auth ، kern ، mail ، وغيرها. يتم تعيين أولوية لكل رسالة تشير إلى مستوى خطورتها ، من debug (أدنى) إلى emerg (أعلى).
فيما يلي بعض المرافق والأولويات التي يتعرف عليها rsyslog:
المرافق:
authأوauthpriv: أحداث المصادقة والأمنuser: رسائل سجل من برامج المستخدمmail: رسائل سجل تولدها نظام البريدlocal0إلىlocal7: محجوزة للاستخدام المحليkern: الرسائل المنشأة من نواة لينكس
الأولويات:
debug: معلومات تصحيح الأخطاء من البرامجinfo: رسائل معلومات بسيطةnotice: ظروف قد تتطلب انتباهًاwarn: تحذيراتerr: أخطاءcrit: ظروف حرجةalert: ظروف تحتاج إلى تدخل فوريemerg: ظروف طارئة
إن فهم هذه المرافق والأولويات أمر ضروري لتكوين rsyslog بفعالية.
- التسجيل الأساسي: بشكل افتراضي ، يسجل
rsyslogالرسائل إلى ملف/var/log/syslog. يمكنك عرض محتويات هذا الملف باستخدامcatأو أوامر أخرى كما ذُكر سابقًا.
التكوين المتقدم والتصفية
- التصفية باستخدام القوالب:
يسمح rsyslog لك بتصفية رسائل السجل ومعالجتها بناءً على سمات مختلفة مثل المرفق أو الخطورة أو اسم البرنامج. يمكنك إنشاء قوالب مخصصة لتنسيق رسائل السجل. على سبيل المثال ، لتحويل سجلات محددة إلى خادم بعيد:
- أنشئ ملف تكوين مخصص في
/etc/rsyslog.d/، مثل/etc/rsyslog.d/50-remote.conf. - أضف الأسطر التالية لتحويل الرسائل من المرفق
authإلى خادم بعيد بعنوان IP1.2.3.4:
if $programname == 'sshd' and $syslogfacility-text == 'auth' then @@1.2.3.4:514- إنشاء ملفات سجل مخصصة:
يمكنك إنشاء ملفات سجل مخصصة لتطبيقات أو خدمات محددة. على سبيل المثال ، لإنشاء ملف سجل لخدمة تسمى myapp:
- أنشئ ملف تكوين مخصص في
/etc/rsyslog.d/، مثل/etc/rsyslog.d/60-myapp.conf. - أضف الأسطر التالية لإنشاء ملف سجل في
/var/log/myapp.logلرسائل من برنامجmyapp:
if $programname == 'myapp' then /var/log/myapp.logتطبيق التغييرات وإعادة تشغيل rsyslog
بعد إجراء التغييرات على ملفات تكوين rsyslog ، تحتاج إلى إعادة تشغيل خدمة rsyslog لتطبيقها:
$ sudo service rsyslog restartالتصحيح واستكشاف الأخطاء وإصلاحها
إذا واجهت مشاكل في التسجيل أو التكوين ، فيمكنك التحقق من ملف /var/log/syslog للحصول على رسائل متعلقة بـ rsyslog. بالإضافة إلى ذلك ، يسجل rsyslog نفسه إجراءاته ، لذلك يمكنك استخدام الأمر التالي لعرض هذه السجلات:
$ sudo journalctl -u rsyslogسيظهر لك هذا سجلات rsyslog ، التي يمكن أن تكون مفيدة لتشخيص أي مشاكل متعلقة بخدمة التسجيل نفسها.
الخلاصة
إن الوصول إلى سجلات النظام وتكوينها مهارة أساسية لمدراء نظام لينكس. توفر أوبونتو ودبيان مجموعة قوية من الأدوات والأوامر لإدارة ملفات السجل ، والتي تعد أمرًا حاسمًا لتشخيص المشاكل ورصد سلوك النظام.
من خلال فهم مواقع ملفات السجل الافتراضية ، واستخدام أوامر عرض السجل مثل cat و tail و head ، وتكوين تدوير السجل باستخدام logrotate ، يمكن للمسؤولين إدارة ملفات السجل والحفاظ عليها بفعالية على أنظمتهم. يضمن ذلك الحفاظ على بيانات السجل المهمة مع منع تراكم الاستخدام المفرط للقرص.
