如何在newrelic中跟踪Que作业?

时间:2016-10-06 07:49:00

标签: ruby-on-rails ruby cron newrelic que

我想在cron作业中运行我的脚本。此脚本创建了多个可以完成工作的Que作业。如何在新文物中追踪每项工作的活动?

我已经阅读了关于如何跟踪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

谢谢

1 个答案:

答案 0 :(得分:0)

你的脚本看起来不错,但New Relic并不支持Que开箱即用。

至少它似乎不在他们的文档中列出的官方支持的框架列表中。这可以解释为什么您无法获得所需的数据。

我肯定会研究定制仪器的可能性&#34;为达到这个。可以自定义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

希望能让你更接近。

相关问题