Problema
O agente Ruby não está iniciando ou não está reportando dados ao New Relic.
Solução
Para resolver este problema:
Verifique a versão do seu agente Ruby e atualize se necessário.
Quando a gem Ruby newrelic_rpm for necessária em seu ambiente de aplicativo, ela tentará determinar se o monitoramento será iniciado automaticamente e a transmissão de métricas para o New Relic ou permanecerá desativado.
Produção e preparação: o agente normalmente é configurado para monitor automaticamente nesses ambientes.
Teste e desenvolvimento: O agente normalmente permanece desabilitado nesses ambientes.
Para controlar essa lógica, defina a chave de configuração
monitor_modecomotrueoufalseem cada seção de ambiente denewrelic.yml.
Para substituir a lógica de inicialização automática do agente, o mecanismo mais fácil é definir uma variável de ambiente NEW_RELIC_AGENT_ENABLED=true ; por exemplo:
$NEW_RELIC_AGENT_ENABLED=true rake assets:precompileSe você estiver executando o agente Ruby versão 3.6.1 ou superior, há alguns motivos pelos quais o agente se recusará a iniciar:
O agente detecta que está em uma sessão interativa; por exemplo, uma sessão
rails consoleouirb.O agente detecta que está em uma das tarefas rake integradas do Rails; por exemplo,
assets:precompileoudb:migrate.Você pode usar variáveis de configuração no arquivo
newrelic.ymldo agente Ruby para personalizar o comportamento de inicialização automática para constantes, nomes de script e tarefas rake.Variable
Description
Constantes
- Constantes Ruby que devem impedir a inicialização do agente. Aceita uma lista separada por vírgulas.
- O padrão é
"Rails::Console". - Defina como
""para instruir o agente a iniciar quandoRails::Consoleestiver no ambiente.
Tarefas de ancinho
- Rake tarefas que você não deseja que o agente monitor; por exemplo,
assets:precompile. Aceita uma lista separada por vírgulas. - Não desabilitamos o agente Ruby em todas as tarefas rake, porque tarefas como
resque:workgeralmente são monitoradas.
Executáveis
- Uma lista de nomes script , como
irb, que impedirá que o agente seja iniciado automaticamente. Aceita uma lista separada por vírgulas. - Defina como
"rake"para evitar que o agente inicie tarefas de rake ou"rake,my_ruby_script.rb"para evitar que ele inicie em rake e um script personalizado.
Problema
O agente Ruby inicia em contextos onde não quero que seja iniciado.
Solução
O agente Ruby faz algumas suposições sobre os contextos que a maioria dos clientes deseja que o agente inicie automaticamente.
Existem três opções de configuração disponíveis para personalizar esse comportamento:
autostart.denylisted_constantsA maioria das constantes nesta lista são comandos Rails que executam operações que raramente se beneficiam do monitoramento.A lista não inclui
Rails::Command::RakeCommand, que alimenta comandos comorails db:*erails solid_queue:start, e outros comandos Rails relacionados a tarefas Rake.autostart.denylisted_executablesEsta configuração controla executáveis, comorspeceirb.autostart.denylisted_rake_tasksAntes do Rails 5.1,rakeera usado em vez dethorpara muitos comandos, comodb:migrate. Os valores padrão para esta configuração listam muitos comandos daquela época. Você também pode adicionar seus próprios comandosrakea esta lista.
A API NewRelic::Agent.manual_start pode ser usada para iniciar o agente em contextos específicos. Se você definir :agent_enabled como false no seu arquivo de configuração ou definir a variável de ambiente NEW_RELIC_AGENT_ENABLED=false, ainda poderá iniciar manualmente o agente usando esta API.
NewRelic::Agent.manual_start(agent_enabled: true)Se você quiser parar o agente antes que o processo termine, você pode chamar NewRelic::Agent.shutdown.