7

我们的中型 Rails 应用程序在三台服务器上运行(生产中)。我们刚刚结束了试用期,使用 New Relic 作为宝石。在试用期间,我们跟踪了所有三台服务器,但要继续订阅,我们只需要(并且只有预算)跟踪 app1。

所以我们需要在 app2 和 app3 上禁用新的 relic。在与他们的客户服务沟通时,我被告知这是可能的,并且已被定向到此页面上的最后一个条目,但我不太明白这如何帮助我禁用其他两台服务器上的新遗物跟踪,特别是因为environment.rb 中没有提到 newrelic_rpm - 毕竟它是一个 gem,因此只在 Gemfile 中提到。

newrelic.yml 中有一个agent_enabled布尔选项,我认为我们可以在每个服务器的基础上进行设置,但我不知道该怎么做。有没有办法找出我们在 Rails 中使用的服务器,类似于 RAILS_ENV 变量?

4

2 回答 2

11

newrelic.yml文件在代理读取配置值之前使用 ERB 呈现。所以你可以这样做:

monitor_mode: <%= 'app1' == Socket.gethostname ? 'true' : 'false' %>

这将使代理仅针对该主机向 New Relic 报告。

于 2012-03-16T15:29:06.820 回答
1

我建议newrelic.yml只在需要的服务器上链接。要做到这一点config/newrelic.yml,请从您的存储库中完全删除并放入shared您服务器的目录中。

然后将这个文件只针对某个角色在 capistrano 中再次链接到config/newrelic.yml. 您可以引入一个仅包含您的 app1 服务器的新角色。

新的遗物宝石是构建故障安全的。所以在这种情况下它只是被禁用。

于 2012-03-14T12:49:18.963 回答