magidmroueh / scout-apm-lumen
Scout Application Performance Monitoring Agent - https://scoutapm.com
Requires
- php: >=7.1.0,<7.5.0
- illuminate/contracts: ^5.1|^6.0|^7.0|^8.0
- illuminate/http: ^5.1|^6.0|^7.0|^8.0
- illuminate/routing: ^5.1|^6.0|^7.0|^8.0
- illuminate/support: ^5.1|^6.0|^7.0|^8.0
- illuminate/view: ^5.1|^6.0|^7.0|^8.0
- psr/log: ^1.0
- ramsey/uuid: ^3.0|^4.1.1
- scoutapp/scout-apm-php: ^4.2
Requires (Dev)
- doctrine/coding-standard: ^6.0
- laravel/framework: ^5.1|^6.0|^7.0
- mockery/mockery: ^1.2|^1.3
- phpunit/phpunit: ^7.5.15|^8.4
- roave/security-advisories: dev-master
- spatie/phpunit-watcher: ^1.10
- vimeo/psalm: ^3.5
README
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