3

我正在使用 New Relic for Rails,但只需要 New Relic 来监控我的一个生产环境。但是,我有一个也在生产模式下运行的登台服务器。New Relic 将这两个实例都检测为我的应用程序的操作 prod 实例(应该如此),但是当我只想关注一个实例时,我不想为监视两个实例付费。

New Relic 接受许可证密钥的环境变量:

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

是否可以检测环境文件(即 config/environments/production.rb)中的主机名,以便我可以动态定义此环境变量?

两个环境都是从同一个 Git 存储库、相同的源代码库部署的,所以我不能在每次部署的代码中真正更改它——最好能够以某种方式动态定义环境变量。

任何想法将不胜感激!谢谢!

4

3 回答 3

4

New Relic Ruby 代理会将newrelic.yml配置文件解析为 ERB,然后再将其解析为 YAML。因此,您可以做很多巧妙的技巧,例如:

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

这种解析都发生在应用程序启动时。

如果您的 RAILS_ENV 与“以生产模式”运行的登台服务器中的“生产”不同,那么您可以按照史蒂夫格雷厄姆的建议使用环境部分。

于 2012-01-09T01:41:16.760 回答
2

您是否为登台创建了单独的环境?即开发、测试、生产和登台?有关说明,请参见此处...</p>

完成此操作后,可以指定该环境的行为config/newrelic.yml

common: &default_settings
  license_key: 'PASTE_YOUR_KEY_HERE'
  …

development:
  enabled: false
  …

test:
  enabled: false
  …

production:
  enabled: true
  …

staging: 
  enabled: false
  …

等等等等

于 2009-12-02T21:12:40.007 回答
0

主机名仅在请求对象中可用,所以不,在 rails 构建环境时它不可用。

我只需设置您的登台部署脚本以将 production.rb 复制到 staging.rb 并在“登台”中启动应用程序。另一种技术是不将 newrelic.yml 保留在您的 scm 中,而是将其从其他地方复制或链接到当前部署目录。

于 2009-11-02T05:13:32.093 回答