Este pacote integra a API PHP newrelic à Symfony. Para mais informações sobre o Newrelic, visite http://newrelic.com. O novo agente de relíquia embutido não adiciona tanta integração do Symfony quanto afirma. Este pacote acrescenta muito mais itens essenciais. Aqui está uma lista rápida:
Melhor estratégia de nomeação de transações : seus traços de transação podem ser nomeados com precisão pelos nomes de rotas, o nome do controlador ou você pode decidir sobre uma estratégia de nomeação personalizada por meio de uma interface perfeita que usa qualquer convenção de nomenclatura que você considerar adequado. Ao executar comandos do console, ele também define o nome da transação como o nome do comando.
Comandos do console aprimorados : Ao executar comandos do console, ele define as opções e argumentos passados pela CLI como parâmetros personalizados para o rastreamento da transação para facilitar a depuração.
Exceção Audição : ele também captura todas as exceções do Symfony em solicitações da Web e comandos de console e os envia para uma nova relíquia (algo que nova relíquia não se sai muito bem, pois a Symfony captura agressivamente todas as exceções/erros). Ele também garante que todas as exceções HTTP (códigos 4xx) sejam registrados como avisos em novas relíquias e não exceções para reduzir o ruído em uma nova relíquia.
Serviço de Inteator : fornece a nova API do Relic PHP Agent através de uma classe de serviço NewRelicInteractorInterface::class
// Bundle
$ this -> newRelic -> addCustomParameter ( ' name ' , ' john ' );
// Extension
if ( extension_loaded ( ' newrelic ' )) {
newrelic_add_custom_parameter ( ' name ' , ' john ' );
}Suporte de registro : no desenvolvimento, é improvável que você tenha uma nova configuração de relíquia. Há uma configuração para ativar o registro que gera todas as novas ações relíquias para o seu log do Symfony, imitando o que realmente faria na produção.
Rotas ignoradas, caminhos, comandos : você pode configurar uma lista de nomes de rota, caminhos de URL e comandos de console a serem ignorados a partir de novos rastreios de relíquias.
Misc : Existem outras configurações úteis, como sua nova chave de API Relic, definindo explicitamente o nome do seu aplicativo em vez do Php.ini, notificando uma nova relíquia sobre novas implantações via Capifony, etc.
Revise http://newrelic.com ...
$ composer require ekino/newrelic-bundleEm seguida, registre o pacote com seu kernel:
<?php
// in AppKernel::registerBundles()
$ bundles = array (
// ...
new Ekino NewRelicBundle EkinoNewRelicBundle (),
// ...
);Na interface da web da New Relic, certifique -se de obter uma chave de API válida (REST), para não ser confundida com sua chave de licença: Novo Painel de Relic> Configurações da conta> Integração> API Keys
# 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) O pacote vem com uma opção para um monitoramento real do usuário real. Normalmente, a nova extensão Relic (a menos que seja desativada por configuração) adiciona automaticamente um código de rastreamento para instrumentação de rum a todas as respostas HTML. Usando instrumentação aprimorada de rum, o pacote permite desativar seletivamente a instrumentação em determinadas solicitações.
Isso pode ser útil se, por exemplo, você estiver retornando html literalmente para um editor HTML.
Se a instrumentação aprimorada de rum estiver ativada, você poderá desativar a instrumentação para uma determinada solicitação, passando um parâmetro de solicitação _instrument e configurando -o como false . Isso pode ser feito, por exemplo, através da configuração de roteamento.
O pacote vem com duas estratégias de nomeação de transações internas. route e controller , nomeando a nova transação de relíquia após a rota ou controlador, respectivamente. No entanto, o pacote suporta estratégias de nomeação de transações personalizadas por meio da opção de configuração service . Se você selecionou a opção de configuração service , deve passar o nome do seu próprio serviço de nomeação de transações como a opção de configuração transaction_naming_service .
A classe de serviço de nomeação da transação deve implementar a interface EkinoNewRelicBundleTransactionNamingStrategyTransactionNamingStrategyInterface . Para obter mais informações sobre como criar seus próprios serviços, consulte a documentação do Symfony sobre como criar/configurar serviços no contêiner.
Quando você estiver usando o cache http do Symfony, seu app/AppCache.php criará uma resposta com o lado da borda inclui (ESI). Isso parecerá uma transação em nova relíquia. Quando você define using_symfony_cache: true do uso da transação separada, o que melhora as estatísticas. Se você estiver usando outro cache de proxy reverso ou nenhum cache, deixe isso como falso.
Se true for necessário para definir o application_name .
Você pode usar o comando newrelic:notify-deployment para enviar notificações de implantação para a nova relíquia. Isso requer que a configuração api_key seja definida.
O comando tem várias opções, conforme exibido nos dados de ajuda.
$ 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
O pacote fornece uma receita de capifonia para automatizar as notificações de implantação (consulte Resources/recipes/newrelic.rb ).
Ele faz uma solicitação por app_name , os nomes de vencimento não são suportados pela API Rest Data Rest.
A chave de configuração ekino_new_relic.interactor aceitará um ID de serviço para um serviço que implementa NewRelicInteractorInterface . Este pacote vem com alguns serviços que podem ser adequados para você.
| Valor de configuração | Descrição |
|---|---|
EkinoNewRelicBundleNewRelicAdaptiveInteractor | Este é o interator padrão. Ele verificará uma vez por solicitação se a extensão PHP newrelic estiver instalada ou não. É um decorador para o NewRelicInteractor |
EkinoNewRelicBundleNewRelicNewRelicInteractor | Este interator se comunica com a Newrelic. É o único decorador que realmente funciona. |
EkinoNewRelicBundleNewRelicBlackholeInteractor | Este interator não faz nada. |
auto | Este valor verificará se a extensão PHP newrelic estiver instalada quando você criar seu contêiner. |
Observe que, se você definir ekino_new_relic.enabled: false você sempre usará o BlackholeInteractor , independentemente do valor usado para ekino_new_relic.interactor .
setApplicationName , para que usemos a chave e o nome da licença corretos.RouterListener pode lançar um 404 ou adicionar valores de roteamento à solicitação.setIgnoreTransaction o que significa que chamamos NewRelicInteractorInterface::ignoreTransaction() se configuramos para ignorar a rota.setTransactionName para usar nosso TransactionNamingStrategyInterface para definir um bom nome. Todas as 6 etapas serão executadas para uma solicitação normal. Exceções a isso são respostas 404 e 403 que serão criadas nas etapas 2 e 4, respectivamente. Se ocorrer uma exceção a essas etapas (não estou falando sobre Exception ), você terá a transação registrada com a tecla de licença correta, mas não terá o nome da transação adequada. O setTransactionName pode ter dependências de dados definidos por outros ouvintes, por isso tem uma prioridade tão baixa.