如何使用daemontools监督网络服务器?

pau*_*uel 5 webserver daemon smalltalk start-stop-daemon

我应该如何编写daemontools监督员的脚本?

我已经开始使用DJ Bernsteins的daemontools来保持一些进程运行并且运行正常.但是现在我需要监控这些流程的其他几个条件,但我没有找到关于如何做到这一点的好信息.

我的方案是我有一些运行Web应用程序(pharo smalltalk虚拟机)的进程,并且它们响应http,每个进程都在它们的端口(这是for loadbalance).我想以某种方式ping那些来验证它们不仅运行但响应http请求.如果他们没有以某种方式响应超过30秒的请求,他们应该被视为崩溃并且只需重新启动.

daemontools甚至可以实现这一点吗?如果是这样,我应该如何编写这个脚本?我应该把它放在哪里?或者关于这个的文件在哪里?

Luk*_*gli 6

最简单的解决方案是使用脚本创建另一个daemontool任务,该脚本休眠30秒,然后测试服务的存在(例如,使用wget或curl).如果服务未及时响应,您可以重新启动服务(svc -t yourapp)和/或发送通知.新服务的运行脚本看起来很简单:

#!/bin/sh
sleep 30
if ! wget --quiet --timeout=5 --delete-after "http://yourapp.com/" ; then
  svc -t /etc/service/yourapp
fi
Run Code Online (Sandbox Code Playgroud)

我也使用过像Munin这样的工具.您需要再次提供一个脚本,提供有关图像状态的信息.如果使用REST服务设置图像,您甚至可以提供非常有趣的指标,例如活动会话,非活动会话,gc参数,内存消耗,数据库统计信息......然后,该工具会随着时间的推移绘制出漂亮的图形,并允许您指定边界到当事情表现不好时得到通知.