0

我想在 cron 作业中运行我的脚本。此脚本创建多个 Que 作业来完成艰苦的工作。如何跟踪新遗迹中每个工作的活动?

我已经阅读了这篇关于如何跟踪 cronjobs的帖子https://blog.newrelic.com/2012/05/30/using-new-relic-to-monitor-ruby-background-tasks/ ,但是由于 Que 作业是管理的在它自己的工人(我正在使用美洲狮)中,它不会被追踪。

这是一个尝试执行此操作的示例脚本(但它不跟踪任何内容):

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 代理 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 回答