Kubernetesで動くSidekiqへのヘルスチェック方法
Kubernetesクラスタ上で動かすSidekiqに対してヘルスチェックを導入した話 | Money Forward Engineers' Blog を参考にさせていただきましたが、調べるとヘルスチェックスクリプトを自作しなくても済むことが分かりました。
TL;DR
livenessProbe: exec: command: ["sh", "-c", "REDIS_URL=$SIDEKIQ_REDIS_URI sidekiqmon processes | grep $HOSTNAME"] startupProbe: exec: command: ["sh", "-c", "REDIS_URL=$SIDEKIQ_REDIS_URI sidekiqmon processes | grep $HOSTNAME"]
sidekiqmonとは
Sidekiq 6.0で導入されたモニタリング用のコマンドです。
sidekiq gemを入れていれば使えます。
ソースはこちら
sidekiq/sidekiqmon at main · mperham/sidekiq · GitHub
マネーフォワードさんのブログにあったスクリプト内でSidekiq::ProcessSetの中身を見てましたが、このsidekiqmonでもSidekiq::ProcessSetを見てます
またsidekiqmon
はversion
、overview
、processes
、queues
などの引数をとれます。念の為ヘルスチェック対象の情報であるprocesses
を指定します。
またコンテナの$HOSTNAME
はpod名になるので sidekiqmon processes
結果を$HOSTNAME
をgrepしてあげます。
最終的には TL;DR に書いたようになります。