繁体   English   中英

如何检查运行 sidekiq 的 docker 镜像的健康状况

[英]How to check health of docker image running sidekiq

我在我的集​​群上使用 kubernetes 和几个 rails / node docker 图像。 他们中的大多数都有 :3000/healtz 健康检查,只是返回状态 200 和身体正常。

现在我正在尝试探索如何在运行 sidekiq 的 docker 镜像上执行此健康检查的最佳方式。 我如何验证工作人员是否正在运行?

如果您的图像类似于 unix,您可以检查进程是否正在运行

$ ps aux | grep '[s]idekiq'

但这并不能保证在 sidekiq 和 redis 中一切正常。

在此 sidekiq 插件https://github.com/arturictus/sidekiq_alive 中描述/开发了更好的方法

我面临着问题livenessProbe为K8S并试图不使用此LIB来解决,但尚未成功。

您有不同的方法,主要取决于您在 Kubernetes pod 中部署 Sidekiq 的方式。

这里有一些。

配角兽

从 Sidekiq v6 开始,我们有了sidekiqmon

您可以尝试使用以下方法:

bundle exec sidekiqmon processes | grep $(hostname)

要使其工作,您必须能够 grep 与当前 pod/容器相关的正确运行进程。

PS AUX (我过去用过)

这样的事情可以工作:

ps aux | grep '[s]idekiq 6'

请注意末尾的 6(sidekiq 版本)以区别于您可能拥有的其他进程。 无论如何,这里的想法是使用ps aux检查您的进程,并尝试“grep”您需要监视的 sidekiq 进程。

SIDEKIQ_ALIVE

另一种方法是使用sidekiq_alive,但它需要更多的精力来配置和管理,我从来没有真正尝试过。 这是唯一一个真正检查完整功能以及 Redis 状态的方法。

系统控制

如果您使用systemd部署了 sidekiq,则可以执行以下操作:

systemctl status sidekiq | grep '[r]unning'"

所以最后,我用于 Sidekiq 部署的 YAML 清单如下所示:

          livenessProbe:
            exec:
              command: ["/bin/bash", "-l", "-c", "bundle exec sidekiqmon processes | grep $(hostname)"]
            initialDelaySeconds: 120
            periodSeconds: 30
            successThreshold: 1
            failureThreshold: 3
            timeoutSeconds: 30

请注意,只有 sidekiq_alive 方法将执行完整的端到端测试,同时检查 redis 状态。 也许这太多了,你可以有其他的 Redis 监控系统,所以也许在这里,使用 kubernetes LivenessProbes,你不需要检查整个流程,而只需检查 sidekiq 进程是否仍然存在或由于内存泄漏而崩溃. 这取决于您,根据您的需要。

“你为什么需要这种 LivenessProbes?”

因为如果您通过 systemd 或类似方式启动 Sidekiq,您将拥有主进程(PID 1)作为/usr/bin/python3 /usr/bin/systemctl start sidekiq和使用 ExecStart 作为sidekiq 6.1.3 your_app_name [0 of 5 busy] 如果你有内存泄漏,最后一个会崩溃,而不是 PID 1。出于这个原因,你需要一种用于 Sidekiq 的 livenessProbes。

相反,如果您没有使用 systemd 并且您的 PID 1 是sidekiq 6.1.3 your_app_name [0 of 5 busy]因为您使用bundle exec sidekiq启动它,您不需要它。

Sidekiq 6.0 附带了一个新的sidekiqmon ,您可以使用它来验证进程是否在使用 redis 的当前机器上运行:

REDIS_URL=redis://redis.example.com:6380/5 sidekiqmon | grep $$(hostname)

文档: https : //github.com/mperham/sidekiq/wiki/Monitoring#sidekiqmon

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM