• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

Delayed::Job Instrumentation

Ruby エージェントには、 Delayed::Jobライブラリ用のインストルメンテーションが組み込まれています。追加の機器は必要ありません。

バックグラウンドタスクの表示

Delayed::Jobワーカーが開始する前に New Relic Ruby エージェントの gem またはプラグインがロードされている限り、すべてのタスクはコントローラー アクションと同じ詳細レベルで監視されます。アクション自体を表示するには:

  1. one.newrelic.com APM & services > (アプリを選択) > Monitor > Transactionsに移動します。
  2. APM Transactions ページからOther transactions を選択します。

カスタム属性の追加

Delayed::Jobトランザクションにカスタム属性を追加する場合は、ライフサイクル フックを介してDelayed::Jobプラグインを作成し、実行されたジョブごとにそれらの属性をトランザクションに追加できます。

  1. 以下のような構造のプラグインを作成します。
module NewRelicInstrumenter
class DelayedJobPlugin < Delayed::Plugin
callbacks do |lifecycle|
lifecycle.around(:invoke_job) do |job, *args, &block|
# Forward the call to the next callback in the callback chain
::NewRelic::Agent.add_custom_attributes(
{
# Any custom attributes go here -- from here you can access info
# about the job like run_at, created_at, etc
my_custom_attribute: "my_custom_attribute_value"
}
)
block.call(job, *args)
end
end
end
end
  1. config/initializers/delayed_job.rbファイルの初期化子でDelayed::Jobにプラグインを追加します。
require "new_relic_instrumenter"
Delayed::Worker.plugins << NewRelicInstrumenter::DelayedJobPlugin

トラブルシューティング

Ruby エージェントは、インストルメンテーションを正しくセットアップするために、 Delayed::Jobで実行されていることを識別できることに依存しています。これを行うために、スクリプト名 (Ruby では$0変数) を調べて、それがdelayed_jobで終わっているかどうかを確認します。

delayed_jobワーカーの起動に使用するスクリプトの名前を別の名前に変更した場合、または別の名前のカスタム スクリプトがある場合は、 Delayed::Jobを使用していることをエージェントに明示的に伝える必要があります。 NEW_RELIC_DISPATCHER環境変数をDelayed::Jobワーカーの開始時にdelayed_jobに設定します。例えば:

NEW_RELIC_DISPATCHER=delayed_job bundle exec ./script/my_custom_script

ジョブが監視されていないように見える場合は、ワーカーの起動時に生成されるnewrelic_agent.logファイルを確認してください。エージェントがDelayedを検出してサーバーと通信するかどうかを示す必要があります。ログが見つからない場合、またはジョブが表示されない理由を特定できない場合は、 support.newrelic.comでサポートを受けてください。

Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.