آشنایی من با این ابزار از آنجایی شروع شد که فضای ذخیره سازی سرور اوبونتو شرکت خیلی پر شده بود.
با دستور du بررسی های لازم رو انجام دادم تا ببینم این فضا توسط چه چیزی پر شده است. متوجه شدم که فایل access.log مربوط به Nginx ما بیشتر از 30G فضا اشغال کرده است. شروع به جستجو کردم تا بررسی کنم چرا این طوری شده. اما متوجه شدم که این یک مورد طبیعی است. سایت ما بازدید زیادی داشت و خیلی وقت هم بود که سرور آنلاین بود و تغییر سرور نداشتیم. این Nginx همه درخواستهایی که به سرور میآید رو در فایل access.log ذخیره میکند.
بعد شروع به فکر کردن کردم که چطور میتونم خالیش کنم. به ذهنم رسید که از دستور echo در لینوکس استفاده کنم.
echo "" > /var/log/nginx/access.log
این دستور میگه که مقدار "" رو بریز داخل فایل access.log که به زبان دیگه یعنی فایل رو خالی کن. فقط حواستون به سطوح دسترسی فایل باشد چون اگر دسترسیهاش تغییر کنه و nginx نتواند به این فایل دسترسی پیدا کند خطا میدهد.
اما بعدش به این فکر افتادم که این راه حل مناسبی نیست. و تا چند وقت دیگه همین مشکل دوباره پیش میاد. پس برای یک راه حل بهتر شروع کردم به مطالعه و جستجو. و به این ابزار برخوردم. این ابزار دقیقا کارش مدیریت فایل های لاگ هست. میتوانید این ابزار رو روی هر فایل لاگی در سیستم اجرا کنید. به این طریق که مثلا روزی یک بار اجرا میشود و فایل لاگ مورد نظر رو منتقل میکند به یک آدرس جدید و یک فایل جدید برای لاگ روز آینده میسازد.
/etc/cron.daily/logrotate
این فایل Cron مربوط به اجرای logrotate است. که روزانه یک بار اجرا میشود. میتونیم زمان های اجرای فایل رو تغییر بدیم.
فایل تنظیمات logrotate در مسیر زیر قرار دارد.
/etc/logrotate.conf
مقادیر زیر مثالی از تنظیمات logrotate است.
/var/log/httpd/*log { /var/log/nginx/domains/*.log { daily missingok rotate 14 size 100M compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript } }
- خط اول: مشخص میکند که این تنظیم مربوط به کدام فایل log است
- daily: مشخص میکند که برای هر روز یک فایل log موجود باشد. مقادیر دیگری که میشود به آن نسبت داد daily، weekly، monthly، yearly
- rotate 14: مشخص میکند که فایلهای قدیمیتر از 14 روز رو حذف کند.
- size 100M: مشخص میکند که اگر سایز فایل لاگ بیشتر از 100 مگابایت شد عملیات logrotate رو انجام بدهد. این پارامتر یکی از پرکاربردترین گزینهها است.
- compress: این پارامتر مشخص میکند که فایل لاگ فشرده سازی شود.