這個捆綁包將新的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可能對其他偵聽器對數據集具有依賴性,這就是為什麼優先級如此之低的原因。