magidmroueh/scout-apm-lumen

Scout Application Performance Monitoring Agent - https://scoutapm.com

0.1 2020-12-04 07:22 UTC

This package is auto-updated.

Last update: 2024-05-04 14:51:44 UTC


README

License

Monitor the performance of PHP Laravel applications with Scout's PHP APM Agent. Detailed performance metrics and transaction traces are collected once the scout-apm package is installed and configured.

Important: Lumen

To get this working with Lumen, there are a couple of changes you need to make:

  • Ensure $app->register(App\Providers\EventServiceProvider::class); is registered in app.php
  • Add $app->register(\Scoutapm\Laravel\Providers\ScoutApmServiceProvider::class); as the final registered provider in app.php
  • Add the following middleware to the global middleware in app.php:
$app->middleware([
    //These should be the first 3 middlewares in the array
    SendRequestToScout::class,
    IgnoredEndpoints::class,
    MiddlewareInstrument::class,

    //Any other middleware here....

    //Finally, this middleware
    ActionInstrument::class
]);

Requirements

  • PHP Version: PHP 7.1+
  • Laravel Version: 5.5+

Quick Start

A Scout account is required. Signup for Scout.

composer require scoutapp/scout-apm-laravel

Then use Laravel's artisan vendor:publish to ensure configuration can be cached:

php artisan vendor:publish --provider="Scoutapm\Laravel\Providers\ScoutApmServiceProvider"

Configuration

In your .env file, make sure you set a few configuration variables:

SCOUT_KEY=ABC0ZABCDEFGHIJKLMNOP
SCOUT_NAME="My Laravel App"
SCOUT_MONITOR=true

Your key can be found in the Scout organization settings page.

Documentation

For full installation and troubleshooting documentation, visit our help site.

Support

Please contact us at support@scoutapm.com or create an issue in this repo.

Capabilities

The Laravel library:

  • Registers a service \Scoutapm\ScoutApmAgent::class into the container (useful for dependency injection)
  • Provides a Facade \Scoutapm\Laravel\Facades\ScoutApm
  • Wraps view engines to monitor view rendering times
  • Injects several middleware for monitoring controllers and sending statistics to the Scout Core Agent
  • Adds a listener to the database connection to instrument SQL queries

Custom Instrumentation

In order to perform custom instrumentation, you can wrap your code in a call to the instrument method. For example, given some code to be monitored:

$request = new ServiceRequest();
$request->setApiVersion($version);

Using the provided Facade for Laravel, you can wrap the call and it will be monitored.

// At top, with other imports
use Scoutapm\Events\Span\Span;
use Scoutapm\Laravel\Facades\ScoutApm;

// Replacing the above code
$request = ScoutApm::instrument(
    'Custom',
    'Building Service Request',
    static function (Span $span) use ($version) {
        $request = new ServiceRequest();
        $request->setApiVersion($version);
        return $request;
    }
);

Disclaimer

This package is a fork from bitlogicdev/scout-apm-laravel