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