最佳实践:监控流程

时间:2014-03-25 21:11:58

标签: python python-2.7

我想知道持续监控和重启流程的最佳实践解决方案是什么,因为有多种方法可以实现。

其他信息: 我有一个使用多个进程工作的unix程序。这是一个主要过程,它始终首先启动,不会在不停止程序的情况下死亡或终止。

然后我产生了多个"模块"流程,负责一些工作并通过主要流程进行沟通。这些模块有时会因为异常而死亡,并且因为它是一个外部程序,我无法解决问题,所以如果它们死了就必须重新启动它们。

我做了一个程序来检查是否有任何模块死了并重新启动它们,但是我需要手动运行它。我的程序检查模块的pid文件是否存在,以及它们是否监听特定的tcp端口。如果pid文件不存在或者套接字无法建立连接,则会重新启动模块。

到目前为止我的想法:

  • Cron作业每分钟运行一次检查并重新启动任何死模块。 (有点矫枉过正,因为他们经常不会死)
  • 守护程序在后台运行,启动模块并在模块死亡时收到通知,因此不必经常检查它们。 (SIGCHLD signal,os.wait)

如果我使用守护进程方法,我应该如何通过我的界面与守护进程通信? (套接字,或者如果守护程序收到特定信号则会读取的文件)

通常我会选择守护进程,因为它似乎是尽快重启模块的最佳实践方法(cron每分钟运行一次),但我想从更有经验的用户那里得到一些意见。 (我以前从未做过这样的事情,并且要求不伤害任何人:D)

如果这些问题在其他地方得到解答,我道歉,但我找不到任何相关问题。

P.S。如果我忘记了某些内容或者您需要更多信息,请随时提出。 :)

1 个答案:

答案 0 :(得分:1)

我会调查将监控过程作为专用监控框架的一部分进行调查。 Monit就是一个例子,但当然也有其他例子。

这样做的好处是可以提供可能有用的其他功能,例如电子邮件警报和分析。根据我的经验,您应该能够在不进行太多修改的情况下使用现有程序,Monit本身使用的系统资源很少,如果这是一个问题。