نوبتی هم باشد نوبت به آموزش یکی دیگر از قابلیت های لینوکس یعنی logrotate می رسد که در قسمت ۷۸ از مجموعه آموزش پیکربندی سرور لینوکس می خواهیم به این مفهوم بپردازیم. تا به اینجا اگر با دیگر آموزش های وبنولوزی همراه بوده باشید، با بسیاری از بخش های لینوکس آشنا شدید. اما همانطور که باید بدانید در سیستم عامل لینوکس تمامی فعالیت هایی که انجام می شوند، درون پرونده هایی با عنوان Log یا گزارش یادداشت می گردند. این کار برای ساده کردن امر رفع ایراد و ردگیری فعالیت های انجام شده در لینوکس بسیار حائز اهمیت است. تقریباً می توان گفت هر سرویس یا بستۀ نرم افزاری که روی سرور لینوکس نصب می شود برای خود شاید در مسیرهای مختلف پرونده های گزارشی می سازد و آنها را پر می کند. حالا فرض کنید که اگر روی رشد روزمرۀ حجم این پرونده های گزارش (log) کنترلی وجود نداشته باشد، به چه سرعتی حافظۀ سرور پر شده و سرعت و کیفیت آن را دستخوش تغییر قرار دهد! اینجاست که Logrotate وارد عرصه خواهد شد.
عبارت Logrotate از دو قسمت Log به معنای گزارش و Rotate به معنای چرخش تشکیل شده است. به طوری که شاید از مفهوم چرخش گزارش ها بتوان فهمید که Logrotate برای ما چه کاری انجام می دهد.
از نظر کاربردی Logrotate کنترل کاملی روی تمامی پرونده های گزارشی دارد که ما یا خود نرم افزار در پرونده های پیکربندیِ Logrotate تعیین کردیم. مثلاً فرض کنید ما آپاچی را به عنوان وبسرور روی سرورِ لینوکس خود نصب کرده باشیم. این سرویس دارای پرونده های گزارش زیادی است که حتی هر بازدید از هر سایتی از سایت های روی سرور را گزارش گیری می کند. اگر چرخش گزارشی (Logrotate) وجود نداشت و می خواست همین طوری پرونده های گزارش سنگین و سنگین تر شوند، کار به جایی می رسید که حافظۀ Hard سرور پر می شد و امکان حتی یک بازدید دیگر از سایت ها هم وجود نداشت! پس الان با این توضیحات می توانید بفهمید که چقدر Logrotate می تواند مفید باشد.
البته Logrotate در تمامی رایانه های لینوکسی به صورت خودکار فعال است و نیازی نیست نگران باشید. حتی شما با زدن خود همین دستور logrotate به همراه چند تا مشخصۀ دیگر، می توانید دستور چرخش گزارش ها را همان لحظه بدهید. روال کار دقیق تر Logrotate هم به این صورت است که وقتی موعد زمانیِ مدیریت گزارش ها فرا می رسد (مثلاً هر هفته یا هر ماه یک بار انجام می گیرد)، پرونده های گزارش فشرده می شوند و در مکانی ذخیره می شود، حالا پروندۀ قدیمی حذف شده و به جای آن یک پروندۀ تازه ساخته می شود. حالا اینکه چه تعداد از این بایگانیِ گزارش های فشرده شده روی سرور بماند، بستگی به تنظیماتی دارد که درون پروندۀ پیکربندیِ Logrotate تعیین شده است.
تنظیمات Logrotate
می خواهیم سری به پروندۀ پیکربندیِ یا همان تنظیمات مرکزیِ Logrotate بیاندازیم. پرونده ای با نام logrotate.conf در مسیر etc وجود دارد. آن را با nano بازش کنید تا کمی تفتیشش کنیم.
nano /etc/logrotate.conf
شما یک سند خیلی کوچک و ساده ای را شاهد هستید که تمامی تنظیمات درون آن درج شده است. با چند تا از دستورات مهم این سند شما را آشنا خواهم کرد. دقت داشته باشید که خطوطی که با # شروع شدند، توضیحات سند هستند و هیچ کار خاصی انجام نمی دهند.
اولین دستور، دستورِ weekly است که تعیین می کند چرخش گزارش ها هر هفته یک بار انجام گیرد. خب مقادیر دیگری هم از قبیل موارد زیر را می توانید جایگیزین weekly کنید.
- daily : روزانه
- weekly : هفتگی
- monthly : ماهیانه
- yearly : سالیانه
دستور بعدی در پروندۀ پیکربندی، rotate 4 است که تعیین می کند که از تاریخچۀ گزارش های ذخیره شده، به چه تعداد روی سرور باقی بماند. مثلاً اگر همین الان چرخش گزارش ها انجام شود و از یک گزارشِ خاص ۴ تا برای دوره های زمانیِ گذشته موجود باشد، به محض ساخت یک بایگانی از گزارش جدید، قدیمی ترین بایگانی حذف خواهد شد. پس در نهایت فقط ۴ تا بایگانی از هر گزارش روی سرور باقی خواهد ماند. این عدد را خود شما می توانید تغییر دهید.
دستور بعدی create است که به Logrotate می فهماند که به محض بایگانی کردن یک پروندۀ گزارش، یک سند خالی با همان نام قبلی در همان مسیر بساز. که خب، نرم افزار بتواند مجدد از آن برای ذخیرۀ گزارش هایش استفاده کند.
دستور compress هم برای فشرده کردن پرونده های گزارشِ بایگانی شده کاربرد دارد. به صورت پیش فرض، فشرده سازی گزارش ها انجام نمی گیرد. چون یک علامت # ماقبل آن در این پرونده وجود دارد. اگر می خواهید فشرده سازی گزارش ها برای صرفه جوییِ هر چه بیشتر فضا انجام گیرد، دستور compress را از حالت توضیح خارج کنید.
یکی از دستورات مهمی که شاید آن را در جایی نبینید، دستور size است. با دستور rotate ما تعیین کردیم که هر چند روز یک بار چرخش گزارش ها انجام گیرد. حالا اگر خواسته باشیم با شاخصِ حجم پرونده های گزارش، آنهایی که قدیمی هستند را حذف کنیم، باید از دستور size استفاده گردد. مثلاً دستور زیر مشخص می کند که اگر حجم گزارش های مربوطه از مقدار ۲۰ مگابایت عبور کرد، گزارش های قدیمی حذف شوند.
size 20M
توجه داشته باشید که پروندۀ logrotate.conf تنها پروندۀ تنظیماتیِ این ابزار نیست. دستوری در این پرونده به صورت زیر وجود دارد که تمامی دستورات موجود در پوشۀ logrotate.d را هم وارد این سند می کند.
include /etc/logrotate.d
پس اگر محتویات مسیر logrotate.d را فهرست بگیرید، خواهید دید که معمولاً نرم افزارهای مهم سرور برای خود یک سندِ پیکربندیِ جداگانه دارند که به Logrotate می فهمانند چطور با گزارش های آنها برخورد کند. دستورات پیکربندیِ آنها هم همان دستورات کلی Logrotate است. مثل مواردی که در بالا مهم ترین آنها را خدمت شما شرح دادم.
ls /etc/logrotate.d
-rw-r--r--. 1 root root 103 Feb 22 2013 dracut -rw-r--r--. 1 root root 185 Aug 18 2015 httpd -rw-r--r--. 1 root root 173 Feb 22 2013 iscsiuiolog -rw-r--r--. 1 root root 70 Feb 1 2013 lfd -rw-r-----. 1 root named 170 Sep 3 2015 named -rw-r--r--. 1 root root 210 Jan 9 2013 syslog -rw-r--r--. 1 root root 100 Feb 22 2013 yum
این گونه است که شما قادرید تنظیمات Logrotate را باب میل خود، البته با در نظر گرفتن تمامی شرایط انجام دهید تا عملکرد سرور لینوکس خود را افزایش دهید. باید دقت داشته باشید که دستوراتی که شما در اسناد پیکربندیِ Logrotate می توانستید وارد کنید، به همین موارد محدود نیست. با زدن دستور man logrotate به فهرست کاملی از دستورات پیکربندیِ Logrotate خواهید رسید که توضیحاتی هم راجع به هر کدام خدمت شما عرض شده است.
۰ دیدگاه