Laravel
Monitoring for the Laravel scheduler
Laravel’s scheduler is elegant, but it hangs on a single point of failure: one system cron entry running `schedule:run` every minute. If that entry is removed, the server is down, or `schedule:run` itself errors, every scheduled task stops — and Laravel will not tell you. The good news: Laravel has built-in ping hooks that make heartbeat monitoring a one-liner.
How Laravel scheduling works
You define tasks in the scheduler, and a single crontab line drives all of them: `* * * * * cd /path && php artisan schedule:run >> /dev/null 2>&1`. Laravel decides each minute which tasks are due. That single line is both the strength and the risk.
Why it fails silently
If that one cron entry disappears in a server rebuild, or the box is down, none of your scheduled tasks run and nothing errors — Laravel never even gets invoked. Per-task failures are just as quiet unless you have wired up alerting.
Ping on success with built-in hooks
Laravel ships with `pingOnSuccess()` / `thenPing()` (and `pingBefore()`), which call a URL after a task runs. Point them at a Cronmint heartbeat:
use Illuminate\Support\Facades\Schedule;
Schedule::command('reports:send')
->daily()
->pingOnSuccess('https://cronmint.com/ping/YOUR-TOKEN');Also monitor the master cron
Per-task pings do not fire if `schedule:run` itself never runs. Add one more heartbeat that the master cron hits every minute, so a missing system cron entry is caught too.
Monitor your Laravel scheduler
5 jobs free, no card. Set up your first monitor in about 30 seconds.
Start freeFrequently asked questions
How do I monitor Laravel scheduled tasks?
Use Laravel’s built-in pingOnSuccess()/thenPing() to hit a heartbeat URL after a task runs, and create a matching monitor. A missing ping means a failed or missed task and triggers an alert.
What if the schedule:run cron entry is missing?
Add a separate heartbeat that the master cron line pings every minute. If that system cron stops, its check-in stops, and you are alerted even though no task-level error occurred.
Do I need a package for this?
No. Laravel’s scheduler already includes the ping hooks, and Cronmint just needs a URL — no extra Composer package required.
Keep reading