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_modesurtrueoufalsedans 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:precompileSi 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 consoleouirb.L'agent détecte qu'il se trouve dans l'une des tâches rake intégrées de Rails ; par exemple,
assets:precompileoudb:migrate.Vous pouvez utiliser des variables de configuration dans votre fichier d'agent Ruby
newrelic.ymlpour 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::Consoleest 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:worksont 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_constantsLa 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_executablesCette configuration contrôle les exécutables, commerspecetirb.autostart.denylisted_rake_tasksAvant Rails 5.1,rakeétait utilisé à la place dethorpour 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.