2

我必须开发一个系统来监控网络中运行的应用程序。它应该收集有关应用程序状态的信息,并在出现问题时发送警报。我选择在.NET 上开发这个应用程序。如果有任何用于此目的的 API 或任何可以帮助我开始的想法,请告诉我。如果您建议任何其他框架来开发此类项目,我可以知道原因!

谢谢

4

6 回答 6

5

WMI(System.Management 命名空间)或连接到 Windows 性能监视器将为您提供良好的运行开始。您还可以设置自己的“客户端-服务器”监控基础架构,其中程序在每台目标机器上作为 Windows 服务运行。然后,所述程序将能够运行您想要的任何监视代码,例如检查具有特定名称的进程是否正在运行。该程序将向中央服务器发送包含给定机器的“状态”报告的报告(通过远程处理、套接字、Web 服务或任何您喜欢的东西)。然后中央服务器可以聚合状态并发送警报或触发警报或任何适合您业务需求的东西。

于 2009-01-14T14:37:26.990 回答
1

这取决于您是否指任意应用程序,没有任何编码更改或应用程序本身的支持?或者您的意思是一套经过自定义编码以与您正在构建的监控系统合作的应用程序。

在后一种情况下,我将向应用程序添加一个远程处理通道,监控系统可以定期连接到该通道(功能类似于 ping)并使用通用 GetStatus() 方法向监控系统报告适当的健康统计信息...我会将此功能作为单独的依赖程序集添加到我要监视的每个应用程序中...

在第一种情况下,我相信您将需要连接到操作系统 API,尤其是与网络上其他机器上运行的操作系统进行通信(如果这也是一个要求)正如您提到的 .Net 我假设您只是在谈论 WIn32 机器。我不知道 WIn32 API 在这方面提供了什么功能。

于 2009-01-14T14:28:34.387 回答
0

您需要定义监控。您计划如何监控应用程序以及您计划记录什么样的信息?

于 2009-01-14T14:22:07.897 回答
0

您对应用程序“问题”的定义是什么?您是否对要监控的应用程序进行代码控制?一般来说,有“问题”的应用程序不会宣布它,因为它通常是由于错误造成的。如果该应用程序尚未设计为专门为您发送信息以查找问题,那么您将如何检测到这一点非常困难。

我过去做过的唯一类似的事情是连接到调度程序本身(在 Windows CE 中),以监控量子线程的数量正在寻找消耗过多处理器的东西,但要预先警告这样做那种东西有很大的潜在错误,它使用了很多处理器本身(我不知道你是否可以在桌面上做到这一点)。

于 2009-01-14T14:29:06.650 回答
0

好吧,监控应用程序并不是那么简单,因为您必须查看其他电脑以及其中发生的情况。

监控网络的常用方法是使用 SNM-Protocol 套件,或者更多地进入 Windows 世界 WMI-Path。

WMI 包含在 .NET 中,但没有漏洞,因此您需要知道如何处理 WMI 并为此构建自己的包装器。

我敢打赌,SNMP 并没有真正的帮助,因为并非所有应用程序都支持这一点。

于 2009-01-14T14:29:29.003 回答
0

更清楚地说,在我的网络中,我有不同的机器和服务器,它们运行着一些应用程序,如数据库、Web 应用程序和许多其他应用程序。

该网络的管理员需要一个监控应用程序,如果有任何应用程序出现故障,它会向他发出警报。但我没有说明可能出现的问题类型!!

我可以对 WMI 有更多的解释吗?

谢谢你。

于 2009-01-14T16:45:17.590 回答