继续监控网络服务器并下载新添加的文件

继续监控网络服务器并下载新添加的文件

持续监控网络服务器(HTTP)并使用 min 下载新添加的文件的最佳方法是什么?延迟(最好延迟 < 1 分钟)?

答案1

监控

首先,为了监控我建议您使用纳吉奥斯,核心源码是免费的,但是如果你需要GUI,你应该付费,但是花那么多钱是值得的。

您还可以使用伊辛加,PRTG,或者任何更适合你的。

Collectd(Collection Daemon)也是一个免费的监控工具,您可以yum在 RHEL 衍生产品或apt-get基于 Debian 的衍生产品上下载使用。你可以阅读这张纸如果你想使用 Collectd。

任务每 x < 1 分钟运行一次

对于问题的第二部分,每次 x 一次执行一项工作,其中 x 定期少于一分钟,正如您所知,您不能使用 Cronjobs,因为您可以使用以下解释的一些技巧吉尔斯 在这个问题中做你想做的事。

最好有一个满足您需要的脚本,并永远运行它,甚至在启动时运行它(如果需要)。您可以使用如下所示的简单语法:

while true; do yourJob; sleep someTime; done

或者,您甚至可以根据需要使用一些更复杂的脚本。

也可以使用watch命令。例如:

watch -n1  command

它会运行你的command每一秒,直到永远。

watch正如您可能已经猜到的那样,如果您只需要每隔 x 次运行一个简单的脚本(少于一分钟)而不是复杂的脚本,那么您也可以运行 shell 脚本。

这是你的选择。

答案2

这取决于几个因素。

如果您可以控制 Web 服务器,最简单的方法是安装一个(RESTful?)服务,提供自上次检查或下载以来更改的文件数量。这最大限度地减少了客户端和服务器上的数据传输和负载。如果可以直接跟踪服务器上文件的上传/修改,例如在上传脚本中而不是依赖于文件系统,那就更是如此。

如果是后者,我会研究一些文件监控解决方案,例如famd.

如果您无法控制服务器,则必须先进行修改才能下载它们。最简单的事情是使用一些网络镜像诸如 w3mir 之类的实用程序,因为它们已经负责检查/提供 ETag 和 Last-Modified / If-Modified-Since 标头。这意味着您必须发出更少的调用,因此能够更频繁地运行该实用程序。

至于如何要运行该实用程序,取决于它运行的位置。您可以在 Unix 机器上使用 cron 作业,或者只是循环运行它。

但是,如果您选择前者,我们建议您安装某种信号量,以防止镜像进程在前一个实例终止之前启动。它可以很简单,只需创建一个锁定文件:

if [ -r /tmp/mirror.lock ]; then
    echo "lock file found" | logger -t webmirror
    exit 0
fi
touch /tmp/mirror.lock
...whatever...
rm /tmp/mirror.lock

但是您还必须收到catch任何可能终止脚本的信号,否则在出现临时错误的情况下,锁定文件可能会保留在那里,并阻止所有其他实例运行,即使在错误解决后也是如此。

或者,您可以验证锁定文件是否不早于某个合理的数量,如果是,则将其删除,或者验证找到了多少个脚本实例ps(通常是当前的一个;如果更多,则当前的实例最好abort),并且完全不使用锁定文件。

答案3

您可以curl在 cron 作业中执行一个简单的命令,但我建议您开始使用具有 Web 监视功能的监视解决方案。其中有很多是免费的,只需谷歌“开源网络监控解决方案”,你就会得到很多!

答案4

正如 FarazX 所说,有几种监控解决方案,例如 Nagios,潘多拉FMS,...但是这些工具对于您的目的来说可能太大了。也许Uptime机器人对你来说就足够了。

查看建议并选择最适合您的方案,但请记住,具有更多选项的监控解决方案可为您的环境提供更多可能性。

相关内容