How to monitor
A status page for your Laravel app
Monitor your Laravel app's uptime and publish a public status page in minutes — health checks, scheduler and queue monitoring, SSL, and a custom-domain status page your users can trust.
Laravel makes it easy to ship — and easy to forget that the marketing site, the API, the scheduler, and the queue worker are all separate things that can fail independently. A good monitoring setup watches each of them and rolls the results into a single status page your users can check.
Here's how to set that up for a Laravel app in a few minutes, with nothing to install.
What to monitor in a Laravel app
- The web app — an HTTP check on your main URL, with a keyword assertion so a white-screen
200still counts as down. - The API — a check on a lightweight
/healthroute (see how to monitor an API). - The scheduler — a heartbeat, so you know
schedule:runis actually firing. - Queue workers — a heartbeat from a periodic job, so a stalled worker pages you.
- SSL certificate — expiry monitoring so a lapsed cert never takes you down (see SSL expiry).
- The database host — an optional TCP check on the DB port.
Add a health route
A tiny health endpoint makes external monitoring far more meaningful:
// routes/web.php
Route::get('/health', function () {
// Touch the critical path — DB connectivity, etc.
\DB::connection()->getPdo();
return response()->json(['status' => 'ok']);
});
Point a StatusCat HTTP monitor at /health with a keyword assertion on "status":"ok". If the database is unreachable, the route errors and the monitor trips.
Monitor the scheduler and queue with heartbeats
Add a scheduled ping so you know the scheduler is alive:
// routes/console.php (or app/Console/Kernel.php)
Schedule::call(function () {
\Illuminate\Support\Facades\Http::timeout(10)
->get('https://statuscat.co/ping/your-scheduler-id');
})->everyFiveMinutes();
Do the same from a periodic queued job for your workers. If either ping stops, StatusCat alerts you. (More on this in how to monitor a cron job.)
Publish the status page
- Group your monitors (web, API, scheduler, queue, database).
- Create a status page and add those components.
- Point it at a custom domain like
status.yourapp.com. - Enable email subscribers so customers can opt in to incident updates.
Why this matters
When something breaks at 3 AM, you want to be paged before your users notice, and you want customers to have a status page to check instead of flooding support. A Laravel app has enough moving parts that "the site loads" isn't the whole story — monitor each piece.
StatusCat does all of this from the outside, free for 50 monitors, with on-call and status pages included. If you're new to monitoring, start with what uptime monitoring is.