2009-08-19 62 views
1

我正在构建一个ruby应用程序,用于抓取发送到服务器的电子邮件并将它们记录到数据库中。现在我没有办法完全测试(电子邮件 - > Ruby - >数据库)堆栈的停机时间。我正在使用服务来测试运行ruby的服务器的停机时间,并且我正在使用monit来确保ruby守护进程不会停机太久。除了定期手动检查,还有什么服务,我可以用它来验证:在Ubuntu上监视Postfix服务器和Ruby响应

1)是我后缀仍达和接收/仍发送邮件

2)消息使得它从我的守护程序到数据库

如果不是,是否有任何有关监测和发送这两种情况的警报的最佳实践,或者任何可以可靠工作的家庭酿造方法?

回答

1

您可以通过cron作业发送“canary”消息,然后进行另一个cron作业测试以查看是否将预期的canary消息写入数据库。 (可选删除它等)

+0

我正在考虑这个,但不知道这个方法有多么骇人......我越想越想越喜欢它。任何额外的想法,赞赏 – Schneems 2009-08-19 22:33:09

+1

如果你想...你可以发送来自远程系统的金丝雀...有足够的时间戳,你可以追踪通过系统的延迟...如果你有消息的统计资料,你可能希望编程它无视金丝雀。然后你需要一个系统来寻找金丝雀,如果他们没有出现,就会发邮件给你。 – DGM 2009-08-19 23:37:39

0

如果您正在寻找一个商业工具,www.logicmonitor.com可以做到这一点。 它有Postfix的监控(监控状态,以及图形消息排队,交付,退回,拒绝等)。 还有数据库监控(Mysql,oracle,postgres,sql server) - 所以它会警告数据库和趋势,并在需要调优时提供一些建议。 它也可以很容易地跟踪最后一次插入电子邮件到数据库的时间 - 并且如果时间超出预期,就会发出警报。 加上监视日志文件以跟踪应用程序响应时间。

取决于这个系统的关键性,以及时间/金钱的折衷。

0

我对Monit没有经验,但建立这些测试可能是可行的。如果不是,我建议你看看Nagios - 用于编写自己的测试的API非常简单。

测试是:

  • 的SMTP服务器响应的网络上。
  • 后缀进程正在运行。
  • 后缀队列为空。

测试往返可与DGMS“金丝雀”的建议来完成 - 如果你可以设置一个常规一样,它可能拥有最佳的精度,为您提供了一个错误的最快反应。

如果流量比较频繁,另一种方法是监视postfix和可能的数据库服务器的日志 - 检查最后一条成功的消息是否不早于30分钟(对于适当的值“30 “...和”分钟“...)。这种方法反应较慢,但会覆盖更多可能的错误情况。