Filament Storage Monitor - це плагін, який додає віджет до вашої Filament-панелі для моніторингу використання дискового простору сервера. Він зчитує статистику через нативні функції файлової системи PHP і відображає її у вигляді віджета, що органічно вписується в інтерфейс панелі. Плагін підтримує роботу з кількома розділами диска, користувацькі мітки та багато інших можливостей.
Реєстрація дисків
Плагін реєструється в панелі, де ви вказуєте, які шляхи потрібно відстежувати. Метод addDisk() приймає шлях і мітку безпосередньо, тоді як laravelDisk() підключає диск з вашого конфігураційного файлу config/filesystems.php:
use AchyutN\FilamentStorageMonitor\FilamentStorageMonitor;
return $panel
->plugins([
FilamentStorageMonitor::make()
->addDisk('/mnt/data', label: 'Data Partition')
->laravelDisk(name: 'public', label: 'Media Storage'),
]);
Для більш детального контролю над окремим диском доступний метод add(), який приймає DTO Disk. Тут можна встановити колір, іконку Heroicon, а також шлях і мітку:
use AchyutN\FilamentStorageMonitor\DTO\Disk;
use AchyutN\FilamentStorageMonitor\FilamentStorageMonitor;
use Filament\Support\Colors\Color;
use Filament\Support\Icons\Heroicon;
FilamentStorageMonitor::make()
->add(
Disk::make('web-root')
->path('/var/www/html')
->label('Web Root')
->color(Color::Green)
->icon(Heroicon::ComputerDesktop),
)
->addDisk(
path: '/mnt/backup',
label: 'Backups',
color: Color::Blue,
icon: Heroicon::ArchiveBox,
);
Авторизація на рівні окремих дисків
Інформація про використання диска може бути конфіденційною серверною інформацією, тому плагін дозволяє контролювати видимість на двох рівнях. Closure visible() на віджеті керує тим, чи відображатиметься весь віджет, а closure isVisible на окремому диску приховує лише цей конкретний запис:
FilamentStorageMonitor::make()
->visible(fn () => auth()->user()->is_admin) // Приховати весь віджет
->addDisk(
path: '/var/www/html',
label: 'App Files',
isVisible: fn () => auth()->user()->can('view_server_stats') // Приховати конкретний диск
);
Компактний режим
Для економії місця на дашборді компактний режим зменшує відображення кожного диска до його мітки та вільного простору:
FilamentStorageMonitor::make()
->compact();
Віджет також надає стандартні методи керування розміщенням: columnSpan(), columnStart(), sort() та lazy() для гнучкого позиціонування на дашборді.
Обробка помилок
За замовчуванням шлях, який неможливо розпізнати (наприклад, відсутня точка монтування), не призведе до краху панелі - віджет перехоплює помилку і продовжує рендеринг. Якщо ж ви хочете виявляти такі проблеми під час розробки, метод throwException() знову вмикає винятки. Він приймає closure, тому ви можете обмежити суворий режим лише локальним оточенням:
FilamentStorageMonitor::make()
->throwException(fn () => app()->isLocal());
Обмеження
Варто зазначити одне обмеження: оскільки пакет зчитує статистику на рівні розділів диска, два шляхи на одному розділі показуватимуть однаковий загальний і вільний простір. Обчислення розміру для окремих директорій заплановане в майбутніх релізах.
Вихідний код, документацію та інструкції для контрибуторів можна знайти на GitHub.