Problème
L'agent Ruby ne démarre pas ou ne transmet pas de données à New Relic.
Solution
Pour résoudre ce problème :
Vérifiez la version de votre agent Ruby et mettez-la à jour si nécessaire.
Lorsque la gem Ruby newrelic_rpm
est requise dans votre environnement d'application, il tentera de déterminer s'il doit démarrer monitoring automatiquement et commencer à transmettre les métriques à New Relic, ou s'il doit rester désactivé.
Production et simulation : l'agent est généralement configuré pour monitorer automatiquement ces environnements.
Test et développement : l'agent reste généralement désactivé dans ces environnements.
Pour contrôler cette logique, définissez la clé de configuration
monitor_mode
surtrue
oufalse
dans chaque section d'environnement denewrelic.yml
.
Pour outrepasser la logique de démarrage automatique de l'agent, le mécanisme le plus simple consiste à définir une variable d'environnement NEW_RELIC_AGENT_ENABLED=true
; par exemple :
$NEW_RELIC_AGENT_ENABLED=true rake assets:precompile
Si vous exécutez l'agent Ruby version 3.6.1 ou supérieure, il existe plusieurs raisons pour lesquelles l'agent refusera de démarrer :
L'agent détecte qu'il se trouve dans une session interactive ; par exemple, une session
rails console
ouirb
.L'agent détecte qu'il se trouve dans l'une des tâches rake intégrées de Rails ; par exemple,
assets:precompile
oudb:migrate
.Vous pouvez utiliser des variables de configuration dans votre fichier d'agent Ruby
newrelic.yml
pour personnaliser le comportement de démarrage automatique des constantes, des noms de script et des tâches de rake.Variable
Description
Constantes
- Constantes Ruby qui devraient empêcher l'agent de démarrer. Accepte une liste séparée par des virgules.
- La valeur par défaut est
"Rails::Console"
. - Définissez sur
""
pour indiquer à l'agent de démarrer lorsqueRails::Console
est dans l'environnement.
Tâches de râteau
- Râteau les tâches que vous ne souhaitez pas que l'agent monitore ; par exemple,
assets:precompile
. Accepte une liste séparée par des virgules. - Nous ne désactivons pas l'agent Ruby dans toutes les tâches de rake, car les tâches comme
resque:work
sont généralement monitorées.
Exécutables
- Une liste de noms script , tels que
irb
, qui empêcheront l'agent de démarrer automatiquement. Accepte une liste séparée par des virgules. - Définissez cette valeur sur
"rake"
pour empêcher l'agent de démarrer dans des tâches Rake, ou"rake,my_ruby_script.rb"
pour l'empêcher de démarrer dans Rake et un script personnalisé.
Problème
L'agent Ruby démarre dans des contextes où je ne veux pas qu'il démarre.
Solution
L'agent Ruby émet certaines hypothèses sur les contextes dans lesquels la plupart des clients souhaitent que l'agent démarre automatiquement.
Trois options de configuration sont disponibles pour personnaliser ce comportement :
autostart.denylisted_constants
La plupart des constantes de cette liste sont des commandes Rails qui effectuent des opérations qui bénéficient rarement du monitoring.La liste n'inclut pas
Rails::Command::RakeCommand
, qui alimente des commandes commerails db:*
ainsi querails solid_queue:start
, et d'autres commandes Rails liées aux tâches Rake.autostart.denylisted_executables
Cette configuration contrôle les exécutables, commerspec
etirb
.autostart.denylisted_rake_tasks
Avant Rails 5.1,rake
était utilisé à la place dethor
pour de nombreuses commandes, telles quedb:migrate
. Les valeurs par défaut de cette configuration répertorient de nombreuses commandes de cette époque. Vous pouvez également ajouter vos propres commandesrake
à cette liste.
L'API NewRelic::Agent.manual_start
peut être utilisée pour démarrer l'agent dans des contextes spécifiques. Si vous définissez :agent_enabled
sur false
dans votre fichier de configuration ou définissez la variable d'environnement NEW_RELIC_AGENT_ENABLED=false
, vous pouvez toujours démarrer manuellement l'agent à l'aide de cette API.
NewRelic::Agent.manual_start(agent_enabled: true)
Si vous souhaitez arrêter l'agent avant la fin du processus, vous pouvez appeler NewRelic::Agent.shutdown
.