bitlogicdev / scout-apm-laravel
Scout Application Performance Monitoring Agent - https://scoutapm.com
Requires
- php: >=7.1.0,<7.5.0
- illuminate/contracts: ^5.1|^6.0|^7.0
- illuminate/http: ^5.1|^6.0|^7.0
- illuminate/routing: ^5.1|^6.0|^7.0
- illuminate/support: ^5.1|^6.0|^7.0
- illuminate/view: ^5.1|^6.0|^7.0
- psr/log: ^1.0
- ramsey/uuid: ^3.0|^4.0
- scoutapp/scout-apm-php: ^4.4
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
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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::classinto 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; } );