問題
Ruby エージェントが正常に起動せず、New Relic のダッシュボードへデータを送信しない。
対策
この問題を解決するには以下の指示に従ってください。
- Ruby エージェントのバージョンを調べる
-
Ruby エージェントのバージョンをチェックし、必要に応じて更新する。
- アプリの使用環境を確認する
-
newrelic_rpm Ruby gem がアプリに設定されている場合、rpm は、自動的に監視を開始し、New Relic のダッシュボードにメトリックの送信を開始するか、または無効の状態であるか判断します。
- 本番及びステージング環境: エージェントは通常、自動的に監視を開始するように設定されています。
- テスト及び開発環境: エージェントは通常、無効になっています。
この判断を変更するには、 newrelic.yml にある各環境毎に
monitor_mode
キーの設定をtrue
もしくはfalse
にセットします。 - 強制的にエージェントを開始させる
-
エージェントの自動開始のロジックを変更する最も簡単な方法は、環境変変数に
NEW_RELIC_AGENT_ENABLED=true
をセットすることです。通常、以下のようにプロセスを呼び出すことによって可能となります。NEW_RELIC_AGENT_ENABLED=true rake assets:precompile
- 自動起動設定の変更
-
Ruby エージェントのバージョン 3.6.1 以上をお使いの場合は、以下が原因で起動に失敗することがあります。
- エージェントが、対話型セッションであることを検出した場合。例えば、
rails console
またはirb
セッションの場合。 - エージェントが Rails の組み込みの rake タスクであることを検知した場合。例えば、
assets:precompile
またはdb:migrate
。
定数、スクリプト名、rake タスクの自動起動の動作をカスタマイズするために Ruby エージェントnewrelic.yml ファイル内の変数を使用できます。
変数 説明 定数 autostart.blacklisted_constants
- エージェントの起動を阻止する Ruby の定数。カンマ区切りのリスト。
- デフォルトでは、
"Rails::Console"
がセットされています。 ""
を設定すると、Rails::Console
環境でも、エージェントが起動します。
Rake タスク autostart.blacklisted_rake_tasks
- エージェントの監視対象外とすべき Rake タスク。例えば、
assets:precompile
。カンマ区切りのリスト。 - New Relic 全 rake タスク内でエージェントを無効することはしません。なぜなら、
resque:work
のようなタスクは、通常、監視対象であるからです。
実行コマンド autostart.blacklisted_executables
irb
のようなスクリプト名のリスト。自動的に、エージェントの起動を阻止します。カンマ区切りのリスト。"rake"
をセットすると、rake タスク実行時はエージェントは起動しません。また、"rake,my_ruby_script.rb"
をセットすると、rake とカスタムスクリプト内ではエージェントは起動しません。
- エージェントが、対話型セッションであることを検出した場合。例えば、