Sponsor

Fire Tower: Application & Config Monitoring

Published
Fire Tower: Application & Config Monitoring image

In a perfect world all our side projects, dev sites, customer systems, and other Laravel applications would be up to date running on Laravel 12, PHP 8.4, and the latest version of all the packages we love. We’d also have applications that run perfectly, always have the external ETL processes provide the correct data, and never forget to set a variable in our .env file.

Unfortunately, most of us aren’t that lucky.

Fire Tower provides an easy to use Laravel package that plugs into your Laravel application and monitors crucial information using our expanding checks and version information. By default, Fire Tower will check to see if you’re running the latest version of Laravel, PHP, verify you don’t have debug mode on in Production, and even let you know if you forgot to setup your Mail config for those password reset emails.

It doesn’t just stop there. Fire Tower lets you build your own bespoke checks. Does your application need to ensure a specific piece of data is within a certain range? Do you need to ensure a certain number of rows exist in a column? Do you need to check the latest created_at date on a table to make sure your ETL process ran? All these can easily be created and used with Fire Tower.

Use Cases

The Hobbyist

If you’re like me, you have a bunch of small apps that you’ve built to do different things and they don’t always get the attention they deserve. Sure, the last one you put out is running Laravel 11 but that one you built a few years ago? Did you upgrade it to 10 yet?

Or, are you also like me and have a bunch Statamic websites, or custom applications, you’ve built for clients that might be a bit behind on updates?

Fire Tower lets you quickly see the specific composer package version each of your applications are running. Quickly know which apps need some TLC, and work towards getting them upgraded.

The Agency

Years ago I helped develop a Laravel package that was 99% of a Laravel application. It was really only deployed as a package to help facilitate easier updates and provide some flexibility as needed with the individual Laravel applications. Over the course of a few years we realized that keeping previous clients up to date with the newest version was a problem. We started trying to keep a spreadsheet, and do other things to keep it straight.

A product like Fire Tower back then would’ve saved us a ton of time and energy. To select specific packages to show on the dashboard just go to your team settings page and choose which focused packages you want.

Pricing

Fire Tower has two pricing options, one for users with only a few applications to monitor and one for advanced users, or agencies, that have more than five applications they want to monitor. The Pro plan also provides an advanced interface for managing applications with multiple servers.

Get 20% off your first month by using the coupon code LARAVELNEWS. This coupon is valid until midnight on Feb 25, 2025.

Setup

Installation

To get started, subscribe to Fire Tower, and install the Fire Tower package into your application:

composer require krakero/firetower

The next step is to run the installer:

php artisan firetower:install

The installer will publish the service provider and config file needed.

Next, we create an application and put our account and application keys into our .env file.

FIRETOWER_ACCOUNT_KEY="laravel-news-4ee4-838a-250aa0fb17f0"
FIRETOWER_APPLICATION_KEY="fire-tower-4181-936f-6f0f3f754ca3"

Once you have all that setup you’re ready to send your report:

php artisan firetower:report

We recommend scheduling the command to run once a week. View our docs for more information on setting this up.

Custom Checks

We have a artisan command to scaffold a check for you:

php artisan make:firetower-check

It will prompt you for a name, and will generate the following file:

<?php
 
namespace App\Checks;
 
use Krakero\FireTower\Checks\Check;
 
class EnsureNightlyDataLoadCheck extends Check
{
public string $name = 'My New Check';
 
public string $description = 'This checks that important data';
 
public function handle(): string
{
 
$this->pass();
 
// Note: This data is stored on the firetower servers.
// PLEASE DO NOT SEND ANY SENSITIVE DATA.
$this->data([
'my_variable' => 8675309
]);
 
return 'Success';
}
}

We’ll make some quick updates to our default check to send over relevant data:

<?php
 
namespace App\Checks;
 
use Krakero\FireTower\Checks\Check;
use App\Models\Order;
 
class EnsureNightlyDataLoadCheck extends Check
{
public string $name = 'Nightly ETL Check';
 
public string $description = 'Validates that the latest daily sales values made it into the application.';
 
public function handle(): string
{
$order = Order::latest()->get();
 
if ($order->created_at > now()->subDay()) {
$this->pass();
 
$this->data([
'newest_order_date' => $order->created_at
]);
 
return 'PASS';
} else {
$this->fail();
 
return 'FAIL';
}
}
}

We’ll then need to add our check to the FireTowerServiceProvider.php file:

<?php
 
namespace App\Providers;
 
use App\Checks\EnsureNightlyDataLoadCheck;
//...
 
class FireTowerServiceProvider extends ServiceProvider
{
public function boot()
{
FireTower::checks(function () {
return [
DebugModeInProductionCheck::check(),
LaravelVersionCheck::check(),
PhpVersionCheck::check(),
//MailConfigInProductionCheck::check(),
//StripeKeyCheck::check()
EnsureNightlyDataLoadCheck::check(),
];
});
}
}

To learn more:

Vince Mitchell photo

Creator of Fire Tower and many other smaller projects. Developing for the web for over 20 years.

Filed in

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article