使用monit监控多个delayed_jobs进程

问题描述 投票:0回答:1

我查看了有关使用

monit
实用程序来监视
delayed_jobs
进程的其他问题,但没有一个真正为“现实世界”情况提供令人满意的答案。

问题是

monit
正在寻找单个 pidfile 来监视进程,如果您执行单个
delayed_job
进程,那么一切都可以正常通过
delayed_jobs
启动/停止
monit
:

# .monitrc config file
check delayed_jobs with pidfile path/to/app/tmp/pids/delayed_jobs.pid
  program start = "RAILS_ENV=production script/delayed_job start"
  program stop = "RAILS_ENV=production script/delayed_job stop"

但是,在任何实际应用程序中,您都会有多个在不同队列上工作的

delayed_jobs
进程。

# .monitrc config file
check delayed_jobs with pidfile path/to/app/tmp/pids/delayed_jobs.pid
  program start = "RAILS_ENV=production script/delayed_job --pool=mailers:1 --pool=default:2 --pool=priority:1 start"
  program stop = "RAILS_ENV=production script/delayed_job stop"

这实际上会启动 4 个独立的

delayed_jobs
进程,每个进程将在
pool
选项中列出的相应队列上工作。

这不会生成单个

path/to/app/tmp/pids/delayed_jobs.pid
文件,而是生成多个 pid 文件,每个单独的进程一个,我不知道如何让
monit
来处理它。

对于“停止”操作,我可以执行

pkill -f delayed_jobs
,这样就可以了。因此,我可以让“启动”操作生成多个进程,而“停止”操作可以杀死所有进程,但问题是
monit
将此进程标记为
does not exist
,因为它没有一个
pidfile 
监控。

强力方法是为每个

monit
队列设置一个单独的
delayed_jobs
进程,如果我对单个队列有多个进程,则在它们前面加上进程索引,这样我就会有 pidfiles,例如:

delayed_jobs.priority.pid
delayed_jobs.mailers.pid
delayed_jobs.default_1.pid
delayed_jobs.default_2.pid

这“有效”,但维护起来似乎非常冗长且痛苦。

是否有更干净的方法让

monit
监控进程集合,在本例中具体为
delayed_jobs

delayed-job monit process-monitoring
1个回答
0
投票

简短的回答是,Monit 不支持此功能,抱歉。

是否有一种更清晰的方法让 monit 监视进程集合,在本例中特别是delayed_jobs?

“暴力”方法是启动/停止/处理作业列表中单个作业的唯一方法。

© www.soinside.com 2019 - 2024. All rights reserved.