وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

لاگ Docker دیسک سرور را پر کرده است؛ محدودکردن امن گزارش کانتینرها

راهنمای بررسی لاگ کانتینر، تنظیم max-size و max-file و آزمایش چرخش لاگ Docker با حفظ داده‌ها.

انتشار:
توسط تیم فنی نت‌آرام
۵ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله لاگ Docker دیسک سرور را پر کرده است؛ محدودکردن امن گزارش کانتینرها در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
اگر فضای سرور کم می‌شود اما فایل‌های سایت و پشتیبان‌ها تغییر زیادی نکرده‌اند، ممکن است گزارش‌های یک کانتینر بزرگ شده باشند. Docker خروجی برنامه را ثبت می‌کند و در تنظیمات پیش‌فرض برخی نصب‌ها، گزارش json-file بدون محدودیت رشد می‌کند. هر فایل بزرگ الزاماً لاگ Docker نیست؛ ابتدا محل مصرف و نوع ثبت را پیدا کنید، بعد برای همان سرویس راه‌حل انتخاب کنید.
فرمان‌ها برای مدیر یک سرور لینوکسی با Docker Engine هستند و در ترمینال SSH همان سرور اجرا می‌شوند. فضای کم می‌تواند ثبت اطلاعات و کار دیتابیس را مختل کند؛ پیش از هر تغییر، پشتیبان قابل بازیابی و راه دسترسی جایگزین داشته باشید. هیچ دستور پاک‌سازی عمومی یا حذف volume را اجرا نکنید.

۱. آیا مشکل واقعاً فضای دیسک است؟

کد / دستورdf -h
ستون Use% میزان پرشدگی هر سیستم فایل را نشان می‌دهد. ردیفی را پیدا کنید که داده Docker روی آن قرار دارد؛ فقط پر بودن یک پارتیشن دیگر به معنی بزرگ بودن لاگ نیست. برای دیدن محل داده و درایور پیش‌فرض:
کد / دستورdocker info --format 'root={{.DockerRootDir}} driver={{.LoggingDriver}}'
مسیر root ممکن است در نصب rootless با نصب معمولی فرق کند. مقدار driver پیش‌فرض جدیدها را نشان می‌دهد، نه لزوماً درایور تک‌تک کانتینرهای موجود. اگر اتصال به Docker خطای دسترسی دارد، راهنمای دسترسی socket را ببینید.

۲. کانتینر پرحرف را پیدا کنید

ابتدا نام کانتینرها را ببینید:
کد / دستورdocker ps -a
در نمونه‌های زیر myapp را با نام یک کانتینر خود عوض کنید. این فرمان نوع ثبت و مسیر فایل مربوط به آن کانتینر را نمایش می‌دهد:
کد / دستورdocker inspect --format 'driver={{.HostConfig.LogConfig.Type}} path={{.LogPath}}' myapp
اگر مسیر خالی است یا درایور journald، سرویس ابری یا گزینه دیگری است، دستورهای خاص json-file را برای آن به کار نبرید. برای بررسی محتوای اخیر از خود Docker استفاده کنید:
کد / دستورdocker logs --tail 100 myapp
اگر صدها خط تکراری از خطای اتصال دیتابیس می‌بینید، رفع همان خطا جلوی تولید مداوم گزارش را می‌گیرد. قبل از اشتراک‌گذاری لاگ، رمزها و اطلاعات شخصی را حذف کنید. اندازه فایل گزارش را مدیر سیستم می‌تواند از اطلاعات فایل و ابزار فضای دیسک بررسی کند، اما فایل‌های تحت مدیریت Docker را مستقیم ویرایش یا جابه‌جا نکنید؛ این کار ممکن است ثبت گزارش را مختل کند.

۳. برای کانتینر Compose سقف مشخص کنید

اگر سرویس شما از درایور json-file استفاده می‌کند، در فایل Compose همان سرویس می‌توانید نمونه زیر را با رعایت تورفتگی و در کنار تنظیمات فعلی اضافه کنید:
کد / دستورservices: myapp: logging: driver: json-file options: max-size: "10m" max-file: "3"
این نمونه حداکثر اندازه هر فایل گزارش را حدود ۱۰ مگابایت و تعداد فایل‌ها را سه عدد تعیین می‌کند. با پرشدن فایل، گزارش می‌چرخد و با رسیدن به سقف تعداد، قدیمی‌ترین فایل حذف می‌شود؛ پس این تنظیم جایگزین نگهداری مرکزی گزارش‌های موردنیاز نیست. نام myapp را با نام سرویس Compose عوض کنید. فایل موجود را بازنویسی نکنید و سایر کلیدهای سرویس، شبکه‌ها و volumeها را حفظ کنید.
در پوشه پروژه، docker compose config را اجرا کنید تا خطای قالب و تنظیم نهایی را ببینید. خروجی ممکن است رمز داشته باشد. تغییر تنظیمات برای کانتینر موجود با ذخیره فایل فوراً اعمال نمی‌شود؛ معمولاً باید کانتینر همان سرویس طبق برنامه انتشار دوباره ساخته شود. این کار می‌تواند وقفه ایجاد کند. پیش از آن از اتصال صحیح volumeها، نسخه پشتیبان و روش بازگشت مطمئن شوید؛ از گزینه تجدید volumeهای ناشناس بدون بررسی استفاده نکنید. سرویس دیتابیس یا کل مجموعه را صرفاً برای این تغییر حذف نکنید.

۴. تنظیم پیش‌فرض کل Docker چه فرقی دارد؟

مدیر سرور می‌تواند در تنظیمات daemon برای json-file گزینه‌های max-size و max-file را به صورت رشته وارد کند. این تغییر فقط با راه‌اندازی مجدد daemon و برای کانتینرهای تازه‌ساخته‌شده اعمال می‌شود؛ کانتینرهای موجود خودکار تغییر نمی‌کنند. بازراه‌اندازی Docker ممکن است چند سرویس را مختل کند. اگر فایل تنظیمات از قبل کلیدهای دیگری دارد، آن‌ها را حفظ کنید و از روش اعتبارسنجی نسخه نصب‌شده و برنامه نگهداری سرور استفاده کنید. جزئیات نسخه خود را در مستندات رسمی چرخش گزارش Docker ببینید.

۵. از کجا بفهمیم درست شده است؟

بعد از ساخت مجدد کنترل‌شده، برای همان کانتینر تنظیمات را بخوانید:
کد / دستورdocker inspect --format '{{json .HostConfig.LogConfig}}' myapp
باید درایور و محدودیت‌های مدنظر دیده شوند. سپس در بازه مناسب df -h و گزارش برنامه را دوباره بررسی کنید. ایجاد نشدن رشد نامحدود، سالم‌بودن برنامه و قابل‌خواندن‌بودن گزارش از خود Docker، نشانه‌های بهتری از صرفاً ذخیره یک فایل تنظیمات هستند. اگر دیسک هنوز پر است، حجم دیتابیس، پشتیبان و سایر سیستم‌های فایل را جداگانه بررسی کنید؛ چرخش لاگ تمام علت‌ها را رفع نمی‌کند.
برای انتخاب فضای مناسب برنامه و نگهداری گزارش، ظرفیت و امکانات سرور مجازی ایران نت‌آرام را با الگوی مصرف واقعی خود مقایسه کنید.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام