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.

image
No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project.

Visit No Compromises
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
LoadForge logo

LoadForge

Easy, affordable load testing and stress tests for websites, APIs and databases.

LoadForge
Paragraph logo

Paragraph

Manage your Laravel app as if it was a CMS – edit any text on any page or in any email without touching Blade or language files.

Paragraph
Lucky Media logo

Lucky Media

Bespoke software solutions built for your business. We ♥ Laravel

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
DocuWriter.ai logo

DocuWriter.ai

Save hours of manually writing Code Documentation, Comments & DocBlocks, Test suites and Refactoring.

DocuWriter.ai
Rector logo

Rector

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

Rector

The latest

View all →
Generate Code Coverage in Laravel With PCOV image

Generate Code Coverage in Laravel With PCOV

Read article
Non-backed Enums in Database Queries and a withSchedule() bootstrap method in Laravel 11.1 image

Non-backed Enums in Database Queries and a withSchedule() bootstrap method in Laravel 11.1

Read article
Laravel Pint --bail Flag image

Laravel Pint --bail Flag

Read article
Laravel Herd for Windows is now released! image

Laravel Herd for Windows is now released!

Read article
The Laravel Worldwide Meetup is Today image

The Laravel Worldwide Meetup is Today

Read article
Cache Routes with Cloudflare in Laravel image

Cache Routes with Cloudflare in Laravel

Read article