یکی از قابلیتهای سیستمعامل ثبت رخدادها و اتفاقات جاری سیستم است. این قابلیت کمک زیادی به بررسی وضعیت سیستم، عیب یابی و مدیریت سیستم میکند.
در لینوکس از ابزارها و روشهای مختلفی برای ثبت و مدیریت لاگ مانند syslogd و syslogd-ng استفاده میشده است. در حال حاضر متداولترین روشها برای انجام این کار rsyslog و systemd-journal است.
در این مستند در مورد نصب و پیکربندی rsyslog و همچنین مفاهیم مهم در بحث لاگ صحبت خواهیم کرد.
برای نصب rsyslog از dnf به شکل زیر استفاده میکنیم (البته به صورت معمول و پیش فرض این بسته نرمافزاری در تمامی لینوکسها نصب میباشد).
در ادامه با استفاده از systemctl از وضعیت آن آگاه میشویم.
قبل از این که در مورد پیکربندی rsyslog صحبت کنیم باید دو مفهوم مهم Facility و Severity را بشناسیم.
مفهوم Facility نوع یا طبقه بندی لاگها را مشخص میکند که لاگ توسط چه سرویس یا نرم افزاری تولید شده است. با توجه به استاندارد، Facility یکی از موارد جدول زیر میتواند باشد (RFC 3164).
مفهوم Severity شدت، درجه یا سطح اهمیت لاگ را مشخص میکند. با توجه به استاندارد، سطوح Severity به صورت زیر تعریف میشوند.
تنظیمات مربوط به rsyslog در فایل /etc/rsyslog.conf قرار دارد.
در این فایل در سمت چپ نوع لاگ با استفاده از Facility و Severity (با ساختار Facility.Severity) و در سمت راست فایل یا مکانی که لاگ ذخیره، ارسال یا نشان داده میشود، مشخص شده است.
به عنوان مثال در خط زیر *.info به معنای همهی انوع لاگ با سطح info و قبل از آن (سطح ۰ الی ۶) است، در ادامهی این خط mail.none;authpriv.none;cron.none به این معنا است که هیچ لاگی از نوع mail، authpriv یا cron را شامل نشود. در سمت راست نیز مکان ذخیره لاگ مشخص شده است.
در ادامهی تنظیمات این فایل، لاگهای authpriv، mail و cron در فایلهای مجزایی ذخیره میشوند.
تنظیمات خط زیر به معنای این است که همهی لاگها با سطح emerg یا panic (که در فایل /var/log/messages نیز ذخیره میشوند) در کنسول نیز نشان داده شوند.
با توجه به تنظیمات پیشفرض لاگ که توضیحات آن ارائه شد فایلی که بیشتر از همه برای بررسی لاگها با آن سر و کار داریم /var/log/messages است.
اگر نگاهی به این مسیر بیندازیم میبینیم که علاوه بر این فایل چند فایل دیگر نیز با نامهای شبیه آن به صورت زیر داریم. فایلهای دیگر در واقع همین فایل در بازههای زمانی هفتههای گذشته هستند که به دلیل تنظیمات پیش فرض rotation لاگها به این صورت ذخیره میشوند (لاگ هفتهی جاری + لاگ ۴ هفته گذشته).
تنظیمات مربوط به rotate در فایل /etc/logrotate.conf انجام میشود.
برای بررسی لاگها به صورت زنده از tailf یا tail -f به صورت زیر استفاده میکنیم.
برای بررسی و جستجو در لاگها از ابزارهایی مانند vi یا vim نیز استفاده میشود. به علاوه در صورتی که در لاگها خواسته باشیم کلمه کلیدی خاصی را جستجو کنیم از cat و grep نیز میتوانیم استفاده کنیم.
همانطور که در لاگهای ارائه شده مشخص است، لاگهای ایجاد شده در قالب پیامهایی (Messages) ذخیره میشوند که در ابتدای این پیام یک برچسب زمانی یا Timestamp وجود دارد که زمان رخداد لاگ را مشخص میکند و در ادامه توضیحات مربوط به لاگ ارائه میشود.
با توجه به اهمیت زمان لاگ، همگام بودن زمان و تاریخ سیستم از اهمیت بالایی برخوردار است و پیشنهاد میشود برای انجام این کار از سرویس NTP استفاده شود.