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.

StatusCat3 min read

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 200 still counts as down.
  • The API — a check on a lightweight /health route (see how to monitor an API).
  • The scheduler — a heartbeat, so you know schedule:run is 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

  1. Group your monitors (web, API, scheduler, queue, database).
  2. Create a status page and add those components.
  3. Point it at a custom domain like status.yourapp.com.
  4. 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.

Frequently asked questions

Do I need to install a package in my Laravel app?
No. StatusCat monitors your app from the outside over HTTP, so there's nothing to install. For deeper checks you can optionally expose a /health route and use heartbeat pings from your scheduler and queue workers.
How do I monitor the Laravel scheduler and queue?
Use heartbeat monitors. Have a scheduled task and a queue worker send a ping on a healthy cycle; if the ping stops, you're alerted that the scheduler or worker has stalled.
Can the status page live on my own domain?
Yes — status pages support custom domains, private (password-protected) access, email subscribers and 90-day uptime history.

Keep reading