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とは

github.com

Sidekiq 6.0で導入されたモニタリング用のコマンドです。
sidekiq gemを入れていれば使えます。

ソースはこちら
sidekiq/sidekiqmon at main · mperham/sidekiq · GitHub

マネーフォワードさんのブログにあったスクリプト内でSidekiq::ProcessSetの中身を見てましたが、このsidekiqmonでもSidekiq::ProcessSetを見てます

またsidekiqmonversionoverviewprocessesqueuesなどの引数をとれます。念の為ヘルスチェック対象の情報であるprocessesを指定します。
またコンテナの$HOSTNAMEはpod名になるので sidekiqmon processes結果を$HOSTNAMEgrepしてあげます。

最終的には TL;DR に書いたようになります。