binogi / laravel-newrelic
Laravel 5 NewRelic 集成
Requires
- php: >=5.5.0
- illuminate/support: 5.*|^6.0|^7.0|^8.0|^9.0
- intouch/newrelic: >=1.0.2
README
Laravel 5 NewRelic 服务提供者
Laravel 版本 | 包标签 | 支持 |
---|---|---|
5.x.x | 2.2.x | 是 |
5.2.x | 2.1.x | 是 |
5.1.x | 2.0.x | 是 |
5.0.x | 2.0.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
配置参数持有此字符串 - 注意,非令牌字符串部分保持不变。
令牌 | 描述 | 示例 |
---|---|---|
{controller} | 控制器/动作名称 | App\Http\Controllers\MyController@action |
{method} | HTTP 方法 | GET, POST |
{route} | 如果命名,则为路由名称,否则为 {controller} | auth.login |
{path} | 已注册的路由路径 | /users/{id?} |
{uri} | 请求 URI 路径 | /users/12345 |
默认的 newrelic.name_provider
字符串为 '{uri} {route}'
。
Eloquent 模型观察者
有两个观察者类用于监控您的 Eloquent 模型,即 NewrelicCountingObserver
和 NewrelicTimingObserver
。正如其名称所暗示的,一个用于统计可观察模型事件发生的次数,另一个收集它们的持续时间(以毫秒为单位)。这些记录的指标将显示在您的 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
是一个您想要关注的事件名的数组。这在计数和计时观察者之间略有不同。对于计数观察者,任何事件都可以独立计数。对于计时观察者,它使用saving
和saved
之间的时间差来提交指标,因此只能观察操作之后的事件:created
、saved
、updated
、deleted
、restored
。这也是为什么不支持自定义可观察事件的原因(暂时不支持……我们正在努力,欢迎提交PR)。
根据NewRelic的“最佳实践”建议,所有指标名都以前缀'Custom/'开头。《计数》观察者也在名字中添加了'Counts/',而《计时》观察者则添加了'Timing/'。两个观察者都将事件名追加到指标名末尾。例如,使用《计数》观察者对User
模型进行created
事件的监控,名称将是:Custom/Counts/App/User/created
(其中App/User
是观察的模型带命名空间的类名,在NewRelic指标路径中斜杠方向相反,或者将是您在$name
中设置的任何内容)。
只要将newrelic.throw_if_not_installed
设置为false
,就可以在集成测试或交互式测试环境中运行这些观察者。如果在该环境中未安装NewRelic PHP Agent,则自定义指标将不会记录。如果在该环境中安装了NewRelic PHP Agent,则将记录指标。
两个观察者默认关注的事件是:created
、saved
、updated
、deleted
、restored
。
注意:要使用观察者,必须在您的应用程序配置中加载Newrelic
外观,而不仅仅是服务提供者。
注意:NewRelic限制您拥有的自定义指标总数为2000,并建议少于1000。
自定义指标仪表板示例
基本使用
此包包括一个到Intouch/Newrelic类的外观。
可以像访问任何其他外观一样访问其任何方法,例如
App::after( function() {
Newrelic::setAppName( 'MyApp' );
} );
...将NewRelic应用程序名称设置为'MyApp'
Laravel 4.x支持
Laravel 版本 | 包标签 | 支持 |
---|---|---|
4.2.x | 1.1.5 | 否 |
4.1.x | 1.1.5 | 否 |
4.0.x | 1.0.4 | 否 |
*我们将审查不受支持的版本的PR,但我们自己不使用这些版本,所以我们没有 | ||
测试/工作在这个版本上* |
问题
在为未按您配置的格式报告的数据打开问题之前,请检查您的NewRelic PHP Agent日志,并请参阅:https://discuss.newrelic.com/t/php-agent-4-19-0-disabled-3rd-party-service-provider-incorrectly/1666
如果这还没有澄清问题,请在此处打开一个问题或向我们发送一个PR。