监控一次性服务

监控一次性服务

我们没有任何适当的服务器监控解决方案(我希望今年夏天能解决这个问题),但我有一项特别的服务需要监控。[我们当前的监控系统,等待客户打电话报告问题,对于广泛使用的系统来说效果很好,但这不会像 DHCP 那样影响那么多人。]

我在 OS X 10.3(Panther)机器上运行 All The Right Type 3 Server(唉)[因为它不会在较新的版本上自动启动,而我们的软件采购人员真的不想获得更新的软件。]客户端软件在学生的机器上,在 OS X 10.5(Leopard)下运行良好。

现在,我偶尔会接到电话说该服务器已关闭 [但机器本身仍在运行!],我真希望在有人拿起电话之前知道。该进程似乎称为“atrtserv.osx”。虽然它确实使用网络,但如果它的文档提到如何发送消息以查看服务是否已启动,我会感到惊讶,因此需要进行一些粗粒度的操作,例如每五分钟检查一次进程是否存在。

有没有简单的方法来监控一项服务,特别是在 Mac 上?

答案1

我不能保证这段代码能正常工作(尤其是以“RUNNING=”开头的行,但可以用自己的一些测试代替,如果正在运行则返回一个字符串,否则不返回字符串。

#!/bin/bash  

while true ; do 
RUNNING=`ps aux | grep atrtserv | grep -v grep`
if [ -n "$RUNNING" ] ; then
    echo "atrtserv.osx is broken" | mail -s "atrtserv down" [email protected]
    sleep 300
else 
    sleep 300
    fi
done

编辑 使用上面的 pgrep 代替我的 hack

答案2

嗯,真正简单的方法可能看起来像:

pgrep atrtserv.osx >/dev/null || (
    date |
    mail -s 'atrtserv.osx down on yourmachine.foo' [email protected]
)

在按照您选择的时间间隔运行的 cron 作业中。

答案3

您可以编写一个运行 ps 的小脚本,并让 cron 每 5 分钟运行一次。

如果 mail 发现错误,它就会向您发送邮件。

我认为总实施时间大约为 15 分钟。

答案4

尝试使用 darwinports 的 monit。

相关内容