1

我正在构建一个 ruby​​ 应用程序,它可以抓取发送到服务器的电子邮件并将它们记录到数据库中。现在我没有一种方法来完全测试(电子邮件-> Ruby-> 数据库)堆栈的停机时间。我正在使用服务来测试运行 ruby​​ 的服务器是否停机,并且我正在使用 monit 来确保 ruby​​ 守护程序不会停机太久。除了定期手动检查外,是否有任何服务可以用来验证:

1)我的后缀是否还在接收/发送邮件

2) 消息是否仍在从我的守护进程发送到数据库

如果没有,是否有针对这两种情况的任何一种监控和发送警报的最佳实践,或者任何可以可靠工作的自制方法?

4

3 回答 3

1

您可以让一个 cron 作业通过发送一条“金丝雀”消息,然后让另一个 cron 作业测试以查看预期的金丝雀消息是否已写入数据库。(可选地删除它等)

于 2009-08-19T16:11:40.933 回答
0

如果您正在寻找商业工具,www.logicmonitor.com 可以做到。它具有 Postfix 监控(监控状态,并绘制排队、传递、退回、拒绝等消息)。还有数据库监控(Mysql、oracle、postgres、sql server)——所以它会对数据库发出警报和趋势,并在需要时提供一些调整建议。它还可以轻松跟踪诸如上次将电子邮件插入数据库的时间之类的信息 - 如果时间超过预期,则发出警报。加上监控日志文件以跟踪应用程序响应时间。

取决于这个系统的重要性,以及时间/金钱的权衡。

于 2009-08-20T00:36:31.357 回答
0

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

测试:

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

可以使用 DGM 的“金丝雀”建议来测试往返行程 - 如果您可以设置这样的例程,它可能具有最好的精度,并且可以让您对错误做出最快的反应。

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

于 2009-09-18T21:06:27.503 回答