应用程序监控的最佳实践

时间:2014-10-20 16:19:44

标签: c# design-patterns

我正在尝试为我们的运营部门创建一个监控应用程序,以便在处理遇到问题的系统时采取主动。我创建了一个应用程序,但它有一些缺点:

  1. 运行的应用程序的每个副本都为系统提供单独的ping操作,当1 ping就足够了。
  2. 我有3种不同的api用于获取我们系统的状态,具体取决于其托管的IIS,WCF还是桌面。
  3. 要修复第一个问题,我将创建一个临时服务(app)(监视器)将进行ping操作的数据库,然后应用程序将查询数据库以获取更新。考虑到这一点后,我意识到了第二个问题,并认为这是一个未来的问题。

    所以我的想法是,而不是让临时应用程序ping系统,只需让每个系统都有一个接口,每隔x次就将它的状态发布到数据库。但后来我遇到了我们拥有的WCF和IIS服务的问题。这些服务可能会持续数天而无需任何人实际使用该服务。我如何让这些服务继续发布其数据?

    我的问题是:

    在这种情况下获取数据或推送数据会更好吗?

    如果请求,跨多个平台(IIS,WCF,桌面)维护单个API的建议做法是什么?

    如果推送,您将如何处理基于实例而不是持续运行的Web服务的情况?

1 个答案:

答案 0 :(得分:0)

对于Web服务,一种解决方案可能是实现健康检查终点,您可以简单地调用它:webservice / isServiceUp?

我更喜欢这个信息是PULLED。如果服务/ Web服务/应用程序出现故障,那么您就不可能依赖它来向DB写一些内容......它可能会高度风险且不可靠。

在现实世界的情况下,它比这更复杂一点,因为服务主机和消费者之间可能会发生某些事情(例如DNS问题),在这种情况下,你会想要考虑没有得到任何东西的情况从isServiceUp返回(没有true没有false,只有400 lvl错误)...

考虑使用负载均衡器检查APPS / Web服务,并在出现问题时主动切换到不同的IP ......这是可能的。