Laravel Real-Time Controllers monitoring
Tags: php, laravel, productivity
Published: 2020-06-25 15:19:45

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

To help you get faster in identifying which part of the application is in trouble, **we have designed an easy and ready to use way to directly monitor your application controllers and methods.**

Many of us continue to discover bugs and errors in the applications thanks to direct reports by users.

It’s too dangerous today, because when a user reports a problem it's just too late. For a user that report a problem there are many others that simply stop using our application silently, moving to another product that fits their needs better.

Emerging software houses needs to hide bugs and bottlenecks from users eyes as much as possible to provide a better customer experience than the competitors.

A real-time monitoring tool help developers to address this problem, but many tools out there need a lot of resources and time to be installed and configured, making the life of developers more complicated.

Inspector is a composer package to add real-time monitoring in your Laravel application, it's very easy to install and use, and it takes less than one minute to get started.

## Install the composer package

Install our package by running the 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](https://app.inspector.dev/register)) and creating a new application, it takes just a few seconds.

You'll see installation instructions directly in the app screen:

![](https://miro.medium.com/max/1400/1*U7b5eckR5d3QnnS8DvY_iA.png)

Put the API key into your environment file:

```
INSPECTOR_API_KEY=13c37c434XXXXXXXXXXXX
```

## Http Requests Monitoring

To activate inspection when your application is executed by an incoming http request you can use the `WebRequestMonitoring` middleware.

Thanks to the middleware you are free to decide on which routes you want activate execution tracing, based on your routes configuration or on your personal monitoring preferences. `WebRequestMonitoring` middleware works like any other Laravel middleware you are familiar to.

Basically you can attach the middleware in the `App\Http\Kernel` class in one or more of your predefined middleware groups:

```php
/**
 * The application’s route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
   'web' => [
      …,
      \Inspector\Laravel\Middleware\WebRequestMonitoring::class,
   ],
   'api' => [
      …,
      \Inspector\Laravel\Middleware\WebRequestMonitoring::class,
   ]
]
```

## Identify Controller/Method execution

If you prefer to have a clear visibility of what controller and method are executed based on any HTTP request, you can use the code below inside the boot method of one of your ServiceProvider. Maybe the best place could be `EventsServiceProvider`.

```php
use Illuminate\Routing\Events\RouteMatched;

/**
 * Register any events for your application.
 *
 * @return void
 */
public function boot() 
{
   parent::boot();
  /*
   * Changes the way inspector reports transactions in your dashboard.
   */
   Event::listen(RouteMatched::class, function(RouteMatched $event) {
      $name = $event->route->getActionName();
 
      if(inspector()->isRecording()) {
         inspector()->currentTransaction()->name = $name;
      } else {
          inspector()->startTransaction($name);
      }
   });
}
```

This will change the way Inspector reports transactions in your dashboard from `GET /path/{id}` to `YourController@yourMethod`.

![](https://miro.medium.com/max/1400/1*GW9MWta7mHPIeLYlcu8UWw.png)

## Conclusion

Inspector is a simple yet powerful real-time monitoring tool, designed to easy understand how your application processes are performing and get alerted if something goeas wrong.

## 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 inyour 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](https://inspector.dev/laravel/) 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/](https://inspector.dev/laravel/)