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() приймає об'єкт Disk DTO. У ньому можна задати колір та 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,
);
# Авторизація для окремих дисків
Дані про використання дисків можуть бути конфіденційними, тому плагін дозволяє керувати доступом на двох рівнях. Замикання visible() на рівні віджета контролює його відображення загалом, а 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();
Віджет також підтримує стандартні налаштування макета Filament: columnSpan(), columnStart(), sort() та lazy().
# Обробка помилок
За замовчуванням, якщо шлях неможливо знайти (наприклад, через відсутню точку монтування), панель не «впаде» — віджет обробить помилку та продовжить роботу. Якщо ви хочете бачити ці проблеми під час розробки, метод throwException() дозволяє увімкнути винятки (наприклад, лише для локального середовища):
FilamentStorageMonitor::make()
->throwException(fn () => app()->isLocal());
Важливий нюанс: оскільки пакет зчитує статистику на рівні розділів, два різні шляхи на одному розділі показуватимуть однаковий загальний та вільний обсяг. Розрахунок розміру окремих директорій заплановано в майбутніх релізах.
Вихідний код, документація та правила участі у розробці доступні на GitHub.