0

スクリプトを cron ジョブで実行したいと考えています。このスクリプトは、大変な作業を行う複数の Que ジョブを作成します。new relic で各ジョブのアクティビティを追跡するにはどうすればよいですか?

cronjobs をトレースする方法に関するこの投稿https://blog.newrelic.com/2012/05/30/using-new-relic-to-monitor-ruby-background-tasks/を読みましたが、Que ジョブが管理されているため独自のワーカー (私は puma を使用しています) では、トレースされません。

これは、それを実行しようとするサンプル スクリプトです (ただし、何もトレースしません)。

class NewrelicTest

  def run
    Order.all.find_each do |order|
      Job.enqueue(order.id)
    end
  end

  class Job < Que::Job
    include NewRelic::Agent::Instrumentation::ControllerInstrumentation

    def run(id)
      order = Order.find(id)
      do_heavy_work_here(order)
    end

    add_transaction_tracer :run, :category => "OtherTransaction/cronjobs"
  end
end

NewRelic::Agent.manual_start :app_name => "Background Jobs"
NewrelicTest.new.run

ありがとうございました

4

1 に答える 1

0

あなたのスクリプトは私には良さそうに見えますが、New Relic はそのままでは Que をサポートしていません。

少なくとも、ドキュメントに記載されている公式にサポートされているフレームワークのリストには載っていないようです。これにより、必要なデータを取得できない理由を説明できます。

これを達成するための「カスタムインストルメンテーション」の可能性を間違いなく検討します。New Relic の Ruby Agent API をカスタマイズして、追加のメトリックを収集/追跡できます。

https://docs.newrelic.com/docs/agents/ruby-agent/features/ruby-custom-instrumentation

また、New Relic でサポートされていないバックグラウンド フレームワークを使用する場合は、(以下のリンク) を開始するのが適切な場所であることも追加します。

https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/monitoring-ruby-background-processes-daemons

それがあなたに近づくことを願っています。

于 2016-10-27T00:58:22.523 に答える