上帝 - 进程退出的自定义代码

时间:2014-12-03 05:10:52

标签: ruby monitoring god

上帝重启进程时是否可以执行自定义代码。请参阅下面的示例我的意思。当监视从:转换为:start(重新启动进程)时,我们希望将日志发送到syslog:error level。 applog是上帝模块中定义的方法。

w.transition(:up, :start) do |on|
  applog(w, :error, "critical server process exited")
  on.condition(:process_exits) do |c|
    c.notify = 'alerts'
  end
end

目前,我在加载监视配置时在syslog中看到消息。如何在某个转换中记录syslog中的错误?

1 个答案:

答案 0 :(得分:0)

我尝试通过定义一个联系人并通过God.contact()加载一个新的联系人。遇到缺少姓名等的错误。不知道如何注册。更好的方法是分叉宝石并添加一个新的联系人,但这意味着在我们的基础设施中改变很多。下面的方法是我现在最终使用的....涉及猴子修补。

module God
  class Task
    alias gods_notify notify
    def notify(condition, message)
      applog(nil, :error, "@cee: {\"alert\": \"true\", \"category\": \"alert.#{condition.to_s}\", \"content\": \"#{message}\"}")
      gods_notify(condition, message)
    end
  end
end