مانیتور فضای دیسک از داشبورد Filament
خلاصهٔ کاملتر
به گفتهٔ نویسنده، Filament Storage Monitor یه پلاگینه که یه ویجت داشبورد به پنل Filament اضافه میکنه تا مصرف فضای دیسک سرور رو زیر نظر بگیری. آمار storage رو با توابع بومی فایلسیستم پیاچپی میخونه و بهشکل یه ویجت که با بقیهٔ پنلت هماهنگه رندر میکنه، با پشتیبانی از چند پارتیشن و برچسب دلخواه و موارد دیگه.
برای معرفی دیسکها، پلاگین رو توی پنلت register میکنی و میگی کدوم مسیرها رو ببینه. متد addDisk() مستقیم یه مسیر و برچسب میگیره، و laravelDisk() یه دیسک رو از config/filesystems.php خودت resolve میکنه:
return $panel
->plugins([
FilamentStorageMonitor::make()
->addDisk('/mnt/data', label: 'Data Partition')
->laravelDisk(name: 'public', label: 'Media Storage'),
]);برای کنترل بیشتر روی یه دیسک، متد add() یه DTO از نوع Disk میگیره که میتونی کنارش رنگ و یه Heroicon هم ست کنی؛ در واقع همون تنظیماتی که با آرگومانهای نامدار توی addDisk() هم در دسترسن، اینجا بهشکل زنجیرهای روی خود DTO ست میشن. نویسنده میگه چون آمار دیسک اطلاعات حساس سروره، پلاگین اجازه میده دسترسی رو توی دو سطح محدود کنی: یه closure روی visible() تعیین میکنه کل ویجت رندر بشه یا نه، و یه closure روی isVisible فقط یه دیسک خاص رو مخفی میکنه:
FilamentStorageMonitor::make()
->visible(fn () => auth()->user()->is_admin) // Hide entire widget
->addDisk(
path: '/var/www/html',
label: 'App Files',
isVisible: fn () => auth()->user()->can('view_server_stats'),
);برای اشغال فضای کمتر روی داشبورد هم یه حالت compact داره که هر دیسک رو تا حد برچسب و فضای خالیش خلاصه میکنه (->compact()). ویجت کنترلهای چیدمان معمول مثل columnSpan()، columnStart()، sort() و lazy() رو هم برای جانمایی روی داشبورد در اختیارت میذاره.
برای مدیریت خطا، بهصورت پیشفرض اگه یه مسیر resolve نشه (مثلاً یه mount گمشده) پنلت کرش نمیکنه؛ ویجت خطا رو میگیره و رندر رو ادامه میده. اگه ترجیح میدی موقع توسعه این مشکلها رو ببینی، throwException() دوباره استثناها رو فعال میکنه و یه closure هم قبول میکنه تا رفتار سختگیرانه رو فقط به محیط local محدود کنی.
یه محدودیت که ارزش گفتن داره: چون پکیج آمار رو در سطح پارتیشن میخونه، دو مسیر روی یه پارتیشن یکسان، فضای کل و خالی یکسانی گزارش میدن. محاسبهٔ اندازهٔ مخصوص هر دایرکتوری هم برای نسخههای بعدی برنامهریزی شده. سورس، مستندات و راهنمای مشارکتش روی گیتهاب در دسترسه.
نکات کلیدی:
- ویجت داشبورد Filament برای دیدن مصرف فضای دیسک سرور
- خوندن آمار با توابع بومی فایلسیستم پیاچپی، پشتیبانی از چند پارتیشن
- معرفی دیسک با addDisk()، laravelDisk() یا DTO بهنام Disk با رنگ و آیکون
- کنترل دسترسی دو سطحی با closureهای visible() و isVisible
- حالت compact و کنترلهای چیدمان مثل columnSpan() و lazy()
- محدودیت: دو مسیر روی یه پارتیشن آمار یکسان میدن؛ اندازهٔ سطح دایرکتوری بعداً میاد




