avioral/laravel-newrelic

Laravel 5 NewRelic 集成

2.5.0 2021-05-31 15:49 UTC

README

以下为 Laravel 4.x 支持信息

安装

请参考上表中的软件包版本信息,并相应地更改下面的版本。

使用 composer,运行

composer require intouch/laravel-newrelic:"~2.0"

或将 intouch/laravel-newrelic 添加到您的 composer 需求中

"require": {
    "intouch/laravel-newrelic": "~2.0"
}

... 然后运行 composer install

安装软件包后,打开您的 config/app.php 配置文件,找到 providers 键。将以下行添加到末尾

Intouch\LaravelNewrelic\NewrelicServiceProvider::class,

可选地,找到 aliases 键,并添加以下行

'Newrelic' => Intouch\LaravelNewrelic\Facades\Newrelic::class,

最后,发布默认配置(它将出现在 config/newrelic.php 中)

php artisan vendor:publish --provider="Intouch\LaravelNewrelic\NewrelicServiceProvider"

配置

发布软件包的配置后,请参阅 config/newrelic.php 了解配置选项和描述。

事务名称

命名是通过将 name_provider 字符串中的标记替换为从应用程序收集的格式化输出来完成的。该 newrelic.name_provider 配置参数包含此字符串 - 注意,非标记字符串部分保持不变。

默认的 newrelic.name_provider 字符串是 '{uri} {route}'

Eloquent 模型观察者

有两个观察者类用于监控您的 Eloquent 模型,即 NewrelicCountingObserverNewrelicTimingObserver。正如它们的名称所暗示的,一个用于统计可观察模型事件发生的次数,另一个用于收集它们的持续时间(以毫秒为单位)。这些记录的度量将显示在您的 NewRelic 自定义度量中。

NewrelicCountingObserver 可以用于任何可观察的模型事件,包括您自定义的事件。目前 NewrelicTimingObserver 仅支持内置的 Eloquent 可观察事件(请参阅 Laravel 文档中的 模型事件)。

使用观察者很简单 - 在您选择注册模型观察者的地方,只需添加

User::observe(new \Intouch\LaravelNewrelic\Observers\NewrelicTimingObserver() );
User::observe(new \Intouch\LaravelNewrelic\Observers\NewrelicCountingObserver() );

... 假设您想观察 User 模型。

两个观察者都接受两个可选参数给它们的构造函数:$name$care$name 是您要为自定义度量给出的名称,如果未设置,则默认为观察的模型对象的类名。如果您想更改 $care 数组而不更改命名,只需将 null 作为第一个构造函数参数传递。

$care 是您想要关注的事件名称数组。这在 CountingTiming 观察者之间略有不同。对于 Counting 观察者,任何事件都可以独立计数。对于 Timing 观察者,它使用 savingsaved 之间的时间差来提交度量,因此只能观察操作后的事件:createdsavedupdateddeletedrestored。这也是为什么目前不支持 Timing 观察者的自定义可观察事件(我们正在努力改进,欢迎提交 PR)。

根据NewRelic的“最佳实践”建议,所有指标名称都以前缀'Custom/'开头。计数观察者Counting也会在名称前添加'Counts/',而时间观察者Timing会在名称前添加'Timing/'。这两个观察者都会将事件名称追加到指标名称的末尾。以计数观察者Counting为例,在监控User模型的created事件时,名称将是:Custom/Counts/App/User/created(其中App/User是观察的模型命名的命名空间类名,路径中的斜杠被反转以用于NewRelic指标路径,或者如果提供了$name,将是您设置的任何内容)。

只要将newrelic.throw_if_not_installed设置为false,就可以在集成测试或交互式测试环境中安全地运行这些观察者。然后,如果在该环境中未安装NewRelic PHP Agent,自定义指标将简单地不会记录。如果在该环境中安装了NewRelic PHP Agent,指标将被记录。

两个观察者都关注的默认事件是:createdsavedupdateddeletedrestored

注意:要使用观察者,必须在您的应用程序配置中加载Newrelic Facade,而不仅仅是服务提供者。

注意:NewRelic限制您拥有的自定义指标总数为2000,并建议少于1000。

自定义指标仪表板示例

dashboard

基本用法

此包包括对Intouch/Newrelic类的Facade。
您可以通过与其他Facade相同的方式访问其任何方法,例如

App::after( function() {
    Newrelic::setAppName( 'MyApp' );
} );

... 将设置NewRelic应用程序名称为'MyApp'

Laravel 4.x支持

问题

在为未以您配置的格式报告的数据提交问题之前,请检查您的NewRelic PHP Agent日志,并请参阅:https://discuss.newrelic.com/t/php-agent-4-19-0-disabled-3rd-party-service-provider-incorrectly/1666

如果这还没有解决问题,请在此处提交问题或发送给我们一个PR。