2012-03-14 11 views
7

中規模のレールアプリは、3台のサーバーで稼動しています。我々は宝石としてNew Relicを使って試用期間を終えました。試用期間中、3つのサーバーすべてを追跡しましたが、app1を追跡するために必要なサブスクリプションを引き続き(しかも予算のみを使用して)継続します。新しいRelicをターゲットにして1つ(3つ)のアプリサーバーでのみ実行

app2とapp3の新しい遺物を無効にする必要があります。カスタマーサービスとのコミュニケーションの中で、これは可能であり、this pageの最後のエントリに向けられていると言われていますが、これが他の2台のサーバーで新しい遺物追跡を無効にする方法を理解できません。 environment.rbにはnewrelic_rpmは記述されていません。結局のところgemfileにしか記述されていません。

newrelic.ymlにはagent_enabledブールオプションがありますが、これはサーバーごとに設定できると思っていましたが、これを行う方法はわかりません。 RAILS_ENV変数に似た、私たちがどのサーバをレールで使用しているかを知る方法はありますか?

+0

導入には何を使用していますか?カピストラーノ? – iltempo

+0

ええ、キャッパーの宝石を使って。私たちはcapfileに、配備時に新しい遺物を通知するモニターを持っています。そうでなければ、gemとnewrelic.ymlによってすべてが設定されます。 – omnikron

答えて

11

エージェントが設定値を読み取る前に、newrelic.ymlファイルがERBでレンダリングされます。したがって、これを行うことができます:

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

これは、エージェントがその1つのホストに対してのみNew Relicに報告することを可能にします。

+0

これはうまくいきましたが、app1を含むすべてのサーバーでトラッキングが無効になっていれば、これは素晴らしいことです。 ERBレンダリングはどのように/どこで正確に行われますか? – omnikron

+0

ERBの開始タグが間違っていました。今すぐ修正!/facepalm – rkb

+0

私はそれも気づいたはずです...愚かなHAMLは物事を忘れさせる! – omnikron

1

newrelic.ymlは、必要なサーバーにのみリンクすることをお勧めします。これを行うには、config/newrelic.ymlをリポジトリから完全に削除して、サーバのsharedディレクトリに入れてください。

次に、このファイルをcapistranoの特定のロールのためにのみconfig/newrelic.ymlに再度リンクします。 app1サーバーのみを含む新しい役割を導入することができます。

新しい遺物はビルドフェイルセーフです。その場合、それはただ無効になっています。

+0

config/newrelic.ymlを削除すると、ロードされるたびにnewrelic_rpmがエラーを投げます。開発。さもなければ、これはすばらしい解決策になります。現在の計画では、newrelic_disabled/_enabled.ymlという2つの追加ファイルを用意し、展開時にnewrelic.ymlを上書きすることを計画しています。 – omnikron

+0

警告の意味ですか? gitを使ってそのファイルを無視して、開発コピーに置いておくと、警告を回避することもできます。 – iltempo

+0

はい、警告で、エラーではありません、ごめんなさい。それはクールなトリックです!私は間違いなく将来を念頭に置いていますが、ファイルはgitリポジトリの外側に存在することを覚えておいて驚いています:)この場合、ファイルを転送する必要がないようにdeployメソッドを使用しますチームは古風な方法tho、それは後で頭痛になるかもしれません。あなたの助けをありがとう! – omnikron

関連する問題