使用C#.NET 3.5的分布式监视服务

比方说,您有5个不同的公司使用相同的平台(基于Windows)都编写了自己的Web服务,使用C#和.Net 3.5的技术会建议用于监控所有不同的Web服务吗?

我的目的是构建一个应用程序,为站点管理员提供服务状态的可视反馈,当然还有电子邮件/短信警报。 您认为是否有最佳实践或方法?

此外,有没有任何基于Windows的工具可以执行此操作,我不知道关闭? 首选开源?

*编辑:想想最终结果,一个应用程序只显示在不同公司之间运行的服务旁边的红灯或绿灯。

 公司1
      >网络服务1  - 绿色
      >网络服务2  - 绿色
公司2
      > Web服务1  - 红色
      >网络服务2  - 绿色 

您应该尝试在CodePlex上使用基于.NET的开源监控工具PolyMon: http ://polymon.codeplex.com/

至少在我们的情况下,它达到了function的甜点和精简简单的设置。

您可以选择一些开箱即用的任务,如Ping或URL监控,但您也可以轻松实现自己更复杂的任务。 对我们来说效果很好。

工具本身不是分布式的,但您可以轻松设置两个服务实例(例如,在不同位置的服务器上)并监视相同的服务,或使用一个实例来监视另一个实例。

当运行PolyMon和PolyMon使用的SQL Server实例的服务器在重新启动(无限循环重启)时反复崩溃时,我们遇到了一个非常烦人且有点怪异的问题。 似乎是某种竞争条件。 因此,我强烈建议在不同(虚拟)计算机上托管PolyMon服务和SQL Server服务,或者将PolyMon服务的启动类型设置为“手动”而不是“自动”,并在启动其他所有内容后手动启动PolyMon ,以避免这个问题。

Big Brother系统和网络监视器可能会完成你想要的大部分工作。 它是可扩展的,插件可以用任何语言编写。 他们可以免费编辑他们的监控软件:

http://www.bb4.org/home1.html

您还应该在每个受监视的服务器上使用本地监视器。 这是因为很难远程诊断问题。 本博客对本地监视器设计模式的问题和细节进行了很好的讨论:

http://sleeksoft.co.uk/public/techblog/articles/20041218_1.html

最常用的开源监控工具是Nagios。 内置它支持许多不同的服务,您始终可以编写脚本或应用程序来测试任何尚未支持的服务。

  • Nagios主页

  • Windows监控服务

  • 设置Windows服务的说明

如果他们编写aspx Web服务,那么为ASP.NET应用程序描述的所有监视最佳实践(如ASP.NET运行状况监视概述 MSDN文章和ASP.NET运行状况监视)都适用

另请参阅SO问题用于实时监控ASP.NET Web应用程序的工具和方法?

标准工具允许您ping IP或探测HTTP端口 – 这些是validationWeb服务最低限度的廉价而简单的方法。 为了validation它们是否也完全正常运行,您需要做更多…您的监视包将需要有效的凭据才能登录到各种Web服务,更不用说针对每个Web服务执行的特定代理和业务逻辑。

你看过MOM(尤其是MOM管理包)吗?

有像IPSentry这样的工具,您可以使用它来发出HTTP请求并检查返回的数据……

我知道这是一个非常古老的线程,但我认为我会将Wolfpack添加到列表中,供所有仍在寻找“分布式系统监视器”的人使用 – Wolfpack就是这样设计的(由我)。 它可以运行多个“代理”来收集有关他们监视的服务器的数据并将其报告给中央服务器实例。

它有一套丰富的监控和存储插件,您可以轻松地自己进行自定义检查(有许多支持的nuget包可用 – 只需在nuget.org上搜索Wolfpack ),还有一个活跃的contrib项目 ……它很容易通过chocolatey.org(cinst wolfpack)安装!

它是开源的,完全免费! 我现在也在为下一个v3.0版本重写它的主要部分,它将支持SignalR警报通知,powershell和完整的web api /接口(通过ServiceStack)。