Ruby エージェント 起動時の問題

問題

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 とカスタムスクリプト内ではエージェントは起動しません。