2

別のプロセス (Heroku インスタンス) で EventMachine を実行するコードを含む Rails Web アプリ スタックがあります。それらは共通のコードとクラスを共有しており、それらを分離する意味がありません。

EventMachine プロセスは Web プロセスとは非常に異なる使用特性を持っているため、インスタンス統計 (CPU、メモリ) がすべて一緒に平均化されないように、別のアプリ名でデータを New Relic に報告したいと思います。

理想的には、EventMachine プロセスがnewrelic.ymlファイル内の別の構成スタンザを取得することを望みます。

NewRelic::Control.instance.init_plugin(:agent_enabled => true, :env => 'em-process')別の環境で再初期化するために呼び出しを試みました。それはうまくいきませんでした。

また、エージェントをシャットダウンして再起動しようとしました: ::NewRelic::Agent.shutdown
::NewRelic::Agent.manual_start(env: 'connector')しかし、ログにこれを見ました: This agent connected from parent process 10878--not sending shutdown-- それも機能しませんでした。

これはどのように行うことができますか?

4

2 に答える 2

0

New Relic の Ben Weintraub から非常に有益な回答を得ました。

require: false最適なオプションは、次のように設定して、バンドラーを介してエージェントを自動要求せずに自動起動することGemfileです。

gem 'newrelic_rpm', '~> 3.6.5.130', require: false

次に、初期化ファイルを追加します。たとえば、次のようになりますconfig/initializers/new_relic.rb

require 'newrelic_rpm'

args = {}
args[:env] = 'em-process' if ($0 =~ /em-process/)  # start in em-process environment if script name includes the word 'em-process'
NewRelic::Agent.manual_start(args)

これは、EventMachine プロセスの起動スクリプトの名前に文字列em-process.

ありがとうベン!

于 2013-07-16T22:41:35.373 に答える