Этот пакет интегрирует новичок PHP API в Symfony. Для получения дополнительной информации о Newrelic, пожалуйста, посетите http://newrelic.com. Встроенный новый агент Relic не добавляет столько интеграции Symfony, сколько заявляет. Этот пакет добавляет гораздо больше предметов первой необходимости. Вот быстрый список:
Лучшая стратегия именования транзакций : ваши следы транзакции могут быть точно названы именами маршрутов, именем контроллера или вы можете определить стратегию настраивания именования через бесшовный интерфейс, который использует любое соглашение о именовании, которое вы считаете подходящими. При запуске команд консоли он также устанавливает имя транзакции в качестве имени команды.
Усовершенствования консольных команд : при запуске консольных команд устанавливает параметры и аргументы, передаваемые через CLI в качестве пользовательских параметров для трассировки транзакции для облегчения отладки.
Прослушивание исключений : он также отражает все исключения Symfony в веб -запросах и командах консоли и отправляет их в новую реликвию (что -то новое RELIC не слишком хорошо себя чувствует, поскольку Symfony Agagroving вызывает все исключения/ошибки). Это также гарантирует, что все исключения HTTP (коды 4xx) регистрируются как уведомления в новой реликвии, а не исключения, чтобы уменьшить шум в новой реликвии.
Служба Interactor : он предоставляет вам новый API RELIC PHP агента через сервисный класс NewRelicInteractorInterface::class Итак, в моем коде я могу ввести его в любой класс, контроллер, обслуживание и делать такие вещи, как -
// Bundle
$ this -> newRelic -> addCustomParameter ( ' name ' , ' john ' );
// Extension
if ( extension_loaded ( ' newrelic ' )) {
newrelic_add_custom_parameter ( ' name ' , ' john ' );
}Поддержка регистрации : в разработке у вас вряд ли будет новая настройка реликвии. Существует конфигурация, чтобы включить регистрацию, которая выводит все новые реликвии в ваш журнал Symfony, следовательно, подражая тому, что на самом деле будет делать в производстве.
Игнорируемые маршруты, пути, команды : Вы можете настроить список имени маршрута, пути URL и команд консоли, которые будут проигнорированы из новых реликвий.
MISC : Существует иная полезная конфигурация, например, ваш новый ключ RELIC API, явное определение имени вашего приложения вместо PHP.INI, уведомление о новой реликвии о новых развертываниях через Capifony и т. Д.
Обзор http://newrelic.com ...
$ composer require ekino/newrelic-bundleЗатем зарегистрируйте пакет с помощью ядра:
<?php
// in AppKernel::registerBundles()
$ bundles = array (
// ...
new Ekino NewRelicBundle EkinoNewRelicBundle (),
// ...
);В веб -интерфейсе New Relic, обязательно получите допустимый (REST) API -ключ, чтобы не путать с вашим лицензионным ключом: новая реликвия Dashboard> Настройки учетной записи> Интеграция> Ключи 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) Пакет поставляется с опцией для улучшенного реального мониторинга пользователей. Обычно новое расширение RELIC (если не отключено путем конфигурации) автоматически добавляет код отслеживания для инструментов RUM для всех ответов HTML. Используя усиленные инструменты рома, пакет позволяет выборочно отключить инструменты по определенным запросам.
Это может быть полезно, если, например, вы возвращаете html Vorbatim для редактора HTML.
Если включено усиление инструментов рома, вы можете отключить инструментацию для данного запроса, передавая параметр запроса _instrument и установив его в false . Это можно сделать, например, через конфигурацию маршрутизации.
Пакет поставляется с двумя встроенными стратегиями именования транзакций. route и controller , назвав новую реликвию транзакцию по маршруту или контроллеру соответственно. Тем не менее, пакет поддерживает пользовательские стратегии именования транзакций с помощью опции конфигурации service . Если вы выбрали опцию конфигурации service , вы должны передавать имя своей собственной службы именования транзакций в качестве опции конфигурации transaction_naming_service .
Класс службы именования транзакций должен реализовать интерфейс EkinoNewRelicBundleTransactionNamingStrategyTransactionNamingStrategyInterface . Для получения дополнительной информации о создании ваших собственных услуг см. В документации Symfony по созданию/настройке услуг в контейнере.
Когда вы используете http -кэш Symfony, ваше app/AppCache.php будет создавать ответ со стороны края включения (ESI). Это будет выглядеть как одна транзакция в новой реликвии. Когда вы устанавливаете using_symfony_cache: true , будет ли эти запросы ESI отдельная транзакция, которая улучшает статистику. Если вы используете какой -то другой кеш -обратный прокси или вообще нет, оставьте его false.
Если True требуется для установки application_name .
Вы можете использовать команду 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 , имена срока не поддерживаются API Data REST.
Ключ конфигурации ekino_new_relic.interactor примет идентификатор службы в службу, реализующий NewRelicInteractorInterface . Этот пакет поставляется с несколькими услугами, которые могут подходить для вас.
| Значение конфигурации | Описание |
|---|---|
EkinoNewRelicBundleNewRelicAdaptiveInteractor | Это взаимодействие по умолчанию. Он будет проверять один раз на запрос, если установлено или нет расширение NewRelic PHP или нет. Это декоратор для NewRelicInteractor |
EkinoNewRelicBundleNewRelicNewRelicInteractor | Этот взаимодействие общается с Newrelic. Это тот декоратор, который на самом деле выполняет некоторую работу. |
EkinoNewRelicBundleNewRelicBlackholeInteractor | Этот интерактор ничего не делает. |
auto | Это значение будет проверять, установлено ли расширение NewRelic PHP при создании контейнера. |
Обратите внимание, что если вы установите ekino_new_relic.enabled: false вы всегда будете использовать BlackholeInteractor , независимо от того, какое значение используется для ekino_new_relic.interactor .
setApplicationName , чтобы мы использовали правильный лицензионный ключ и имя.RouterListener может добавить 404 или добавить значения маршрутизации в запрос.setIgnoreTransaction что означает, что мы называем NewRelicInteractorInterface::ignoreTransaction() если мы настроили игнорировать маршрут.setTransactionName , чтобы использовать наш TransactionNamingStrategyInterface , чтобы установить хорошее имя. Все 6 шагов будут выполнены для обычного запроса. Исключения из этого - 404 и 403 ответов, которые будут созданы на шаге 2 и шаге 4 соответственно. Если происходит исключение на этом этапе (я не говорю о Exception ), у вас будет зарегистрирована транзакция с правильным лицензионным ключом, но у вас нет надлежащего имени транзакции. setTransactionName может иметь зависимости от набора данных другими слушателями, поэтому оно имеет такой низкий приоритет.