اطلاعیه

بستن
No announcement yet.

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

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    مدیریت 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 انتخاب می کنیم و تمام ماشین ها در صورتی که تنظیم شده باشند رویداد هایشان را در این سرور ارسال می کنند.

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

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

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

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

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	log.png نمایش ها:	1 اندازه:	73.9 KB شناسه:	18269

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

    ستون 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


    نویسنده نامی امیر
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-12-2020, 12:33 AM.

    #2
    مدیریت Log ها در لینوکس – بخش دوم (دستور logger)

    در بخش اول ” مدیریت Log ها در لینوکس ” مفهوم Log و چندین فایل مهم در توزیع های لینوکسی گفته شد. چگونگی خواندن فایل های Log و ابزار های مناسب نیز گفته شد. در این مطلب چگونگی ایجاد Log و دادن آن به syslogd و ثبت آن در یک فایل دلخواه گفته می شود. دو دستور logger و faillog در ارتباط با Log ها هستند. دستور logger یک واسط خط فرمان برای ثبت رویداد ها توسط syslogd است.

    از دستور logger برای ثبت رویداد های اجرای یک اسکریپت استفاده میشود. فرض کنید اسکریپتی دارید که توسط crond مرتبن اجرا میشود و می خواهید از اجرای آن رویداد هایی را نیز در یک فایل ثبت کنید. ایم فایل می تواند یک فایل پیش فرض مانند var/log/message/ باشد یا یک فایل تعریف شده توسط خود شما. یک مثال ساده از آن دستور زیر است. این دستور یک خط به انتهای فایل var/log/message/ اضافه میکند.

    کد PHP:
    “logger “In yek test az logger CMD ast 
    با دستور زیر می توانید ببنید که کاربر root در کدام ساعت و تاریخ و از چه ماشینی اقدام به ثبت Log کرده است. (در این مثال از localhost رویداد ثبت شده است اما می تواند رویداد از یک ماشین دیگر ثبت شده باشد که به این نوع Remote Logging می گویند)

    کد PHP:
    tail -n1 /var/log/message 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	logger1.png نمایش ها:	1 اندازه:	4.4 KB شناسه:	17048

    فرض کنید یک اسکریپت دارید که باید در یک فایل رویداد هایش را ثبت کند. می توانید رویداد های آن اسکریپت را در فایل دلخواه که باید زیر دایرکتوری var/log/ باشد را ثبت کند. این دستور دارای سوئیچ های

    t- : بعنوان Tag بکار می رود. در هر خط پیش از هر Error این Tag نوشته می شود.

    f- : مسیر فایلی که باید در آن رویداد ثبت شود را تعیین می کند.

    s- : خطاها را نیز در نمایشگر نشان می دهد.

    یک مثال از استفاده دستور در اسکریپت نویسی مثال زیر است. دستور های زیر را در فایلی به نام chkdir.sh ذخیره کنید.

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	logger2.png نمایش ها:	1 اندازه:	14.6 KB شناسه:	17049

    خط 1 : یک متغیر به نام logmsg تعریف می کند که شامل دستور logger به همراه سوئیچ t- و MyScript بعنوان Tag است که در ابتدای هر خط می اید.

    خط 2 : همان متغیر را با یک مقدار رشته ای چاپ می کند. این طور فرض کنید که متغیر logmsg همان دستور usr/bin/logger -s -t MyScript/ است که در خط دوم یک رشته را که همان خطا است را بعنوان پارامتر می گیرد و چاپ می شود. پس در ابتدای هر خط به خاطر t- یک MyScript چاپ می شود.

    خط 4,3 : خط 3 چک می کند که آیا یک دایرکتوری به نام home/fred/ وجو دارد. اگر داشت پیام خط 4 را چاپ می کند.

    خط 5 : اگر دایرکتوری بالا نبود پیام خط 5 چاپ می شود

    خروجی های این دستور بصورت پیش فرض در فایل var/log/message/ ثبت می شوند و همچنین روی نمایشگر هم چاپ می شود. برای مشاهده آنها از دستور tail بصورت زیر استفاده کنید.

    در شکل زیر دستور chkdir/. اسکریپت نوشته شده را اجرا می کند.

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	logger3.png نمایش ها:	1 اندازه:	12.6 KB شناسه:	17050

    نویسنده نامی امیر
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-12-2020, 12:33 AM.

    کامنت

    درباره انجمن منطقه لینوکسی ها

    انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

    شبکه های اجتماعی

    ایمیل مدیریت

    Habili@linux-zone.org

    در حال انجام ...
    X