ابزار logrotate در لینوکس

آشنایی من با این ابزار از آنجایی شروع شد که فضای ذخیره سازی سرور اوبونتو شرکت خیلی پر شده بود.

با دستور 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: این پارامتر مشخص می‌کند که فایل لاگ فشرده سازی شود.

نوشته شده در سه شنبه ۱۳۹۹/۰۲/۱۶ ساعت ۲۰:۱۲ توسط مهدی باقری | تعداد بازدید ۳۷۰۷

نظر شما
*
* captcha