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_mode
comotrue
oufalse
em 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:precompile
Se 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 console
ouirb
.O agente detecta que está em uma das tarefas rake integradas do Rails; por exemplo,
assets:precompile
oudb:migrate
.Você pode usar variáveis de configuração no arquivo
newrelic.yml
do 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::Console
estiver 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:work
geralmente 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_constants
A 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_executables
Esta configuração controla executáveis, comorspec
eirb
.autostart.denylisted_rake_tasks
Antes do Rails 5.1,rake
era usado em vez dethor
para 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 comandosrake
a 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
em 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 quiser interromper o agente antes do término do processo, você pode ligar para NewRelic::Agent.shutdown
.