3

New Relic for Railsを使用していますが、1つの本番環境を監視するために必要なのはNewRelicだけです。ただし、本番モードでも実行されるステージングサーバーがあります。New Relicは、両方をアプリケーションの動作中のprodインスタンスとして検出しますが、1つだけを監視したい場合は、2つのインスタンスを監視するためにお金を払う必要はありません。

New Relicは、ライセンスキーの環境変数を受け入れます。

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

この環境変数を動的に定義できるように、環境ファイル(つまり、config / environment / product.rb)でホスト名を検出することは可能ですか?

両方の環境は同じGitリポジトリ、同じソースコードベースからデプロイされるため、デプロイごとにコードで実際に変更することはできません。環境変数を動的に定義できるようにするのが最善です。

どんな考えでもいただければ幸いです!ありがとう!

4

3 に答える 3

4

New Relic Ruby エージェントは、newrelic.yml構成ファイルを YAML として解析する前に ERB として解析します。したがって、次のような多くの巧妙なトリックを実行できます。

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

この解析はすべて、アプリの起動時に行われます。

「本番モード」で実行されているステージング サーバーで RAILS_ENV が「本番」と異なる場合は、Steve Graham が提案するように環境セクションを使用できます。

于 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

ホスト名は request オブジェクトでのみ使用できるため、いいえ、レールが環境を構築するときには使用できません。

ステージング デプロイ スクリプトを設定して、production.rb を staging.rb にコピーし、「ステージング」でアプリを起動するだけです。もう 1 つのテクニックは、newrelic.yml を scm に保持せずに、別の場所から現在の deploy ディレクトリにコピーまたはリンクすることです。

于 2009-11-02T05:13:32.093 に答える