Pergunta

Eu estou usando New Relic para Rails, mas só precisa de New Relic para monitorar meu ambiente de uma produção. No entanto, tenho um servidor de teste, que também é executado em modo de produção. New Relic detecta ambos os casos prod como a operação do meu aplicativo (como deveria), mas eu não quero ter que pagar para monitorar duas instâncias quando eu só quero manter um olho sobre o um.

New Relic aceita uma variável de ambiente para a chave de licença:

license_key: <%= ENV['NEWRELIC_ACCOUNT_KEY'] %>

É possível detectar o nome do host nos arquivos de ambiente (ou seja config / environments / production.rb) para que eu possa definir esta variável de ambiente dinamicamente?

Ambos os ambientes são implantados a partir do mesmo repositório Git, mesma base de código fonte, então eu realmente não pode alterá-lo no código para cada deploy - seria melhor para ser capaz de definir a variável de ambiente dinâmico de alguma forma.

Qualquer pensamento seria apreciada! Obrigado!

Foi útil?

Solução

O agente New Relic Ruby vai analisar o arquivo de configuração newrelic.yml como ERB antes de analisá-lo como YAML. Portanto, você pode fazer um monte de truques, como:

production:
  license_key: <%= Socket.gethostname == 'mission-critical.example.com' ? 'PAID_ACCOUNT_LICENSE_KEY' : 'FREE_LITE_ACCOUNT_LICENSE_KEY' %>

Esta analisar tudo acontece no momento da inicialização do aplicativo.

Se o seu RAILS_ENV eram diferentes de 'produção', em que servidor de teste que corre "no modo de produção", então você pode simplesmente usar as seções ambiente como Steve Graham sugere.

Outras dicas

Você criou um ambiente separado para encenação? ou seja, desenvolvimento, teste, produção e encenação? Veja aqui para obter instruções ...

Tendo feito isso, pode-se especificar o comportamento para esse ambiente em config/newrelic.yml

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

etc, etc

O nome do host só está disponível em um objeto de solicitação, de modo nenhum, ele não está disponível quando trilhos constrói o ambiente.

Eu apenas configurar seu script de implantação de preparo para copiar production.rb para staging.rb e iniciar o aplicativo em "encenação". Outra técnica seria a de não manter o newrelic.yml em sua SCM e, em vez copiá-lo, ou vinculá-lo, a partir de algum outro lugar para o diretório deploy atual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top