Laravel Uptime Monitor

Published on by

Laravel Uptime Monitor image

The internet has become indispensable and the revenue source for a lot of people. It’s not acceptable for most web apps to be down even for a few seconds.

Spatie released a very handy package called Laravel Uptime Monitor, which aims to provide an easy and powerful way to monitor your website uptime and SSL certificate expiration date; it will notify you when your site is down using the flexible Laravel 5.3 notification system. Also, when your website goes up again, the package will kindly notify and inform you about the downtime period.

Let’s take a look at how this package can be set up and used.

Installation

First, install Laravel Uptime Monitor through Composer:

composer require spatie/laravel-uptime-monitor

Add its service provider in config/app.php:

'providers' => [
...
Spatie\UptimeMonitor\UptimeMonitorServiceProvider::class,
];

Then, to publish the config file, run the following command in your terminal:

php artisan vendor:publish --provider="Spatie\UptimeMonitor\UptimeMonitorServiceProvider"

Run the following command to migrate the monitors table to database:

php artisan migrate

Finally, open app/Console/Kernel.php file and schedule monitor:check-uptime and monitor:check-certificate commands like this:

protected function schedule(Schedule $schedule)
{
$schedule->command('monitor:check-uptime')->everyMinute();
$schedule->command('monitor:check-certificate')->daily();
}

Be sure you added the Laravel Cron entry to your server to enable Laravel Uptime Monitor commands to run repeatedly:

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Usage

After installing the package, you can add the websites you want to monitor by using monitor:create command. If you add a URL beginning with https:// the package will also start monitoring the SSL certificate:

php artisan monitor:create https://laravel-news.com

Optionally, it will ask you if you want to look for a specific string in the response of the website. If the string does not appear, it will consider the uptime check as failed.

After few minutes, run php artisan monitor:list

It will show a list of all the monitored websites and the result of the uptime and certificate checks with some details about the SSL certificate.

There are also monitor:delete, monitor:enable, and monitor:disable commands. The first is for deleting a website from the monitoring list, the other two commands are for enabling and disabling the monitoring for the provided website URL:

php artisan monitor:delete http://example.com
php artisan monitor:enable http://example.com
php artisan monitor:disable http://example.com

Overview

If you open the config/laravel-uptime-monitor.php configuration file, you will see the Laravel Uptime Monitor package has a lot of configurations and is highly customizable. Please take note of the following important options:

  • First, you can customize the notifications option to add your notifications channels for each event the Laravel Uptime Monitor package will fire (it provides six different event types). You can easily use any channel Laravel 5.3 notification system supports like Slack or mail, etc.
  • If you use Laravel Uptime Monitor from multiple locations, you can use the location option to distinguish between different locations, as the location will be sent with each notification.
  • The resend_uptime_check_failed_notification_every_minutes option is for specifying the delay time between the reminding notifications that will be sent when your website is down; the default is 60 minutes.
  • Then, there are two options; one is for specifying the mail that will be notified by the package, the second is for specifying the webhook_url for the Slack if you used the Slack notification channel.
  • The run_interval_in_minutes option is for specifying the delay time between uptime check. Note that if an uptime check fails the package will ignore this option and starts checking that site every minute.
  • The timeout_per_site option is for specifying the period in seconds that the check process should wait before giving up, the default is ten seconds.
  • The fire_monitor_failed_event_after_consecutive_failures determines the number of failed uptime checks before it fires the Spatie\UptimeMonitor\Events\MonitorFailed event, the default is two.
  • Then, you have options for fire_expiring_soon_event_if_certificate_expires_within_days, which will fire a SslExpiresSoon event when the remaining days in your SSL certificate are less than the number of days you specify for this option.

If you want a powerful way to monitor a website’s uptime and SSL certificates expiration date, give the Laravel Uptime Monitor a try.

Diaa Fares photo

Laravel Artisan, Web Developer, Tech Geek

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.

Laravel Forge logo

Laravel Forge

Easily create and manage your servers and deploy your Laravel applications in seconds.

Laravel Forge
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
No Compromises logo

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $7500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Bacancy logo

Bacancy

Supercharge your project with a seasoned Laravel developer with 4-6 years of experience for just $2500/month. Get 160 hours of dedicated expertise & a risk-free 15-day trial. Schedule a call now!

Bacancy
Lucky Media logo

Lucky Media

Get Lucky Now - the ideal choice for Laravel Development, with over a decade of experience!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel E-Commerce

E-Commerce for Laravel. An open-source package that brings the power of modern headless e-commerce functionality to Laravel.

Lunar: Laravel E-Commerce
LaraJobs logo

LaraJobs

The official Laravel job board

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS Starter Kit

SaaSykit is a Multi-tenant Laravel SaaS Starter Kit that comes with all features required to run a modern SaaS. Payments, Beautiful Checkout, Admin Panel, User dashboard, Auth, Ready Components, Stats, Blog, Docs and more.

SaaSykit: Laravel SaaS Starter Kit
Supercharge Your SaaS Development with FilamentFlow: The Ultimate Laravel Filament Boilerplate logo

Supercharge Your SaaS Development with FilamentFlow: The Ultimate Laravel Filament Boilerplate

Build your SaaS application in hours. Out-of-the-box multi-tenancy and seamless Stripe integration. Supports subscriptions and one-time purchases, allowing you to focus on building and creating without repetitive setup tasks.

Supercharge Your SaaS Development with FilamentFlow: The Ultimate Laravel Filament Boilerplate
Rector logo

Rector

Your partner for seamless Laravel upgrades, cutting costs, and accelerating innovation for successful companies

Rector
MongoDB logo

MongoDB

Enhance your PHP applications with the powerful integration of MongoDB and Laravel, empowering developers to build applications with ease and efficiency. Support transactional, search, analytics and mobile use cases while using the familiar Eloquent APIs. Discover how MongoDB's flexible, modern database can transform your Laravel applications.

MongoDB

The latest

View all →
Asymmetric Property Visibility in PHP 8.4 image

Asymmetric Property Visibility in PHP 8.4

Read article
Access Laravel Pulse Data as a JSON API image

Access Laravel Pulse Data as a JSON API

Read article
Laravel Forge adds Statamic Integration image

Laravel Forge adds Statamic Integration

Read article
Transform Data into Type-safe DTOs with this PHP Package image

Transform Data into Type-safe DTOs with this PHP Package

Read article
PHPxWorld - The resurgence of PHP meet-ups with Chris Morrell image

PHPxWorld - The resurgence of PHP meet-ups with Chris Morrell

Read article
Herd Executable Support and Pest 3 Mutation Testing in PhpStorm 2024.3 image

Herd Executable Support and Pest 3 Mutation Testing in PhpStorm 2024.3

Read article