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