如何制作 Monit 运行 Sidekiq?

How can I make Monit run Sidekiq?

我问这个问题,尽管我在技术上知道该怎么做。毕竟我已经在其他 3 台服务器上设置了这个环境。然而,它对这个全新安装的 RHEL6 非常非常顽固。

这是我的 /etc/monit.d/sidekiq_uploader.monitrc 文件中的一个条目:

# sidekiq worker 0
check process sidekiq_uploader_0
  with pidfile /var/run/sidekiq/uploader/sidekiq_0.pid
  start program = "/home/deploy/scripts/sidekiq uploader start production 0" with timeout 180 seconds
  stop program = "/home/deploy/scripts/sidekiq uploader stop production 0" with timeout 180 seconds
  group uploader_sidekiq

很简单,对吧?不起作用。创建 pid 文件,在 Rails 项目 log 目录中创建日志文件,然后什么都没有。

也许最令人沮丧的是,我可以将上面的启动和停止命令剪切并粘贴到命令行,并且它们运行 完美.

/var/monit/log中,一遍又一遍:

[EDT May 18 12:37:29] info     : Awakened by User defined signal 1
[EDT May 18 12:37:29] info     : 'sidekiq_uploader_0' start: /home/deploy/scripts/sidekiq
[EDT May 18 12:37:29] info     : 'sidekiq_uploader_0' start action done
[EDT May 18 12:37:59] error    : 'sidekiq_uploader_0' process is not running
[EDT May 18 12:37:59] info     : 'sidekiq_uploader_0' trying to restart

这是 Rails 日志中的唯一条目:

# Logfile created on 2016-05-18 12:37:21 -0400 by logger.rb/47272

至少没有帮助。当我在命令行运行启动命令时:

在 Rails /log 目录中创建日志,并创建 Rails production.log 文件。然后 sidekiq 日志文件包含:

# Logfile created on 2016-05-18 12:37:21 -0400 by logger.rb/47272
2016-05-18T17:45:13.303Z 24843 TID-oxfx4u7ko INFO: Booting Sidekiq 4.0.2 with redis options {:url=>"redis://redis:6379", :namespace=>"uploader"}
2016-05-18T17:45:14.061Z 24843 TID-oxfx4u7ko INFO: Running in ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
2016-05-18T17:45:14.061Z 24843 TID-oxfx4u7ko INFO: Sidekiq Pro 3.0.1 / Sidekiq Enterprise 1.1.0, commercially licensed.
2016-05-18T17:45:14.064Z 24843 TID-oxfx4u7ko INFO: Starting processing, hit Ctrl-C to stop
2016-05-18T17:45:14.126Z 24843 TID-oxfxm4ix8 INFO: Gained leadership of the cluster

出于某种未知原因,我不得不将 Monit 配置文件中的命令更改为:

start program = "/bin/bash -c '/home/deploy/scripts/sidekiq uploader start production 0 &>/home/deploy/sidekiq_0.out'" with timeout 180 seconds
stop program = "/bin/bash -c '/home/deploy/scripts/sidekiq uploader stop production 0'" with timeout 180 seconds

我不知道为什么,但现在可以了。