After Kaigi on Rails LT Night で登壇しました
https://smartbank.connpass.com/event/299631
GLOBIS DIGITAL PLATFORM明日から始めるSidekiqオブザーバビリティ向上
View Slide
GLOBIS DIGITAL PLATFORM 2自己紹介越智亮太 @imaharuTech株式会社グロービスRailsエンジニア3年SRE 1.5年
会社紹介
GLOBIS DIGITAL PLATFORM 4本日のゴール明日、Sidekiqオブザーバビリティ向上 Pull Requestを作成し検証環境で実験できるになる
GLOBIS DIGITAL PLATFORM 5オブザーバビリティとはシステムで何が起きているか把握できる能力
GLOBIS DIGITAL PLATFORM 6Sidekiqのオブザーバビリティがある状態1. 遅いJobが特定可能2. Jobが完了していない原因を特定可能
GLOBIS DIGITAL PLATFORM 7Sidekiqのオブザーバビリティがある状態遅いJobが特定可能
GLOBIS DIGITAL PLATFORM 8Sidekiqのオブザーバビリティがある状態Jobが完了していない原因を特定可能
GLOBIS DIGITAL PLATFORM 9Sidekiqのオブザーバビリティがある状態Jobが完了していない原因を特定可能
GLOBIS DIGITAL PLATFORM 10Sidekiqのオブザーバビリティ向上施策の紹介1. エラーログにjid追加2. enqueuedログ追加3. dequeuedログにjob引数を追加4. datadogのdurationとelapsedを紐付け5. job statusを追加
GLOBIS DIGITAL PLATFORM 11Sidekiqのオブザーバビリティ向上施策の紹介1. エラーログにjid追加2. enqueuedログ追加3. dequeuedログにjob引数を追加4. datadogのdurationとelapsedを紐付け5. job statusを追加
GLOBIS DIGITAL PLATFORM 12Sidekiq JSONログの出力形式
GLOBIS DIGITAL PLATFORM 13成功するJobのログ
GLOBIS DIGITAL PLATFORM 14失敗するJobのログ
GLOBIS DIGITAL PLATFORM 15エラーメッセージに jidがない
GLOBIS DIGITAL PLATFORM 16Jobライフサイクル全てのログを追跡できないつまり、Jobが完了していない原因を特定可能できない引用: https://github.com/sidekiq/sidekiq/wiki/Job-Lifecycle
GLOBIS DIGITAL PLATFORM 17実装$ cat config/initializers/sidekiq.rb
GLOBIS DIGITAL PLATFORM 18実装前後のログ変化
GLOBIS DIGITAL PLATFORM 19実装$ cat config/initializers/sidekiq.rbSidekiq::Context.add
GLOBIS DIGITAL PLATFORM 20実装の解説ctxにjidを詰めれば良さそうSidekiq::Context.add
GLOBIS DIGITAL PLATFORM 21実装の解説Sidekiq::Context.add
GLOBIS DIGITAL PLATFORM 22実装の解説Sidekiq::ContextはJobの状態をハッシュに詰め込んだものSidekiq::Context.add
GLOBIS DIGITAL PLATFORM 23実装の解説$ cat config/initializers/sidekiq.rbconfig.error_handlers
GLOBIS DIGITAL PLATFORM 24実装の解説config.error_handlers
GLOBIS DIGITAL PLATFORM 25実装の解説config.error_handlersdefault errorhandleradd_jid_error_handlerdefault errorhandlerArray#unshiftで配列に先頭追加することで以降のhandlerでctx.jidが出力される
GLOBIS DIGITAL PLATFORM 26まとめJobが完了していない原因を特定しやすくなった!!!引用: https://github.com/sidekiq/sidekiq/wiki/Job-Lifecycle
GLOBIS DIGITAL PLATFORM 27まとめ明日、Sidekiqオブザーバビリティ向上 Pull Requestを作成し検証環境で実験できるようになった!
We are hiring!!!