我想在cron作业中运行我的脚本。这个脚本创建了多个Que作业来完成繁重的工作。如何在新的遗物中跟踪每个作业的活动?
我读过这篇关于如何跟踪cronjob的文章https://blog.newrelic.com/2012/05/30/using-new-relic-to-monitor-ruby-background-tasks/,但是由于Que作业是在它自己的worker中管理的(我使用的是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谢谢
发布于 2016-10-27 08:58:23
你的脚本看起来不错,但是New Relic不支持Que。
至少它似乎不在他们的文档中列出的官方支持的框架列表中。这可以解释为什么你没有得到你需要的数据。
我肯定会研究一下“定制插装”来实现这一点的可能性。New Relic的Ruby Agent API可以进行自定义,以收集/跟踪其他指标:
https://docs.newrelic.com/docs/agents/ruby-agent/features/ruby-custom-instrumentation
当使用New Relic不支持的后台框架时,我还将添加(下面的链接)是一个很好的起点:
希望这能让你走得更近。
https://stackoverflow.com/questions/39890430
复制相似问题