See rates for the top Laravel developers in Latin America

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
Mastering Laravel

Join the Mastering Laravel community to level up your skills and get trusted advice.

Visit Mastering Laravel
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
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
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
Cut PHP Code Review Time & Bugs into Half with CodeRabbit logo

Cut PHP Code Review Time & Bugs into Half with CodeRabbit

CodeRabbit is an AI-powered code review tool that specializes in PHP and Laravel, running PHPStan and offering automated PR analysis, security checks, and custom review features while remaining free for open-source projects.

Cut PHP Code Review Time & Bugs into Half with CodeRabbit
Join the Mastering Laravel community logo

Join the Mastering Laravel community

Connect with experienced developers in a friendly, noise-free environment. Get insights, share ideas, and find support for your coding challenges. Join us today and elevate your Laravel skills!

Join the Mastering Laravel community
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
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

The latest

View all →
Auto-translate Application Strings with Laratext image

Auto-translate Application Strings with Laratext

Read article
Simplify Factory Associations with Laravel's UseFactory Attribute image

Simplify Factory Associations with Laravel's UseFactory Attribute

Read article
Improved Installation and Frontend Hooks in Laravel Echo 2.1 image

Improved Installation and Frontend Hooks in Laravel Echo 2.1

Read article
Filter Model Attributes with Laravel's New except() Method image

Filter Model Attributes with Laravel's New except() Method

Read article
Arr::from() Method in Laravel 12.14 image

Arr::from() Method in Laravel 12.14

Read article
Streamline API Resources with Laravel's Fluent Methods image

Streamline API Resources with Laravel's Fluent Methods

Read article