このバンドルは、NewRelic PHP APIをSymfonyに統合します。 NewRelicの詳細については、http://newrelic.comをご覧ください。組み込みの新しいRelicエージェントは、主張するほど多くのSymfony統合を追加しません。このバンドルは、より多くの必需品を追加します。これが簡単なリストです:
より良いトランザクションネーミング戦略:トランザクショントレースは、ルート名、コントローラー名によって正確に名前を付けることができます。または、適合している命名規則を使用するシームレスなインターフェイスを介してカスタムネーミング戦略を決定できます。コンソールコマンドを実行している間、トランザクション名をコマンド名として設定します。
コンソールコマンドの拡張機能:コンソールコマンドの実行中、CLIを介して渡されたオプションと引数をカスタムパラメーターとしてトランザクショントレースに設定し、デバッグを容易にします。
例外リスニング:また、WebリクエストとコンソールコマンドですべてのSymfonyの例外をキャプチャし、それらを新しい遺物に送信します(Symfonyがすべての例外/エラーを積極的にキャッチするため、新しい遺物はあまりうまくいきません)。また、すべてのHTTP例外(4XXコード)が、新しい遺物のノイズを減らすための例外ではなく、新しい遺物の通知として記録されることを保証します。
インタラクターサービス:サービスクラスNewRelicInteractorInterface::classを介して新しいRelic PHPエージェントAPIを提供するため、コードでは、任意のクラス、コントローラー、サービスに注入し、次のようなものを行うことができます。
// Bundle
$ this -> newRelic -> addCustomParameter ( ' name ' , ' john ' );
// Extension
if ( extension_loaded ( ' newrelic ' )) {
newrelic_add_custom_parameter ( ' name ' , ' john ' );
}ロギングサポート:開発中に、新しい遺物のセットアップがありそうにありません。すべての新しい遺物アクションをSymfonyログに出力するロギングを有効にする構成があり、それが実際に生産で行うことをエミュレートします。
無視されたルート、パス、コマンド:新しい遺物トレースから無視されるルート名、URLパス、およびコンソールコマンドのリストを構成できます。
その他:新しいRelic APIキーのような他の便利な構成があり、PHP.iniの代わりにアプリ名を明示的に定義し、Capifonyを介した新しい展開について新しいRelicに通知します。
http://newrelic.comを確認してください...
$ composer require ekino/newrelic-bundle次に、カーネルにバンドルを登録します。
<?php
// in AppKernel::registerBundles()
$ bundles = array (
// ...
new Ekino NewRelicBundle EkinoNewRelicBundle (),
// ...
);New RelicのWebインターフェイスでは、ライセンスキーと混同しないでください。
# 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) バンドルには、実際のユーザー監視を強化するためのオプションが付属しています。通常、新しいRELIC拡張機能(構成によって無効になっていない限り)は、すべてのHTML応答にラム装置のトラッキングコードを自動的に追加します。強化されたラムムートインストゥルメンテーションを使用すると、バンドルを使用すると、特定のリクエストで計装を選択的に無効にできます。
これは、HTMLエディターのhtml verbatimを返している場合に役立ちます。
強化されたラムムートインストゥルメンテーションが有効になっている場合、 _instrument要求パラメーターを渡してfalseに設定することにより、特定の要求の機器を無効にすることができます。これは、ルーティング構成を介して実行できます。
バンドルには、2つの組み込みのトランザクションネーミング戦略が付属しています。 routeとcontroller 、それぞれルートまたはコントローラーにちなんで新しいRelicトランザクションに名前を付けます。ただし、バンドルは、 service構成オプションを介してカスタムトランザクションネーミング戦略をサポートしています。 service構成]オプションを選択した場合は、 transaction_naming_service構成オプションとして、独自のトランザクションネーミングサービスの名前を渡す必要があります。
トランザクションネーミングサービスクラスはEkinoNewRelicBundleTransactionNamingStrategyTransactionNamingStrategyInterfaceインターフェイスを実装する必要があります。独自のサービスの作成の詳細については、コンテナ内のサービスの作成/構成に関するSymfonyドキュメントを参照してください。
SymfonyのHTTPキャッシュを使用している場合app/AppCache.phpは、エッジ側を含むエッジ側で応答を構築します。これは、新しい遺物の1つのトランザクションのようになります。 seetを使用してusing_symfony_cache: trueを設定すると、これらのESI要求は統計を改善する個別のトランザクションになります。他の逆プロキシキャッシュを使用している場合、またはキャッシュがまったくない場合は、これをfalseのままにしてください。
application_nameを設定するにはtrueが必要な場合。
newrelic:notify-deploymentコマンドを使用して、展開通知をNew Relicに送信できます。これには、 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
このバンドルは、展開通知を自動化するための指定レシピを提供します( Resources/recipes/newrelic.rbを参照)。
app_nameごとに1つのリクエストを行います。デューロールアップ名は、データREST APIによってサポートされていません。
config key ekino_new_relic.interactor 、 NewRelicInteractorInterfaceを実装するサービスへのサービスIDを受け入れます。このバンドルには、あなたに適したいくつかのサービスが付属しています。
| 構成値 | 説明 |
|---|---|
EkinoNewRelicBundleNewRelicAdaptiveInteractor | これがデフォルトのインタラクターです。 NewRelic PHP拡張機能がインストールされているかどうかは、リクエストごとに1回チェックします。 NewRelicInteractorのデコレーターです |
EkinoNewRelicBundleNewRelicNewRelicInteractor | このインタラクターは、NewRelicと通信します。実際にいくつかの作業を行うのは1つのデコレーターです。 |
EkinoNewRelicBundleNewRelicBlackholeInteractor | このインタラクターは何もしません。 |
auto | この値は、コンテナを構築するときにNewRelic 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 、他のリスナーによるデータセットに依存している可能性があります。そのため、優先度が低い理由です。