New Relic pour Ruby vous permet de désactiver de manière sélective instrumentation pour requests particulières au sein de votre application Rails, Roda ou Sinatra.
Blocage de toute l'instrumentation
Appelez newrelic_ignore
sans argument depuis un contrôleur Rails , une application Roda ou une application Sinatra pour empêcher instrumentation de toutes requests traitées par ce contrôleur ou cette application :
newrelic_ignore
L'utilisation de newrelic_ignore
empêche l'agent d'enregistrer des données de performance (métriques, trace de transaction, événement, erreurs de trace, etc.) pour les transactions ciblées et empêchera également les transactions de contribuer à votre score Apdex global.
Ignorer des actions spécifiques avec Rails
Si vous souhaitez ignorer uniquement des actions spécifiques avec un contrôleur Rails, vous pouvez utiliser les options :only
ou :except
avec newrelic_ignore
.
Par exemple, pour ignorer uniquement les actions index
et show
sur le contrôleur, utilisez :
newrelic_ignore :only => [:index, :show]
Pour ignorer toutes les actions sur le contrôleur except index
:
newrelic_ignore :except => [:index]
Ignorer les itinéraires spécifiques avec Roda
Ignorez les itinéraires spécifiques dans les applications Roda en transmettant un itinéraire de style Roda à newrelic_ignore
depuis l'extérieur du bloc route
de votre application Roda. Pour plus d'informations, voir Roda : Ignorer les itinéraires.
Ignorer les itinéraires spécifiques avec Sinatra
Si vous souhaitez ignorer uniquement des itinéraires spécifiques au sein de votre application Sinatra, vous pouvez transmettre une définition d'itinéraire de style Sinatra à newrelic_ignore
depuis votre application Sinatra. Pour plus d’informations, voir Sinatra : Ignorer les itinéraires.
Ignorer les contributions d'Apdex
Si vous souhaitez empêcher toutes les actions d'un contrôleur de contribuer à votre score Apdex, mais que vous souhaitez néanmoins d'autres données de performances, utilisez newrelic_ignore_apdex
:
newrelic_ignore_apdex
Dans une application Rails, newrelic_ignore_apdex
prend en charge les mêmes options:only
et :except
que newrelic_ignore
. Dans une application Roda ou Sinatra, il acceptera le même itinéraire de style Roda ou Sinatra pour cibler des transactions spécifiques.
Blocage de l'instrumentation du navigateur
L'utilisation de newrelic_ignore_enduser
empêche l'agent d'insérer automatiquement le JavaScript utilisé pour capturer les données . L'instrumentation côté serveur ne sera pas affectée.
Pour empêcher l'injection d'agent de navigateur pour toutes les actions d'un contrôleur, ajoutez un appel comme celui-ci à la classe du contrôleur :
newrelic_ignore_enduser
Dans une application Rails, newrelic_ignore_enduser
prend en charge les mêmes options:only
et :except
que newrelic_ignore
. Dans une application Roda ou Sinatra, il acceptera le même itinéraire de style Roda ou Sinatra pour cibler des transactions spécifiques.
Ignorer les transactions de manière dynamique
Dans certains cas, vous souhaiterez peut-être baser la décision d'ignorer une transaction spécifique sur des critères connus uniquement au moment de l'exécution, pendant la demande. Pour des scénarios comme celui-ci, les mécanismes déclaratifs expliqués ci-dessus ne sont pas adaptés. À partir de la version 3.9.2 de l'agent Ruby, vous pouvez plutôt utiliser la famille d'appel d'API suivante à partir de n'importe quel point de votre transaction :
NewRelic::Agent.ignore_transactionNewRelic::Agent.ignore_apdexNewRelic::Agent.ignore_enduser
Ces méthodes auront des résultats similaires aux appels newrelic_ignore
, newrelic_ignore_apdex
et newrelic_ignore_enduser
, mais peuvent être appelées pendant une requête plutôt que pendant la définition de la classe.
Ignorer les transactions par URL avec configuration
Vous pouvez ignorer les transactions par URL à l'aide du paramètre de configuration rules.ignore_url_regexes
:
rules: ignore_url_regexes: ["secret", "^/admin"]
Cette configuration empêchera uniquement les événements de transaction correspondant au modèle défini d'être signalés. Utilisez l’une des méthodes de la famille newrelic_ignore*
si vous souhaitez empêcher toutes les données, telles que les données de trace, d’être signalées à partir d’une transaction.
Notez que les expressions régulières n'incluent aucun type d'ancrage par défaut. L'expression régulière /secret/ correspondra à « newrelic.com/secret/login » et cela correspondra également à « newrelic.com/users/secretpanda ». L'expression régulière d'administration ancrée correspondra à « newrelic.com/admin/praetorians » mais cela ne correspondra pas à 'newrelic.com/users/totally-real-admin'.
Si nécessaire, vous pouvez également fournir une liste d'expressions régulières dans une chaîne séparée par des virgules, vous permettant ainsi de définir les expressions régulières à ignorer avec une variable d'environnement :
$NEW_RELIC_RULES_IGNORE_URL_REGEXES="secret,^/admin"
Comme toujours, la configuration à partir des variables d'environnement remplacera la configuration dans newrelic.yml.
Dépannage
La famille de méthodes newrelic_ignore*
ne fonctionnera qu'à partir des classes de contrôleur Rails, en dehors du bloc route
des applications Roda (sous-classes de Roda
) ou dans les applications Sinatra (sous-classes de Sinatra::Base
). D'autres applications doivent utiliser la famille d'appels NewRelic::Agent.ignore_*
à partir de chaque requête que vous souhaitez ignorer, ce qui fonctionnera dans n'importe quel contexte.
Si vous obtenez un NoMethodError
lorsque vous essayez d'utiliser newrelic_ignore
à partir d'un contrôleur Rails, d'une application Roda ou d'une application Sinatra, assurez-vous que newrelic_rpm
a été requis avant d'essayer d'appeler newrelic_ignore
dans votre définition de classe.