lupferjoel / lumen-newrelic
Lumen框架的新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
- lupferjoel/lumen-chained-exception-handler: ^4.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()
方法,然后注册该中间件类。
将事务标记为后台作业
如果您有一个用于webhooks、通知或其他长时间运行的后台任务的专用路由,可以将Nord\Lumen\NewRelic\NewRelicBackgroundJobMiddleware
应用于相关路由。这将使New Relic将事务标记为后台作业,这样长时间的处理器时间就不会歪曲您的响应时间图。
运行测试
克隆项目并通过运行以下命令安装其依赖项:
composer install
运行以下命令以运行测试套件:
vendor/bin/phpunit
许可证
请参阅LICENSE