rotate کردن فایلهای log در لینوکس
rotate کردن فایلهای log در لینوکس
ممکن است حجم فایل های log بسیاز زیاد شود، به این ترتیب ممکن است var/log/ بسیار تنومند گردد.
به منظور حل این مشکل، در لینوکس ابزارهایی جهت rotate کردن فایل های log در نظر گرفته شده است.
رایج ترین ابزار rotate کردن logrotate نام دارد.
ابراز Logrotate می تواند بطور مرتب فایلهای لاگ شما را حذف، فشرده سازی و چرخش نماید.
منظور از چرخش به این صورت است که وقتی موعد زمانیِ مدیریت لاگها فرا می رسد (مثلاً هر هفته یا هر ماه یک بار انجام میگیرد)،
فایل های لاگ فشرده می شوند و در مکانی ذخیره میگردد، حالا فایلهای قدیمی حذف شده
و به جای آن یک فایل تازه ساخته میشود.
حالا اینکه چه تعداد از این بایگانیِ لاگهای فشرده شده روی سرور بماند،
بستگی به تنظیماتی دارد که درون فایل کانفیگ Logrotate تعیین شده است.
می توانید عمل چرخش را روزانه، ماهانه یا … تنظیم نمایید.
بصورت پیشفرض ابزار Logrotate به صورت cron job روزانه اجرا می شود.
اهمیت لاگ روتیت (Log Rotate)
لاگ فایل ها بسیار با اهمیت و کاربردی هستند و برای مدیران شبکه یا مدیران سرورها
در جستجوی اطلاعات و نحوه عملکرد سرویس بسیار مفید هستند.
جستجو در لاگ فایل های بسیار بزرگ سخت و کند خواهد بود.
فایل لاگ بزرگ حجم زیادی از دیسک شما را اشغال خواهد کرد
در ضمن خود فرآیند زیپ کردن و آرشیو فایل های لاگ بزرگ طولانی و وقت گیر خواهد شد.
بر اساس مطالب بالا لازم است لاگ فایل ها در زمان مناسب بر اساس حجم فایل یا تعداد روز های ذخیره سازی آرشیو و یا حذف شوند.
rotate کردن فایلهای log در لینوکس
لاگ روتیت (Log Rotate) چگونه کار می کند؟
سرویس logrotate در زمان های مقرری مثلاً یک بار در روز اجرا می شود:
etc/cron.daily/logrotate/
در صورتی که مایل هستید سرویس logrotate در زمان های زودتری مثلاً به صورت ساعتی اجرا شود
لازم است که اجرای سرویس آن را توسط سرویس cron به ساعتی تبدیل کنید:
etc/cron.hourly/
زمانی که سرویس logrotate اجرا می شود این سرویس لاگ فایل های تعریف شده را می خواند
تا بر اساس “تعداد آرشیو هایی که باید نگهداری شود” یا ”چه زمانی باید لاگ فعلی بسته شود” عملیات خود را به انجام می رساند.
فایل logrotate.conf
فایل تنظیمات logrotate در مسیر زیر قرار دارد:
etc/logrotate.conf/
در این فایل می توانیم همه اطلاعات مهم را پیدا کنیم:
- چند وقت یکبار کار Rotate فایل های لاگ انجام می شود
- بک آپ ها چقدر باید نگهداری شود
- چه نوع پسوندی باید به فایل های لاگ قدیمی افزوده شود
- آیا این فایل ها باید فشرده شوند یا خیر
به طور پیش فرض فایل های لاگ قدیمی فشرده نمی شوند.
شما می توانید این موضوع را به راحتی با uncomment کردن دستور compress انجام دهید.
این فایل حاوی پارامترهای پیش فرض سرویس logrotate است و با توجه به توضیحات درون فایل می توانیم مقادیر پیش فرض را تغییر دهیم.
در این فایل مسیر زیر محل تنظیمات logrotate مربوط به سایر برنامه ها را مشخص می کند:
include /etc/logrotate.d
مسیر logrotate.d
می توانید با استفاده از دستور زیر مسیر دایرکتوری logrotate.d را نگاه کنید:
ls /etc/logrotate.d
بسته به اینکه چه برنامه هایی روی سرور شما نصب شده اند
این برنامه ها در دایرکتوری فوق یک فایل در این مسیر برای تنظیم اختصاصی logrotate خود این برنامه ایجاد می کند.
در این مسیر لااقل یک فایل به نام syslog مشاهده می شود که لاگ های خود سیستم را rotate خواهد کرد.
پارامتر Rotate count
دستوری مطابق زیر تعداد نگهداری لاگ فایل ها را قبل از حذف فایل لاگ مشخص می کند:
rotate 4
در دستور فوق مشخص می شود که تعداد 4 لاگ فایل نگهداری شود.
پارامتر Rotation interval
دستوری وجود دارد که مشخص می کند لاگ روتیشن برای چه مدت (yearly،monthly،weekly،daily) لاگ را نگهداری کند.
پارامتر Size
می توان دستور لاگ روتیشن را با توجه به حجم فایل لاگ (size 100K,size 100M,size 100G) مشخص کرد.
مثالهای فوق دستور Log Rotate را بعد از بزرگ شدن فایل از حجم 100 کیلوبایت،
دومی بعد از بزرگ شدن از سایز 100 مگابایت و سومی بعد از بزرگ شدن از اندازه 100 گیگابایت مشخص می کند.
دقت شود که پارامتر size از درجه اهمیت و اجرای بالاتری نسبت به سایر پارامترها برخوردار است.
پارامتر Compression
پارامتر compress باعث فشرده سازی فایل لاگ به صورت gzip خواهد شد.
با استفاده از دستور nocompress فشرده سازی کنسل خواهد شد.
در صورتی که مایل هستید فشرده سازی با تاخیر انجام شود و لزومی به انجام ب
ه سرعت آن وجود ندارد از پارامتر delaycompress استفاده شود.
یکی از کاربردهای delaycompress در لاگ های سرویس آپاچی است.
پارامتر sharedscripts
این پارامتر باعث می شود که در صورتی یک برنامه مانند Apache دارای چندین لاگ بود،
فقط یک بار اسکریپت تعریف شده در postrotate انجام شود و ری استارت آپاچی مکرر انجام نشود.
پارامتر postrotate
postrotate اسکریپتی است که هر زمان که logrotate انجام می شود اجرا می شود.
به عنوان مثال می توان سرویس مورد نظر را در این اسکریپت Restart کرد:
postrotate
usr/sbin/apachectl restart > /dev/null/
endscript
جهت مشاهده دوره های آموزشی بر روی این لینک کلیک نمایید.
جدیدترین اخبار مجموعه فراز نتورک را در این صفحه اجتماعی دنبال کنید.
نویسنده: موسی رشوند
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.