Product SiteDocumentation Site

9.5. syslog رویدادهای سیستمی

9.5.1. اصل و مکانیزم

فرآیند پس‌زمینه rsyslogd مسئول دریافت پیام‌های ارسالی از کرنل و برنامه‌های مختلف است تا آن‌ها را به فایل‌های گزارش مخابره کند (که معمولا در دایرکتوری /var/log/ ذخیره می‌شوند). این دستور از فایل پیکربندی /etc/rsyslog.conf تبعیت می‌کند.
هر پیام گزارش متناسب با یک زیرسیستم از برنامه است (که در مستندات با نام “facility” شناخته می‌شود):
  • auth و authpriv: برای احراز هویت؛
  • cron: که از سرویس‌های مدیریت وظیفه مانند cron و atd می‌آید؛
  • daemon: روی یک فرآیند پس‌زمینه بدون هیچ طبقه‌بندی خاصی تاثیر می‌گذارد (DNS، NTP و از این قبیل)؛
  • ftp: مرتبط با سرور FTP؛
  • kern: پیامی که از کرنل می‌آید؛
  • lpr: از زیرسیستم چاپ نشات می‌گیرد؛
  • mail: از زیرسیستم ایمیل نشات می‌گیرد؛
  • news: پیام زیرسیستم Usenet (به خصوص از سمت یک سرور NTP - Network News Transfer Protocol - که گروه‌های خبری را مدیریت می‌کند)؛
  • syslog: پیام‌هایی که از خود سرور syslogd می‌آیند؛
  • user: پیام‌های کاربر (عمومی)؛
  • uucp:پیام‌های ارسالی از سرور UUCP (Unix to Unix Copy Program، یک پروتکل قدیمی برای انتقال پیام‌های ایمیل)؛
  • local0 تا local7: رزرو شده برای استفاده محلی؛
هر پیام همچنین با یک سطح اولویت نیز همراه است. اینجا فهرستی از آن‌ها به صورت کاهش درجه اهمیت قرار دارد:
  • emerg: “کمک!” یک موقعیت اضطراری وجود دارد، سیستم به احتمال زیاد غیرقابل استفاده خواهد شد.
  • alert: عجله کن، هر تاخیری ممکن است خطرناک باشد، اقدام باید در اولین فرصت صورت گیرد؛
  • crit: شرایط بحرانی است؛
  • err: خطا؛
  • warn: هشدار (خطای احتمالی)؛
  • notice: شرایط عادی است، اما پیام حائز اهمیت است؛
  • info: پیام آگاهی‌رسان؛
  • debug: پیام عیب‌زدایی؛

9.5.2. فایل پیکربندی

شیوه دستوری فایل /etc/rsyslog.conf در صفحه راهنما rsyslog.conf(5) آمده است، اما همچنین مستندات HTML آن در بسته rsyslog-doc نیز قرار دارد (/usr/share/doc/rsyslog-doc/html/index.html). اصل کبی نوشتن جفت‌های “selector” و “action” است. selector تمام پیام‌های مرتبط را انتخاب می‌کند و action می‌گوید چطور با آن‌ها برخورد شود.

9.5.2.1. شیوه دستوری انتخابگر

انتخابگر یک فهرست دوتایی از subsystem.priority است که با ; از هم جدا شده‌اند (نمونه: auth.notice;mail.info). یک * نشان‌دهنده کل زیرسیستم‌ها یا اولویت‌ها می‌باشد (نمونه: *.alert یا mail.*). چندین زیرسیستم با استفاده از , می‌توانند گروه‌بندی شوند (نمونه: auth,mail.info). اولویت مشخص شده شامل تمام پیام‌های با آن اولویت یا بالاتر می‌باشد؛ بنابراین auth.alert نشان‌دهنده زیرسیستم auth با اولویت alert یا emerg است. اگر با یک علامت ! پیشوند شود، نشانگر خلاف آن عمل است، به عبارت دیگر اولویت‌های پایین‌تر؛ auth.!notice، بنابراین نشان‌دهنده پیام‌های زیرسیستم auth با اولویت info یا debug است. اگر با = پیشوند شود، تنها همان اولویت مشخص شده را شامل می‌گردد (auth.=notice تنها شامل پیام‌های زیرسیستم auth با اولویت notice می‌باشد).
هر عنصر موجود در فهرست selector عنصر قبلی را خنثی می‌کند. بنابراین امکان جداسازی یا محدودساختن برخی عناصر وجود دارد. برای نمونه، kern.info;kern.!err یعنی پیام‌های ارسالی کرنل با اولویت بین info و warn. اولویت none نشان‌دهنده مجموعه خالی است (بدون اولویت) و ممکن است برای خارج‌کردن یک زیرسیستم از مجموعه پیام‌ها بکار رود. پس، *.crit;kern.none یعنی تمام پیام‌های با اولویت برابر یا بزرگتر از crit که از کرنل نمی‌آیند.

9.5.2.2. شیوه دستوری اقدامات

اقدامات ممکن عبارتند از:
  • افزودن پیام به یک فایل (نمونه: /var/log/messages
  • ارسال پیام به یک سرور راه‌دور syslog (نمونه؛ @log.falcot.com
  • ارسال پیام به یک لوله موجود نامگذاری شده (نمونه: |/dev/xconsole
  • ارسال پیام به یک یا چند کاربر، اگر در سیستم حاضر باشند (نمونه: root,rhertzog
  • ارسال پیام به تمام کاربران حاضر در سیستم (نمونه: *
  • نوشتن پیام در یک کنسول متنی (نمونه: /dev/tty8).