nordsoftware / lumen-newrelic
Lumen框架的New Relic工具包
Requires
- php: ^7.2 | ^8.0
- illuminate/support: ^5.5 | ^6.0 | ^7.0 | ^8.0 | ^9.0
- intouch/newrelic: ^1.0 | ^2.0
- nordsoftware/lumen-chained-exception-handler: ^3.0
Requires (Dev)
- laravel/lumen-framework: ^5.5|^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9
README
此库为Lumen框架提供New Relic工具包。安装此库后,将确保您的交易被正确命名,并且异常在New Relic中得到正确记录。
要求
用法
安装
运行以下命令通过Composer安装包:
composer require nordsoftware/lumen-newrelic
配置
如果您愿意依赖newrelic.ini文件的内容,则无需设置任何配置值。然而,您可以通过环境变量或.env文件覆盖许可证和应用程序名称。如果您在多个环境中部署相同的应用程序,并且因此需要为每个环境使用不同的名称,这可能会很有用。
请注意,这样做可能会对应用程序产生轻微的性能影响。
可用的环境变量有:
NEW_RELIC_OVERRIDE_INI
(默认为false
)NEW_RELIC_APP_NAME
NEW_RELIC_LICENSE_KEY
如果您未将NEW_RELIC_OVERRIDE_INI
设置为true
,则无论其他两个变量的值如何,应用程序都不会覆盖newrelic.ini文件。
查看/config/newRelic.php
中的说明以了解其影响。
引导
在bootstrap/app.php
中,将注册异常处理程序的$app->singleton()
调用替换为以下代码片段
$app->instance( Illuminate\Contracts\Debug\ExceptionHandler::class, new Nord\Lumen\ChainedExceptionHandler\ChainedExceptionHandler( new \App\Exceptions\Handler(), [new Nord\Lumen\NewRelic\NewRelicExceptionHandler()] ) );
这将确保异常被正确地报告给New Relic。
现在,添加中间件
$app->middleware([ ... Nord\Lumen\NewRelic\NewRelicMiddleware::class, ]);
这将确保事务被正确命名。
最后,注册服务提供者
$app->register(Nord\Lumen\NewRelic\NewRelicServiceProvider::class);
忽略某些异常
默认情况下,异常处理程序会忽略类型为Symfony\Component\HttpKernel\Exception\NotFoundHttpException
的异常。您可以通过向异常处理程序的构造函数传递一个数组来自定义要忽略的异常列表
$exceptionHandler = new Nord\Lumen\NewRelic\NewRelicExceptionHandler([ FooException::class, BarException::class, ]);
如果您不希望忽略任何异常,则向构造函数传递一个空数组。
自定义事务名称
默认情况下,事务名称将使用分配给路由的controller@action
。如果失败,它将使用路由的名称。如果没有定义名称,它将回退到index.php
。
如果这不满足您的需求,则扩展Nord\Lumen\NewRelic\NewRelicMiddleware
类并覆盖getTransactionName()
方法,然后注册该中间件类。
将事务标记为后台作业
如果您为网络钩子、通知或其他长时间运行的背景任务设有专用路由,可以将 Nord\Lumen\NewRelic\NewRelicBackgroundJobMiddleware
应用到该路由。这将把事务标记为 New Relic 中的后台作业,以便长时间处理时间不会扭曲您的响应时间图表。
运行测试
通过运行以下命令来克隆项目和安装其依赖项:
composer install
运行以下命令以运行测试套件:
vendor/bin/phpunit
许可证
请参阅 LICENSE