brimham / backup-monitor
Records and surfaces the health and history of your spatie/laravel-backup runs.
Requires
- php: ^8.3
- illuminate/contracts: ^12.0 || ^13.0
- illuminate/database: ^12.0 || ^13.0
- illuminate/events: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
- spatie/laravel-backup: ^9.0 || ^10.0
Requires (Dev)
- larastan/larastan: ^3.10
- laravel/pint: ^1.29
- orchestra/testbench: ^10.0 || ^11.0
- pestphp/pest: ^3.0 || ^4.0
- pestphp/pest-plugin-laravel: ^3.0 || ^4.0
Suggests
- brimham/filament-backup-monitor: A Filament panel (run history + per-destination health) for your backup runs
This package is auto-updated.
Last update: 2026-07-02 20:20:24 UTC
README
Records and surfaces the health and history of your spatie/laravel-backup runs.
Spatie's backup package and the existing Filament backup plugins are stateless — they let you create, download, and delete backups, but they keep no history of what actually happened. This package adds the missing layer: a durable record of every backup run, so you can see at a glance whether your backups are actually working.
This is the free core: it records runs and exposes them for display. Proactive alerting on missed/silent failures and a multi-site dashboard live in Pro — see Upgrade to Pro.
Using Filament?
brimham/filament-backup-monitoradds a ready-made panel on top of this package — a run-history table and a "last backup per destination" health view.
Requirements
- PHP 8.3+
- Laravel 12 or 13
- spatie/laravel-backup 9 or 10
Installation
composer require brimham/backup-monitor
The package auto-registers its service provider. Run the migration to create the backup_runs table:
php artisan migrate
What it does
Once installed, it listens to Spatie's backup events and writes a row to backup_runs for each one:
- successful backups (with destination disk, size, and path)
- failed backups (with the failure message)
- healthy / unhealthy health-check results
That history is the foundation for a "last backup per destination" health view and a run log.
Reading the data
use Brimham\BackupMonitor\Models\BackupRun; // Most recent run per destination disk (powers the health panel) $latest = BackupRun::latestPerDisk(); // Recent failures $failures = BackupRun::query()->failed()->latest()->take(20)->get();
Upgrade to Pro
This core package answers "did my backups run?" after the fact. It can't tell you when a scheduled backup silently stops running — there's no event to record, so nothing lands in the table. That's the failure that actually loses data, and it's what Brimham Backup Monitor Pro is built to catch.
Pro builds on this package and adds:
- Missed / overdue detection — a dead-man's-switch that flags any destination whose last successful backup is older than its expected cadence (or has never run).
- Multi-channel alerting — mail, Slack, Discord, Teams, and a generic webhook, with de-duplication so you're told once, not on every check.
- Escalation & recovery — widen the alert the longer a backup stays down, and get told when it's healthy again.
- External heartbeat — ping healthchecks.io / Cronitor as backups run, so an outage is caught even if the whole app and its scheduler are down.
- Multi-site dashboard — push every install's health to a self-hosted collector and watch all your sites from one panel. Ideal for agencies.
License
MIT. See LICENSE.