You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在New Relic中为Sidekiq特定队列配置队列长度与延迟告警?

解决Rails 5项目中Sidekiq特定队列的New Relic告警需求

一、用New Relic内置指标搞定(无需第三方插件)

别折腾很久没更新的第三方插件了,New Relic本身就采集了Sidekiq队列的核心指标,只是默认仪表盘没展示而已:

  • 队列长度对应指标:SidekiqQueueLength,通过queue维度即可过滤你要监控的特定队列
  • 队列延迟对应指标:SidekiqQueueLatency,同样用queue维度筛选目标队列

二、NSQL查询实例

直接用这些指标编写NSQL,精准监控目标队列:

  1. 查询特定队列当前长度:
SELECT latest(value) FROM SidekiqQueueLength WHERE queue = 'your_target_queue' SINCE 1 MINUTE AGO
  1. 查询特定队列的任务延迟(任务入队到开始执行的时长):
SELECT average(value) FROM SidekiqQueueLatency WHERE queue = 'your_target_queue' SINCE 5 MINUTES AGO

三、创建告警的具体步骤

  1. 进入New Relic的「Alerts & AI」页面,点击「Create alert」
  2. 选择「NRQL alert condition」,将上面的NSQL查询粘贴进去
  3. 设置阈值:比如队列长度超过50且持续5分钟,或者延迟超过30秒持续2分钟,根据业务需求调整
  4. 配置通知渠道(邮件、Slack等),完成告警创建

四、自定义指标采集(内置指标不够用的情况)

如果需要更细粒度的监控,自己在Rails项目里加自定义采集即可:
在项目的初始化文件或Sidekiq定时任务中添加以下代码,定期采集队列状态:

# 创建定时任务,每分钟采集一次目标队列指标
Sidekiq::Cron::Job.create(name: 'New Relic Sidekiq Queue Metrics', cron: '* * * * *', class: 'NewRelicSidekiqMetricsJob')

# 对应的任务类
class NewRelicSidekiqMetricsJob
  include Sidekiq::Job

  def perform
    target_queue = Sidekiq::Queue.new('your_target_queue')
    NewRelic::Agent.record_metric('Custom/Sidekiq/QueueLength', target_queue.size)
    NewRelic::Agent.record_metric('Custom/Sidekiq/QueueLatency', target_queue.latency)
  end
end

之后就能在NSQL中查询这些自定义指标,例如:

SELECT latest(value) FROM Custom/Sidekiq/QueueLength

内容的提问来源于stack exchange,提问作者Sam Egea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:33:13