در لینوکس فایل‌های Log حاوی پیام‌هایی در رابطه با عملکرد سیستم است و مدیران سیستم می‌توانند به‌کمک آن‌ها رویدادهای رخ داده روی سیستم در طول یک بازه‌ی زمانی مشخص را بررسی کنند.

بنابراین Logها برای تجزیه و تحلیل و خطایابی مشکلات سیستم و سرویس‌های در حال اجرا روی آن، نقش اساسی دارند. در لینوکس، به‌شکل پیش‌فرض فایل‌های Log در مسیر /var/log ذخیره و با سرویس Rsyslog کنترل و مدیریت می‌شوند.

در این مطلب به شیوه‌ی نصب Rsyslog روی Ubuntu 18.04 می‌پردازیم.

سرویس Rsyslog

چون Rsyslog می‌تواند هم نقش کلاینتی و هم سروری داشته باشد، قادر است تا پیام‌های Log را به‌وسیله‌ی TCP/UDP ارسال یا از دستگاه‌های دیگر موجود در شبکه همانند سرورها، روترها، سوییچ‌ها یا هر دستگاه تولیدکننده‌ی log دریافت کند.

Rsyslog اگر در نقش سرور پیکربندی شود، به پورت پیش‌فرض 514 TCP/UDP گوش می‌دهد و پیام‌های Log ارسالی به وسیله‌ی سایر دستگاه‌ها روی ساختار را جمع‌آوری می‌کند. در حالتی‌که Rsyslog به‌عنوان Client پیکربندی شود، پیام‌های log را به Rsyslog سروری روی ساختار به وسیله‌ی TCP/UDP و روی پورت 514 ارسال می‌کند.

فیلترهای Rsyslog در یکی از سه دسته‌ی زیر قرار می‌گیرند:

  • فیلترهای Priority
  • فیلترهای Property-based
  • فیلترهای Expression-based

Priority Filterها مشخص‌کننده‌ی فرآیندهای داخلی لینوکس تولیدکننده‌ی Log هستند:

  • auth/authpriv: پیام‌های تولید شده به‌وسیله‌ی فرآیند احراز هویت
  • cronپیام‌های مرتبط با وظایف cron
  • Daemon: پیام‌های مرتبط با سرویس‌های در حال اجرای سیستم
  • Kernel: پیام‌های مرتبط با کرنل لینوکس
  • Mailپیام‌های مرتبط با ایمیل سرور
  • Syslog: پیام‌های مرتبط با syslog
  • Lprپیام‌های مرتبط با پرینتر یا print server
  • local0 – local7پیام‌های سفارشی تحت کنترل مدیریت سیستم

به سطوح مختلف فیلترهای Priority یک عدد و یک کلمه‌ی کلیدی اختصاص پیدا می‌کند که عبارت‌اند از:

  • (emerg, panic (Level 0: این log نشان‌دهنده‌ی آن است که سیستم به‌شکل کامل از کار افتاده و امکان استفاده از آن نیست.
  • (alert (Level 1به‌معنای آن است که بی‌درنگ باید اقدامی انجام شود.
  • (err (Level 3: بیان‌گر وضعیت بحرانی است
  • (warn (Level 4: بیان‌گر هشدار است.
  • (notice (Level 5: بیان‌گر آن است که وضعیت نرمال است اما نیاز به بررسی‌های بیش‌تری است.
  • (info (Level 6صرفن اطلاعی از یک رویداد است.
  • (debug (Level 7: پیام‌های دیباگ

نصب Rsyslog

Rsyslog روی نسخه‌های جدید Ubuntu به‌شکل پیش‌فرض نصب است، اما به هنگام نصب نبودن، می‌توان آن را با استفاده از دستور زیر نصب کرد:

sudo apt-get install rsyslog

با استفاده از دستور زیر نیز می‌توان از نصب Rsyslog مطمین شد:

sudo systemctl status rsyslog

در گام بعد با استفاده از دستور زیر به مسیر فایل تنظیمات Rsyslog بروید، ابتدا کلید I روی صفحه کلید را فشار دهید تا به حالت ویرایش منتقل شوید، سپس عبارات مشخص شده‌ زیر جملات provides UDP syslog reception و provides TCP syslog reception را با حذف علامت # از قبل آن‌ها، از حالت comment خارج کنید:

sudo vim /etc/rsyslog.conf

شما می‌توانید به‌کمک دستور زیر و افزودن آن بعد از عبارت (input(type=”imtcp” port=”514”، محدودیت دسترسی برای یک زیرشبکه، IP یا دامنه خاص مشخص کنید (به‌جای x.x.x.x باید IP مورد نظر خود را وارد کنید) .

AllowedSender TCP, 127.0.0.1, x.x.x.x/24, *.yourdomain.com

ایجاد Template

با استفاده از Template می‌توان شیوه‌ی ذخیره‌سازی Logها را برای Rsyslog مشخص کرد. Template را باید پیش از عبارت GLOBAL DIRECTIVE اضافه کرد.

template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?Incoming-logs & ~

با افزودن دستور بالا به فایل تنظیمات Rsyslog، پیام‌های Log در مسیر /var/log و به فرم مشخص شده در دستور ثبت می‌شوند. در دستور بالا افزون‌بر متغیرهای گفته شده، می‌توان موارد زیر را نیز به‌کار برد:

%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

برای ثبت تغییرات انجام شده در فایل تنظیمات Rsyslog نیاز است تا این سرویس را Restart کرد. برای انجام این عمل از دستور زیر استفاده کنید:

sudo systemctl restart rsyslog

نهایتن برای بررسی این‌که آیا Rsyslog به دو پورت TCP و UDP به‌درستی گوش می‌دهد از دستور زیر استفاده کنید:

ss -tunelp | grep 514