O New Relic para Ruby permite desativar seletivamente a instrumentação para solicitações específicas em seu aplicativo Rails, Roda ou Sinatra.
Bloqueando toda a instrumentação
Chame newrelic_ignore
sem argumentos de dentro de um controlador Rails, aplicativo Roda ou aplicativo Sinatra para evitar a instrumentação de todas as solicitações atendidas por esse controlador ou aplicativo:
newrelic_ignore
Usar newrelic_ignore
evita que o agente registre quaisquer dados de desempenho (métrica, rastreamento de transação, evento, erros de rastreamento e assim por diante) para a transação de destino e também impedirá que a transação contribua para sua pontuação geral do Apdex.
Ignorando ações específicas com Rails
Se quiser ignorar apenas ações específicas com um controlador Rails, você pode usar as opções :only
ou :except
com newrelic_ignore
.
Por exemplo, para ignorar apenas as ações index
e show
no controlador, use:
newrelic_ignore :only => [:index, :show]
Para ignorar todas as ações no controlador except index
:
newrelic_ignore :except => [:index]
Ignorando rotas específicas com Roda
Ignore rotas específicas em aplicativos Roda passando uma rota estilo Roda para newrelic_ignore
de fora do bloco route
de seu aplicativo Roda. Para obter mais informações, consulte Roda: ignorando rotas.
Ignorando rotas específicas com Sinatra
Se desejar ignorar apenas rotas específicas no seu aplicativo Sinatra, você poderá passar uma definição de rota no estilo Sinatra para newrelic_ignore
no seu aplicativo Sinatra. Para obter mais informações, consulte Sinatra: Ignorando rotas.
Ignorando contribuições do Apdex
Se você quiser evitar que todas as ações em um controlador contribuam para sua pontuação Apdex, mas ainda quiser outros dados de desempenho, use newrelic_ignore_apdex
:
newrelic_ignore_apdex
Em um aplicativo Rails, newrelic_ignore_apdex
suporta as mesmas opções:only
e :except
que newrelic_ignore
. Em uma aplicação Roda ou Sinatra, ele aceitará a mesma rota estilo Roda ou rota estilo Sinatra para direcionar transações específicas.
Bloqueando a instrumentação do browser
Usar newrelic_ignore_enduser
evita que o agente insira automaticamente o JavaScript usado para capturar dados . A instrumentação do lado do servidor não será afetada.
Para evitar a injeção do agente no browser para todas as ações em um controlador, adicione uma chamada como esta à classe do controlador:
newrelic_ignore_enduser
Em um aplicativo Rails, newrelic_ignore_enduser
suporta as mesmas opções:only
e :except
que newrelic_ignore
. Em uma aplicação Roda ou Sinatra, ele aceitará a mesma rota estilo Roda ou rota estilo Sinatra para direcionar transações específicas.
Ignorando a transação dinamicamente
Em alguns casos, você pode basear a decisão de ignorar uma transação específica em critérios conhecidos apenas em tempo de execução, durante a solicitação. Para cenários como este, os mecanismos declarativos explicados acima não são adequados. A partir do agente Ruby versão 3.9.2, em vez disso, você pode usar a seguinte família de chamadas de API a partir de qualquer ponto da sua transação:
NewRelic::Agent.ignore_transactionNewRelic::Agent.ignore_apdexNewRelic::Agent.ignore_enduser
Esses métodos terão resultados semelhantes às chamadas newrelic_ignore
, newrelic_ignore_apdex
e newrelic_ignore_enduser
, mas podem ser chamados durante uma solicitação em vez de durante a definição da classe.
Ignorando transação por URL com configuração
Você pode ignorar a transação por URL usando a configuração rules.ignore_url_regexes
:
rules: ignore_url_regexes: ["secret", "^/admin"]
Esta configuração impedirá apenas que eventos de transação que correspondam ao padrão definido sejam relatados. Use qualquer método da família newrelic_ignore*
se desejar impedir que todos os dados, como dados trace , sejam relatados a partir de uma transação.
Observe que as expressões regulares não incluem nenhum tipo de ancoragem por padrão. O /secret/ regex corresponderá a 'newrelic.com/secret/login' e também corresponderá a 'newrelic.com/users/secretpanda'. O regex de administração ancorado corresponderá a 'newrelic.com/admin/praetorians' mas não corresponderá a 'newrelic.com/users/totally-real-admin'.
Se necessário, você também pode fornecer uma lista de regexes em uma string separada por vírgula, permitindo definir ignorar regexes com uma variável de ambiente:
$NEW_RELIC_RULES_IGNORE_URL_REGEXES="secret,^/admin"
Como sempre, a configuração das variáveis de ambiente substituirá a configuração em newrelic.yml.
Resolução de problemas
A família de métodos newrelic_ignore*
só funcionará dentro das classes do controlador Rails, fora do bloco route
do aplicativo Roda (subclasses de Roda
) ou dentro do aplicativo Sinatra (subclasses de Sinatra::Base
). Outro aplicativo deve usar a família NewRelic::Agent.ignore_*
de chamadas de cada solicitação que você deseja ignorar, o que funcionará em qualquer contexto.
Se você obtiver um NoMethodError
ao tentar usar newrelic_ignore
de dentro de um controlador Rails, aplicativo Roda ou aplicativo Sinatra, certifique-se de que newrelic_rpm
foi necessário antes de tentar chamar newrelic_ignore
dentro de sua definição de classe.