监控托管在 http url 上的 Web 服务

监控托管在 http url 上的 Web 服务

我正在考虑一种监控托管在 http url 上的 Web 服务的策略。我希望能够知道它是处于启动状态还是关闭状态。我知道轮询,但想知道是否还有其他不太明显的策略。

答案1

我最近对此进行了一番思考,并得出结论,某种形式的轮询是确定系统是否运行的唯一可靠方法。在思考这个问题时,我发现考虑如何跟踪住在远处的独居老人的健康状况很有用。

我能想到三种选择:

  1. 让您的亲属在需要帮助时给您打电话。例如,当他们摔倒并且无法起身时。
  2. 要求您的亲戚每天在特定时间给您打电话,比如说晚上 7 点。如果您在晚上 7:30 之前没有收到他们的消息,您可以尝试给他们打电话,或让附近的人过来查看他们的情况,以加剧事态。
  3. 定期给他们打电话,比如每天一次,检查他们是否安好。

选项 2 和 3 都是轮询的变体。唯一的区别在于谁发起请求;但两种选项都可以。选项 1 是事件驱动通知。这是最有效的通知类型,因为亲属将立即得到帮助。但是,如果他们摔倒严重并昏倒,他们将无法发出警报,可能要过几天才会有人注意到。

基于此,我相信最好的选择是尽可能使用事件驱动的通知,但使用某种形式的轮询作为可靠的后备。无论使用哪种轮询方法,轮询机制本身出现故障时必须显而易见。如果您用于轮询 Web 服务的系统出现故障而您却没有意识到,那就不好了。

在我负责的系统中,该系统包含许多网页和 Web 服务,我们混合使用事件驱动通知和轮询。每当系统中发生错误或其他值得注意的事件时,都会向我的收件箱发送电子邮件。但我们并不依赖此来通知我们所有问题。如果我们这样做,并且错误报告流程出现问题或网络连接出现问题,我们永远不会听到它。为了解决这些类型的问题,我们使用轮询。

我们决定编写自己的监控解决方案,每隔几秒钟轮询一次所有关键服务。如果在预期的超时期限内未收到任何响应,或者响应到达但不符合预期,系统将向我们的一名员工发出警报。系统将向关键员工发送电子邮件,并通过其“信息辐射器“/”大而明显的图表“类型的显示。

这是我们办公室中的信息辐射器之一,它可以随时显示我们关键服务的可用性和性能:

在此处输入图片描述

显示器位于我们办公室的显眼位置,以确保我们知道它是否没有被监控。

上个月我们发布了这个系统,叫做服务周一,根据 GPL 许可开放源代码。

ServiceMon 使用一个非常简单的脚本进行配置。以下是如何监控网页的示例:

http-get "http://www.google.com" must-contain "<title>Google</title>"

您还可以使用此方法来监控无状态、基于 REST 的服务。这里有一个示例这里

如果您需要监控基于 SOAP 的 Web 服务,则需要创建一个简单的插件。本文我为 CodeProject 撰写的文章结尾处有一个部分解释所涉及的内容。

理想情况下,您的系统将从头开始设计,并希望通过安全控制的方法公开状态和诊断信息(可能需要限制内部使用)。

我希望这对您的情况有所帮助,并且我非常想知道您最终使用了哪种选择。

有关 ServiceMon 的更多信息,请访问项目主页

相关内容