در لینوکس فایلهای 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