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 に書いたようになります。