这个捆绑包将新的PHP API集成到Symfony中。有关Newrelic的更多信息,请访问http://newrelic.com。内置的新遗物代理没有添加那么多的符号集成。这个捆绑包增加了更多的必需品。这是一个快速列表:
更好的交易命名策略:您的交易轨迹可以通过路由名称,控制器名称准确命名,也可以通过使用您认为合适的任何命名约定的无缝接口来确定自定义命名策略。在运行控制台命令时,它还将事务名称设置为命令名称。
控制台命令增强功能:在运行控制台命令时,将通过CLI传递的选项和参数作为交易跟踪的自定义参数,以便更轻松地调试。
异常侦听:它还捕获了Web请求和控制台命令中的所有Symfony例外,并将其发送到New Relic(新遗物的事情本身并不能力,因为Symfony会积极捕获所有异常/错误)。它还确保将所有HTTP异常(4xx代码)记录为新遗物中的通知,而不是减少新遗物中的噪声。
Interactor Service :它通过服务类NewRelicInteractorInterface::class为您提供新的Relic PHP代理API,因此在我的代码中,我可以将其注入任何类,控制器,服务和执行诸如 -
// Bundle
$ this -> newRelic -> addCustomParameter ( ' name ' , ' john ' );
// Extension
if ( extension_loaded ( ' newrelic ' )) {
newrelic_add_custom_parameter ( ' name ' , ' john ' );
}记录支持:在开发中,您不太可能拥有新的遗物设置。有一种配置可以启用日志记录,该记录将所有新的遗物动作输出到您的Symfony日志中,从而模拟其在生产中的实际作用。
忽略的路由,路径,命令:您可以从新的遗物痕迹中配置路由名称,URL路径和控制台命令的列表。
MISC :还有其他有用的配置,例如您的新遗物API密钥,明确定义您的应用程序名称而不是php.ini,并通过Capifony等通知有关新部署的新遗物。
评论http://newrelic.com ...
$ composer require ekino/newrelic-bundle然后用您的内核注册捆绑包:
<?php
// in AppKernel::registerBundles()
$ bundles = array (
// ...
new Ekino NewRelicBundle EkinoNewRelicBundle (),
// ...
);在New Relic的Web界面中,请确保获得有效的(REST)API密钥,不要与您的许可证密钥相混淆:New Relic Dashboard>“帐户设置”> Integration> API键
# app/config/config.yml
ekino_new_relic :
enabled : true # Defaults to true
application_name : Awesome Application # default value in newrelic is "PHP Application", or whatever is set
# as php ini-value
deployment_names : ~ # default value is 'application_name', supports string array or semi-colon separated string
api_key : # New Relic API
api_host : ~ # New Relic API Host (default value is api.newrelic.com, for EU should be set to api.eu.newrelic.com )
license_key : # New Relic license key (optional, default value is read from php.ini)
xmit : false # if you want to record the metric data up to the point newrelic_set_appname is called, set this to true (default: false)
logging : false # If true, logs all New Relic interactions to the Symfony log (default: false)
interactor : ~ # The interactor service that is used. Setting enabled=false will override this value
twig : true # Allows you to disable twig integration (falls back to class_exists(Twig_Environment::class))
exceptions : true # If true, sends exceptions to New Relic (default: true)
deprecations : true # If true, reports deprecations to New Relic (default: true)
instrument : false # If true, uses enhanced New Relic RUM instrumentation (see below) (default: false)
http :
enabled : true
using_symfony_cache : false # Symfony HTTP cache (see below) (default: false)
transaction_naming : route # route, controller or service (see below)
transaction_naming_service : ~ # Transaction naming service (see below)
ignored_routes : [] # No transaction recorded for this routes
ignored_paths : [] # No transaction recorded for this paths
monolog :
enabled : false # When enabled, send application's logs to New Relic (default: disabled)
channels : [app] # Channels to listen (default: null). [See Symfony's documentation](http://symfony.com/doc/current/logging/channels_handlers.html#yaml-specification)
level : error # Report only logs higher than this level (see PsrLogLogLevel) (default: error)
service : app.my_custom_handler # Define a custom log handler (default: ekino.new_relic.monolog_handler)
commands :
enabled : true # If true, logs CLI commands to New Relic as Background jobs (>2.3 only) (default: true)
ignored_commands : [] # No transaction recorded for this commands (background tasks) 该捆绑包具有增强实际用户监视的选项。通常,新的遗物扩展名(除非通过配置禁用)会自动将朗姆酒仪器的跟踪代码添加到所有HTML响应中。使用增强的朗姆酒仪器,该捆绑包使您可以根据某些请求选择性地禁用仪器。
如果您要返回HTML编辑器的html逐字化,这可能很有用。
如果启用了增强的朗姆酒仪器,则可以通过传递_instrument请求参数并将其设置为false来禁用给定请求的仪器。可以通过路由配置完成。
该捆绑包具有两种内置交易命名策略。 route和controller ,分别在路线或控制器之后命名新的遗物交易。但是,捆绑包通过service配置选项支持自定义交易命名策略。如果您选择了service配置选项,则必须将自己的事务命名服务的名称作为transaction_naming_service配置选项。
交易命名服务类必须实现EkinoNewRelicBundleTransactionNamingStrategyTransactionNamingStrategyInterface接口。有关创建自己的服务的更多信息,请参见有关在容器中创建/配置服务的Symfony文档。
当您使用Symfony的HTTP缓存时,您的app/AppCache.php将在边缘侧构建响应,包括(esi)。这看起来像是新遗物中的一笔交易。当您using_symfony_cache: true ,这些ESI请求将是单独的事务,可以改善统计信息。如果您使用的是其他一些反向代理缓存或根本没有缓存,请将其置于false。
如果需要设置application_name则需要true。
您可以使用newrelic:notify-deployment命令将部署通知发送到新遗物。这需要设置api_key配置。
该命令具有许多选项,如帮助数据中所示。
$ app/console newrelic:notify-deployment --help
Usage:
newrelic:notify-deployment [--user[="..."]] [--revision[="..."]] [--changelog[="..."]] [--description[="..."]]
Options:
--user The name of the user/process that triggered this deployment
--revision A revision number (e.g., git commit SHA)
--changelog A list of changes for this deployment
--description Text annotation for the deployment — notes for you
该捆绑包提供了一种自动化部署通知的Capifony食谱(请参阅Resources/recipes/newrelic.rb )。
它每个app_name提出一个请求,数据REST API不支持适当的汇总名称。
config键ekino_new_relic.interactor将接受实现NewRelicInteractorInterface的服务的服务ID。该捆绑包配有一些可能适合您的服务。
| 配置值 | 描述 |
|---|---|
EkinoNewRelicBundleNewRelicAdaptiveInteractor | 这是默认交互器。是否安装了新的PHP扩展名,它将检查一次。它是NewRelicInteractor的装饰器 |
EkinoNewRelicBundleNewRelicNewRelicInteractor | 该交互者与newrelic通信。这是一个实际上可以做一些工作的装饰师。 |
EkinoNewRelicBundleNewRelicBlackholeInteractor | 这个互动者什么都不做。 |
auto | 此值将检查构建容器时是否安装了新的PHP扩展名。 |
请注意,如果您设置ekino_new_relic.enabled: false ,无论ekino_new_relic.interactor使用哪种值,您将始终使用BlackholeInteractor互动器。
setApplicationName ,以便我们使用正确的许可证密钥和名称。RouterListener可能会抛出404或向请求添加路由值。setIgnoreTransaction这意味着如果我们配置为忽略路线,我们将调用NewRelicInteractorInterface::ignoreTransaction() 。setTransactionName使用我们的TransactionNamingStrategyInterface设置一个不错的名称。所有6个步骤将用于正常请求。此例外是将在步骤2和步骤4中创建的404和403响应。如果发生这些步骤的例外情况(我不是在谈论Exception ),则将带有正确的许可证密钥的事务,但您没有正确的交易名称。 setTransactionName可能对其他侦听器对数据集具有依赖性,这就是为什么优先级如此之低的原因。