مدیریت Log ها در لینوکس – بخش اول

 سرویس ها ، نرم افزار ها و خود هسته و رویداد های مرتبط سیستم عامل لینوکس در هر لحظه رویداد هایی مانند خطاها و تغییر در روند سرویس یا هر چیزی را در غالب فایل هایی ثبت می کند که به این کار Loging یا ثبت رویداد گویند.مدیران این فایل ها را مرتب و یا در هنگام بروز مششکل بررسی می کنند.مستند کردن این فایل ها یکی از وظایفی است که افراد در شرکت ها انجام می دهند.هنگامی که یک سرویس Start یا Stop می شود و یا هر تغییر،خطایی رخ می دهد حتی هنگامی که یک عمل با موفقیت انجام می شود یک پیام در فایل Log مرتبط با آن سرویس ثبت خواهد شد.

فایل های Log در مسیر دایرکتوری var/log/ قرار دارند و مرتبط با هر سرویس مانند sshd یا dhcpd یک فایل Log وجود دارد.لینوکس از ابزاری به نام syslogd که مخفف System Log Daemon برای ثبت رویداد ها استفاده می کند.این برنامه با سرویس ها و نرم افزار های در ارتباط بوده و آنها رویداد های خود را به این برنامه داده(syslogd رویداد ها را جمع آوری می کند) و در فایل های Log خود آنها ثبت می کند.

فایل های Log فایل های متنی هستند و می توان با دستور های vi , Vim  و دستور های less , cat و دستور های head ,tail مشاهده کرد اما پیشنهاد می کنم از دستور های tail , head و less استفاده کنید.از ابزار های دیگر مرتبط با Log ها در لینوکس ابزار های logwatch است که در توزیع های لینوکسی وجود دار. در دایرکتوری etc/log.d/ و تحت فایل logwatch.conf قابل پیکربندی می باشد.از اعمال مرتبط با Log ها Log Rotate یا گردش Log است. وقتی که اندازه فایل های Log زیاد می شود بایستی از آنها یک پشتیبان تهیه کرد و یا اینکه دنباله Log کردن را دریک فایل جدید ادامه داد و فایل قدیمی را ارشیو کرد. این اعمال بصورت خودکار و در غالب Rotate کردن انجام می شود.یکی دیگر از موضاعتی که قابل بحث است ذخیره رویداد ها بصورت محلی و راه دور می باشد.محلی بودن ثبت رویداد کاملن واضح است و رویداد در خود آن ماشین ذخیره می شوند اما راه دور به معنی اینکه یک سیستم را بعنوان Log Server انتخاب می کنیم و تمام ماشین ها در صورتی که تنظیم شده باشند رویداد هایشان را در این سرور ارسال می کنند.

ملاحضاتی درباره ثبت رویداد ها :

  1. بهتر است که یک پارتیشن مجزا برای دایرکتوری var/log/ در نظر بگیریم چونکه رشد اندازه فایل های Log بسیار بالاست و در نظر گرفتن پارتیشن مجزا خارج از دایرکتوری /  از بروز مشکل جلوگیری می کند.
  2. پیکربندی عملیات Rotate کمک به کنترل حجم و بازخوانی ساده تر فایل ها می کند.
  3. بهتر است که ثبت روبداد را هم بصورت محلی(یعنی در خود همان ماشین) و هم بصورت راه دور(یعنی در یک سرور مجزا) انجام دهید.

فایل های Log مهم :

در توزیع CentOS و دیگر توزیع ها در زیر دایرکتوری var/log/ چندین فایل وجود دارد که به مهمترین انها اشاره می کنیم :

message : شامل رویداد های سیستم و اتفاقاتی که در هنگام بوت شدن و خاموش شدن سیستم می افتد.دستور dmesg این فایل را می خواند و خروجی را نشان می دهد.

auth.log : همانطور که در این پست گفتیم با استفاده از دستور های su و sudo ( اجرای دستور ها با مجوز دیگر کاربر ها در لینوکس – بخش نخست/دوم) این فایل بروز می شود.

kern.log : فایل حاوی اطلاعات و رویداد های کرنل سیستم عامل.

cron.log : در این پست سرویس cron گفته شده. این فایل حاوی اطلاعات مربوط به این سرویس اشت.

mail.log : اطلاعات و رویداد های Mail Server ها و MTA هایی مانند sendmail.

qmail : مرتبط با سرویس پست الکترونکی qmial (در صورتی که qmail را نصب کرده باشید وجود دارد).

httpd : مرتبط با وب سرور آپاچی (در صورتی که httpd را نصب کرده باشید وجود دارد).

boot.log : مرتبط با اطلاعات و رویداد های فرایند بوت شدن سیستم.

mysqld.log : مرتبط با پایگاه داده MySQL (در صورتی که MySQL را نصب کرده باشید وجود دارد).

secure : مشابه auth.log

wtmp و utmp : در ارتباط با اطلاعات ورود  کاربران به سیستم که کدام ورود ها ناموفق یا کدام ها موفق و اینکه اخرین ورود ها کدام ها هستند. دستوری مانند last این فایل ها را می خواند.

yum.log : مختص سیستم های مبنتی بر RedHat که در ارتباط با دستور yum است.

چگونه فایل های Log را بخوانیم :

همانطور که گفته شد ابزار هایی مانند less و یا Logwatch برای خواندن فایل های Log بکار می روند و نوع این فایل ها معمولا از نوع متنی (ASCII) هستند. اما گونه دیگری مانند wtpm و یا utmp از نوع ASCII نبوده بلکه از نوعی Binary هستند و با ابزار های معمولی قابل خواندن نمی باشند.بلکه باید آنها را با دستور های خاص خودشان خواند مانند دستور last که در بالا گفته شد.دستور type را برای فهمیدن نوع فایل در لینوکس بکار می بریم.

type /path/to/file

خواندن و مشاهده این فایل ها و حتی استفاده از دستور های خاصی مانند last نیاز به دسترسی کاربر ریشه دارد.یعنی یک کاربر عادی نمی تواند این فایل ها را تغییر دهد یا حتی خود مدیر هم شاید نتواند این فایل ها(مانند wtmp) را تغییر دهند چون اطلاعات ضروری در انها ثبت شده اند.

جدول زیر فهر ست کاملی از فایل های Log در تمامی در تمامی توزی های لینوکسی نشان می دهد :

دریافت عکس

در مورد جدول بالا :

ستون File نام فایل و ستون Program نام برنامه ای که رویداد ها را در آن فایل ذخیره می کند

ستون Whrer نوع Log را تعیین می کند که سه نوع

  • S= System Log
  • H=Hardwired
  • C=Configuration File

ستون Freq زمانبندی Log کردن را نشان می دهد که :

  • D-Daily
  • W=Weekly
  • M=Monthly

و ستون System نوع توزیع لینوکسی و دیگر سیستم عامل های یونیکسی را نشان می دهد که :

  • U=Ubuntu
  • R=RedHat&CentOS
  • S=Suse
  • S=Solaris
  • H=HP-UX
  • A=AIX