Laravel background jobs & commands monitoring with Inspector

Valerio Barbera

Have you ever desired to see your code running, instead of being able to just imagine it?

Hi, I’m Valerio software engineer from Italy and CTO at Inspector.

As product owner I learned on my skin how an application issue can be so hard to fix, creating a negative impact on the users experience, or block new potential customers during on-boarding.

In this article I’ll show you how to turn on the light in the dark side of your application: “background Jobs and scheduled Artisan commands execution”.

Laravel background jobs: How it works

Laravel provide a great architecture for queued Jobs and scheduled cron tasks. I myself use them a lot. They allow us to execute some piece of code asynchronously in the background out of a classic HTTP request cycle.

Often they are a cause of concern for developers because their execution is not related to direct user interaction. They can go wrong for days and there would be no way of knowing it until we manually check their results typically inside logs.

If something goes wrong during an HTTP request it will appear red bubbles or messages that inform user immediately of the problem. It’s quite easy to discover relevant errors before release the software in production by automated tests, or using the application yourself.

If a queued Jobs or a scheduled Artisan command fails he will do it silently, without anyone noticing.

The tweet below has caught my attention:

I understand this concern and live it every day trying to do the best I can to avoid unpredictable errors or bottlenecks.

We make software; automation is in our DNA, but here is the trap. We are always focused on how to automate our customers’ work and we forget that we can do the same (or even better) with our own.

Inspector is a composer package to add real-time monitoring in Laravel applications, it’s very easy to install and use, and it takes just two minutes to get started.

Let me show you how it works.

Installing Inspector

Run the composer command below in your terminal:

composer require inspector-apm/inspector-laravel

Configure the API key

Get a fresh API key by signing up for Inspector (https://app.inspector.dev/register) and creating a new application, it takes just a few seconds.

Select and copy the API key:

Put the API key in your environment file:

INSPECTOR_API_KEY=xxxxxxxxxxxxxxxxxx

Laravel background process

By default Inspector will monitor all background tasks:

  • Queued Jobs
  • Scheduled Artisan commands
  • Unhandled Exceptions

You can also monitor your application when it is executed due to an incoming HTTP request. You can read more about HTTP monitoring in the official documentation: https://docs.inspector.dev/platforms/laravel/http-requests-monitoring

Instantly you will see transaction streams in your project’s dashboard:

and for each transaction you can monitor what your application is executing in real-time:

Laravel custom analytics

Thanks to Inspector you are able to put everything you want in your timeline getting a real-time feedback about the execution of a code block inside your Job or in an Artisan command.

Suppose to run an external http request in your code that by default is not present in the timeline. Use Inspector facade:

$segment = \Inspector::startSegment('http');
$guzzleClient->get('https://www.example.com');
$segment->end();

This will produce a new segment in the timeline and now you can understand what your code is executing and its performance in real time:

Exceptions Alerting

By default, every unhandled exception fired in your Laravel app will be reported automatically to be sure you’re alerted for unpredictable errors in real time.

I wish that every change I make to my code could be perfect. But the reality is, this is not always the case. Some errors appear immediately after an update, while others pop up unpredictably.

However, Inspector automates the detection of unknown issues especially in background tasks where it’s even more tricky to investigate, so I no longer need to manually check the status of my apps continuously or wait reports directly from users.

Inspector allows you to report an exception manually if you want be aware of it:

try {
    $segment = Inspector::startSegment('http');    
    $guzzleClient->get('https://www.example.com');

} catch (GuzzleException $exception) {
    Inspector::reportException($exception);
} finally {
    $segment->end();
}

If something goes wrong in your code you will be alerted in real time in your inbox and the exception will be monitored for all subsequent occurrences:

Conclusion

When background Jobs or scheduled commands are involved getting a true picture of what’s happening can require hours or, based on my experience, even days. Inspector can make a huge difference in terms of efficiency and productivity.

New to Inspector?

Create a monitoring environment specifically designed for software developers avoiding any server or infrastructure configuration that many developers hate to deal with.

Thanks to Inspector, you will never have the need to install things at the server level or make complex configuration in your cloud infrastructure.

Inspector works with a lightweight software library that you can install in your application like any other dependencies. In case of Laravel you have our official Laravel package at your disposal. Developers are not always comfortable installing and configuring software at the server level, because these installations are out of the software development lifecycle, or are even managed by external teams.

Visit our website for more details: https://inspector.dev/laravel/

Related Posts

How to configure HTTPS in Laravel Homestead

How to enable HTTPS in Laravel Homestead

Hi, I’m Valerio Barbera, software engineer, founder and CTO at Inspector. In this article I’ll show you how to enable HTTPS for your local applications served by Homestead. I met this need because I am working to implement browser notifications for Inspector using Pusher/Beams. But Beams requires that the application be necessarily served over HTTPS.

Laravel cron scheduling and its secrets

Hi, I’m Valerio Barbera, software engineer, founder and CTO at Inspector. Laravel tasks scheduling is one of the most useful features of the framework.The official documentation clearly explains what it is for: In the past, you may have written a cron configuration entry for each task you needed to schedule on your server. However, this

Laravel validation and custom rules in Inspector

Hi, I’m Valerio Barbera, software engineer, founder and CTO at Inspector. Data validation is one of the fundamental features in any application and it is something developers manipulate almost every day. The value a software provides to users is often a function of the quality of data it is able to manage. Laravel ships with

How to build scalable applications

Read the best news, tips and other direct in your inbox