为Web应用程序创建外部监视

时间:2010-01-13 21:06:53

标签: web-services web-applications monitoring amazon-ec2

我工作的公司建立并托管了我们客户使用的网络应用程序,我有兴趣创建某种外部监控页面(类似于trust.salesforce.com),用户可以去查看当前状态我们的服务器/ app。我知道有很多不同的“监控”服务,但我想自己创建服务,以便完全控制和定制。显然,该服务必须托管在与应用程序本身不同的位置和数据中心。我关注的一件事是,如果我只是在不同的位置选择不同的主机,如果该主机由于任何原因而停机(电源故障,服务器故障,甚至ISP故障),则监控软件会关闭。出于这个原因,我正在考虑在亚马逊EC2实例上托管监控应用程序。凭借其弹性IP功能,如果由于某种原因数据中心或实例运行的点失败,我可以创建一个具有相同数据的重复实例(但在不同的位置),一切都会正常工作。

这听起来像是一个可行的计划吗?为了更加安全,我考虑在不同位置创建2个实例并从两个实例进行监控。如果一个实例失败,另一个实例仍然会启动。显然,一个实例必须充当监控页面的实际Web主机。如果一个实例检测到另一个实例因任何原因失败了,是否有可能以编程方式将弹性IP切换到自身?

我知道这个问题涉及很多不同的事情,我只是在寻找有关它的任何反馈......

如果你已经做到这一点,感谢花时间阅读这篇文章!

2 个答案:

答案 0 :(得分:1)

您所谈论的是复杂问题的复杂解决方案。我认为你使用亚马逊的EC2之类的东西正在走上正轨,以减少监控应用程序崩溃的可能性。此外,您可以自己开发,但有很多免费的监控解决方案,如Nagios,它将完成您所要求的一切,并且具有高度可扩展性,因此您可以花时间让它看起来像您想要的一样,同时离开更复杂的部分是经过试验和测试的软件。最糟糕的事情是你的软件中有一个错误,它会在实际停机时显示出一些错误。根据你所谈论的事情,我认为这将是一个巨大的问题。

答案 1 :(得分:1)

不要使用弹性IP(仅分配给一个实例),而应考虑使用Elastic Load Balancer http://aws.amazon.com/elasticloadbalancing/,然后可以在任何可用区域中的实例上进行路由。这样,AWS管理实例进出池,如果它们由于某种原因变得不可用,并且您不必花时间“移动”弹性IP。然后很容易将监视cname分配给ELB主机名。

我认为RandomBen在您的实例上使用Nagios的想法很好,因为您不必重新创建Nagios中的所有功能。然后,您可以花费开发时间来设置系统并根据需要自定义外观。

此外,如果您可以使用MySQL,则应考虑使用RDS http://aws.amazon.com/rds/,但如果您在其他地区访问RDS的区域之外有服务器,则需要支付转移费用。