![見出し画像](https://assets.st-note.com/production/uploads/images/120192368/rectangle_large_type_2_ad0a78559feeba21fc5ddf25c1d4ace0.png?width=1200)
Photo by
taro_whitey
障害対応に使える Sidekiq ジョブの調べ方
仕事で sidekiq を使っているのですが、障害で死んだ sidekiq のジョブをポチポチ調べるのがしんどいので、調べた中でいろいろわかったことをメモ。
基本的には個人的な雑記なので、読みやすさや正確性云々は考えてません。悪しからず。
あとフレッシュで正確な情報は sidekiq の wiki ページを見るのが良い。
便利な一覧表
Sidekiq::DeadSet.new : 失敗
Sidekiq::Workers.new : 実行中
Sidekiq::Queue.new : 待機中
Sidekiq::ScheduledSet.new : 実行予約(あんま使い所ないので割愛)
Sidekiq::RetrySet.new : リトライ(同上)
失敗したジョブの情報取得する
失敗したジョブをすべて取得する
"class: CronJob::AbcJob, job_id: fd02749d-29d7-4a1c-938d-7bbbc11ba353, enqueued_at: 2023-10-22T03:05:04Z" みたいなものをリストで取得する
dead_jobs = Sidekiq::DeadSet.new
dead_jobs.map {|job| "class: #{job["args"][0]["job_class"]}, job_id: #{job["args"][0]["job_id"]}, enqueued_at: #{job["args"][0]["enqueued_at"]}"}
特定の失敗ジョブの情報を取得する
時間を指定して、dead_abc_jobs.first/last/length とかも使える
dead_jobs = Sidekiq::DeadSet.new
dead_abc_jobs = dead_jobs.scan("AbcJob").select{|job| job.args[0]["enqueued_at"].to_time > Date.new(2020,1,12)}
実行中のジョブの情報を取得する
実行中のジョブをすべて取得する
とりあえず全部出す
running_jobs = Sidekiq::Workers.new
running_jobs.each {|job| job}
待機中のジョブの情報を取得する
待機中のジョブを全て取得する
とりあえず全部出す
queuing_jobs = Sidekiq::Queue.new
queuing_jobs.each