【问题标题】:How can I create a monit process for a Ruby program?如何为 Ruby 程序创建监控进程?
【发布时间】:2013-10-31 19:26:38
【问题描述】:

我有这些rake 任务偶尔会失败。我想使用monit 来监控它们并在必要时重新启动它们。

我已阅读 StackOverflow 上的其他 ruby​​/monit 线程。我的情况不同,因为这些程序需要我的 Rails 环境才能工作。这就是我现在将它们作为rake 任务的原因。

这是我需要监控的一项完整任务:

task(process_updates: :environment) do
  `echo "#{Process.pid}" > #{Rails.root}/log/process_alerts.pid`
  `echo "#{Process.ppid}" > #{Rails.root}/log/process_alerts.ppid`
  SynchronizationService::process_alerts
end

我的问题是,我是否将其保留为 rake 任务,因为 SynchronizationService::process_alerts 需要 Rails 环境才能工作?还是我应该调用其他一些包装器然后运行一些 *.rb 文件?

【问题讨论】:

    标签: ruby ruby-on-rails-3 rake monitoring monit


    【解决方案1】:

    Monit 可以检查正在运行的 pid,因为您在运行任务时创建了 pid,您可以创建一个如下所示的 monit 配置:

    check process alerts with pidfile RAILSROOT/log/process_alerts.pid
      start program = "cd PATH_TO_APP; rake YOURTASK" with timeout 120 seconds
      alert your@mail.com on { nonexist, timeout }
    

    当然RAILSROOTPATH_TO_APPYOURTASK应该对应于你的paths/rake任务。

    Monit 然后将使用 pidfile 值检查系统中正在运行的进程,如果找不到正在运行的进程,将使用 start program 命令启动该进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多