
مقدمة
غالبًا ما يحتاج مدراء النظام الذين يعملون مع أوبونتو ودبيان إلى الاستشارة ملفات السجل لاستكشاف المشاكل. هذه خطوة أساسية في تشخيص المشاكل وحلها على هذه أنظمة التشغيل.
تولد أنظمة لينكس ، بما في ذلك أوبونتو ودبيان ، مجموعة متنوعة من الرسائل التي يتم تسجيلها في ملفات السجل. هذه رسائل السجل حاسمة لفهم سلوك النظام وتحديد المشاكل. يعتمد لينكس على مزيج من ملفات التكوين والدلائل والبرامج والأوامر والخوادم لإدارة هذه رسائل السجل وتنظيمها. إن الإلمام بمواقع ملفات السجل والأوامر ذات الصلة يمكن أن يسرع بشكل كبير من عملية استكشاف الأخطاء وإصلاحها.
في هذا الدليل ، سنستكشف الجوانب الرئيسية لنظام تسجيل لينكس في سياق أوبونتو ودبيان.
الخطوة 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
، ستجد ملفات سجل مختلفة لأغراض محددة. بعض الأمثلة الشائعة تشمل:
wtmp
utmp
dmesg
messages
maillog
أوmail.log
spooler
auth.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
، يمكن للمسؤولين إدارة ملفات السجل والحفاظ عليها بفعالية على أنظمتهم. يضمن ذلك الحفاظ على بيانات السجل المهمة مع منع تراكم الاستخدام المفرط للقرص.