scoutapp / scout-apm-laravel
Scout 应用性能监控代理 - https://scoutapm.com
Requires
- illuminate/contracts: ^5.5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^5.5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/routing: ^5.5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^5.5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/view: ^5.5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- scoutapp/scout-apm-php: ^8.0
This package is auto-updated.
Last update: 2024-09-10 14:27:44 UTC
README
使用 Scout 的 PHP APM 代理监控 PHP Laravel 应用程序的性能。安装并配置 scout-apm 包后,将收集详细性能指标和事务跟踪。
要求
- PHP 版本:PHP 7.2+(推荐 PHP 8.3+)
- Laravel 版本:5.5+
快速入门
需要 Scout 账户。 注册 Scout。
composer require scoutapp/scout-apm-laravel
然后使用 Laravel 的 artisan vendor:publish
确保配置可以缓存
php artisan vendor:publish --provider="Scoutapm\Laravel\Providers\ScoutApmServiceProvider"
配置
在你的 .env
文件中,确保设置一些配置变量
SCOUT_KEY=ABC0ZABCDEFGHIJKLMNOP
SCOUT_NAME="My Laravel App"
SCOUT_MONITOR=true
你的密钥可以在 Scout 组织设置页面 找到。
日志详细程度
一旦设置好 Scout 并确认一切正常工作,你可以减少库的日志系统的详细程度。库默认情况下故意非常嘈杂,这为我们提供了更多支持客户的信息,如果有什么问题。然而,如果一切按预期工作,可以通过将配置密钥 log_level
设置为更高的 Psr\Log\LogLevel
来减少这些日志。例如,如果你使用 .env
配置
SCOUT_LOG_LEVEL=error
或者如果你使用 config/scout_apm.php
$config[\Scoutapm\Config\ConfigKey::LOG_LEVEL] = \Psr\Log\LogLevel::ERROR;
\Psr\Log\LogLevel
中定义的任何常量都可以作为此配置选项的值。
Laravel 11 错误处理
在 Laravel 11 中,App\Exceptions\Handler
方法已被弃用,并在配置应用程序时在 bootstrap/app.php
中添加了新的方法 withExceptions()
。为了使 Scout APM 错误处理能够捕获未捕获的异常,你应该添加适当的 Scout APM 调用,例如
return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // ... }) ->withExceptions(function (Exceptions $exceptions) { // Add the following call to enable uncaught exceptions in Scout APM error reporting: $exceptions->reportable(function (Throwable $e) { app()->make(\Scoutapm\ScoutApmAgent::class)->recordThrowable($e); }); })->create();
文档
有关完整安装和故障排除文档,请访问我们的 帮助网站。
支持
请联系我们至 support@scoutapm.com 或在此存储库中创建一个问题。
功能
The Laravel library
- 在容器中注册服务
\Scoutapm\ScoutApmAgent::class
(用于依赖注入) - 提供 Facade
\Scoutapm\Laravel\Facades\ScoutApm
- 包装视图引擎以监控视图渲染时间
- 注入中间件以监控控制器并将统计信息发送到 Scout Core 代理
- 向数据库连接添加监听器以监控 SQL 查询
自定义监控
为了执行自定义监控,你可以将代码包装在对 instrument
方法的调用中。例如,给定一些要监控的代码
$request = new ServiceRequest(); $request->setApiVersion($version);
使用为 Laravel 提供的 Facade,你可以包装调用,它将被监控。
// 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; } );